久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3051|回復(fù): 0
收起左側(cè)

stm32之GPIO操作

[復(fù)制鏈接]
ID:82083 發(fā)表于 2015-6-9 00:10 | 顯示全部樓層 |閱讀模式
1. GPIO 端口引腳多 --> 就要選定需要控制的 特定引腳
2.GPIO 功能如此豐富 --> 配置需要的 特定功能
3. 控制 LED 的亮和滅--> 設(shè)置 GPIO 輸出電壓的 高低
GPIO寄存器:
  

說明:7 個(gè)寄存器,相應(yīng)功能在文檔上有詳細(xì)說明。它們可以分為以下 4 類,其
功能簡要概括如下 :
1)配置寄存器 :選定 GPIO 的特定功能,最基本的如選擇作為輸入還是輸出端口。
2)數(shù)據(jù)寄存器 :保存了 GPIO 的輸入電平或?qū)⒁敵龅碾娖健?br /> 3)位控制寄存器 :設(shè)置某引腳的數(shù)據(jù) 為 1 或 0,控制輸出的電平。
4)鎖定寄存器 :設(shè)置某鎖定引腳后,就不能修改其配置。
端口配置高寄存器

CRH 是高寄存器,用來配置高 8 位引腳 :pin8 ~ pin15 ;還有一個(gè)稱為 CRL 寄存器,如果我們要配置 pin0 ~pin7 引腳,則要在寄存器 CRL 中進(jìn)行配置。
端口位設(shè)置/清除寄存器

例如 :對 x 端口的寄存器 GPIOx_BSRR 的第 0 位(BS0) 進(jìn)行寫 1,則 x 端口的第 0
引腳被設(shè)置為 1,輸出高電平,若要令第 0 引腳再輸出低電平 ,則需要向 GPIOx_BSRR 的
第 16 位(BR0)寫 1。
4. 地址映射
先看代碼:來自stm32f10x.h 源碼
1. #define GPIOC_BASE (APB2PERIPH_BASE + 0x1000)
2. #define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)
3. #define PERIPH_BASE ((uint32_t)0x40000000)
外設(shè)基地址:PERIPH_BASE這個(gè)宏,       宏展開為 0x4000 0000
總線基地址:APB2PERIPH_BASE這個(gè)宏 ,宏展開為 0x4001 0000 (PERIPH_BASE 加上偏移地址 0x1 0000)
寄存器組基地址:GPIOC_BASE 這個(gè)宏, 宏展開為 0x4001 1000(APB2PERIPH_BASE  加上偏移地址0x1000)
舉例:1. #define GPIOC_CRH (GPIOC_BASE + 0x04)(并不這樣)
實(shí)際情況:
1. #define GPIOA ((GPIO_TypeDef *) GPIOA_BASE)
2. #define GPIOB ((GPIO_TypeDef *) GPIOB_BASE)
3. #define GPIOC ((GPIO_TypeDef *) GPIOC_BASE)
GPIO_TypeDef
typedef struct
2. {
3. __IO uint32_t CRL;
4. __IO uint32_t CRH;
5. __IO uint32_t IDR;
6. __IO uint32_t ODR;
7. __IO uint32_t BSRR;
8. __IO uint32_t BRR;
9. __IO uint32_t LCKR;
10. } GPIO_TypeDef;
__IO :
1. #define __O volatile
2. #define __IO volatile
結(jié)構(gòu)體內(nèi)定義了7個(gè) __IOuint32_t類型的變量。這些變量每個(gè)都為32位,每個(gè)變量占內(nèi)存空間4個(gè)字節(jié)。這個(gè)結(jié)構(gòu)體的首地址(變量CRL 的地址)若為0x40011000,那么結(jié)構(gòu)體中第二個(gè)變量(CRH)的地址即為0x40011000 +0x04,加上的這個(gè)0x04  ,正是代表 4個(gè)字節(jié)地址的偏移量。所以只要我們匹配了結(jié)構(gòu)體的首地址,就可以確定各寄存器的具體地址了。
(GPIO_TypeDef*) : 在這里的作用則是把 GPIOA_BASE地址轉(zhuǎn)換為GPIO_TypeDef 結(jié)構(gòu)體指針類型。
所以修改GPIO方法:
1. GPIO_TypeDef * GPIOx; //定義一個(gè) GPIO_TypeDef 型結(jié)構(gòu)體指針 GPIOx
2. GPIOx = GPIOA; //把指針地址設(shè)置為宏 GPIOA 地址
3. GPIOx->CRL = 0xffffffff; //通過指針訪問并修改 GPIOA_CRL 寄存器

回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久一区二区三区 | 国产精品国产成人国产三级 | 免费在线观看www | 国产天堂在线观看 | 在线理论片 | 特一级黄色片 | 国产黄色片视频 | 亚洲三区在线 | 精品一区二区三 | 在线观看亚洲一区 | 日本中文字幕在线播放 | 国产精品不卡视频 | 成人av一区二区三区在线观看 | 国产二区视频在线观看 | 99久久婷婷国产综合精品草原 | 在线日韩 | 黄色在线小视频 | 国产精品一区二区三区免费 | 国产精品成人免费视频 | 五月婷婷丁香 | 日韩黄网| 国产日韩精品一区二区 | 日韩精品影院 | 成人午夜网站 | www.国产在线| www.欧美精品 | 久久香蕉网 | 日韩精品中文字幕在线观看 | 在线va | 日韩视频网 | 草逼视频免费看 | 国产第五页 | www.一区| 日韩中文字幕在线观看 | 成人黄色网 | 一级做a视频 | 日韩久久久久久久 | 国产日产精品一区二区三区的介绍 | 国产精品二区一区二区aⅴ污介绍 | av免费在线观看网站 | 91精品久久久久 |