久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
STM32達人的GPIO使用心得
[打印本頁]
作者:
qinqin
時間:
2015-6-6 15:17
標題:
STM32達人的GPIO使用心得
1. 我使用GPIO的不同就是,GPIO 操作是直接動用了STM32 內部的寄存器的.雖說庫好用,但對于某些IO 操作,很多人都會嫌庫的效率底下(包括我自己在內),總得對STM32 的寄存器看兩眼的吧,不然還不敢叫STM32 達人!
2. 當然了,即使直接操作寄存器了,但一些方便的宏定義還是用庫里面的好,反正宏定義本身并不影響效率.這里要說一下MDK 的一個重要技巧,就是把工程編譯完以后,在變量或函數體上按下F12 鍵,就會自動跳轉到這個變量或函數的定義處.要研究庫代碼,這個技巧必不可少,不然在大堆C文件里找一個定義是相當累人的.
大家看看ST 官方庫里面對各個寄存器的定義,是使用結構體的,可謂相當有技巧,首先要定義幾個基礎地址:
//定義片內外設基礎地址
#define PERIPH_BASE ((uint32_t)0x40000000)
//定義APB2地址,APB2地址在片內外設的0x10000偏移處.
#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)
//這個定義了GPIOA首地址:,在APB2 的0x800偏移處
#define GPIOA_BASE (APB2PERIPH_BASE + 0x0800)
//定義GPIOA的結構體
#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE)
GPIO_TypeDef結構體的原型:
typedef struct
{
__IO uint32_t CRL;
__IO uint32_t CRH;
__IO uint32_t IDR;
__IO uint32_t ODR;
__IO uint32_t BSRR;
__IO uint32_t BRR;
__IO uint32_t LCKR;
} GPIO_TypeDef;
那個__IO 的東西也是庫定義的類型,還有__I 和__O 呢,主要方便表達這個寄存器是讀寫,還是只讀,只寫:
#define __I volatile const /*!< defines 'read only' permissions */
#define __O volatile /*!< defines 'write only' permissions */
#define __IO volatile /*!< defines 'read / write' permissions */
好了,說了這么多,其實每組GPIO 就7 個寄存器:
CRL,CRH,IDR,ODR,BSSR,BRR,LCKR.
庫函數之所以用如此繁瑣的定義,也是為了代碼結構的一致和更系統的使用庫調用,當然你看庫會覺得這樣很麻煩,但相對的是,我們使用起來就很簡單.例如要操作GPIOA 的
CRL寄存器,那么就是:
GPIOA->CRL=0x00;就可以了.
這些GPIO 寄存器STM32F10xxx_CH_Rev7V3 中文用戶手冊.pdf 中的P75 里有詳細介紹.
另外,IO 還有一些重映射和事件寄存器等的,將在以后討論.
3. 例程中IO 的輸入輸出控制都是直接操作的寄存器,例如:
#define LED1_ON GPIOA->BRR = GPIO_Pin_8
#define GET_LEFT() (!(GPIOD->IDR&GPIO_Pin_3))
這個GPIO_Pin_8,其實就是(1<<8), GPIO_Pin_3,就是(1<<3).
這些操作都要比調用庫函數快不少的.對于實際項目中需要快速IO操作的,建議像這樣直接操作寄存器.
另外在GPIO.C 文件里的GPIO_Configuration()函數中,配置按鍵的輸入,也采用了直接操作寄存器的方式,這里只是簡單地介紹一下使用寄存器配置GPIO 的方法,實際使用中,還是建議用庫函數配置,畢竟,配置硬件這類操作一般不會十分頻繁地調用,而是在系統上電的時候調用一次的,所以這些情況下都不會在乎執行效率.而且,直接操作寄存器,出低級錯誤的幾率挺大~
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
婷婷在线视频
|
免费毛片在线
|
欧美日韩成人一区二区三区
|
天堂网亚洲
|
久久久精品在线观看
|
欧美性猛交xxxx免费看久久久
|
欧美国产日韩一区二区
|
日韩午夜精品
|
国产不卡一区
|
午夜精品久久久久久久99
|
www四虎
|
成人激情视频
|
久久精品一区二区三区四区
|
午夜视频一区
|
国产欧美一区二区三区在线看蜜臀
|
伊人久久av
|
天天干天天操天天
|
在线伊人网
|
亚洲久草
|
成人羞羞国产免费动态
|
一级片aa
|
国产99页
|
国产激情在线观看
|
av在线资源网
|
永久免费看mv网站入口亚洲
|
最近日本中文字幕
|
涩涩视频免费看
|
黄色a一级片
|
超碰成人免费
|
日韩成人片
|
免费黄色在线
|
久久久久久久久久久久久久久久久久久
|
天天综合av
|
国产黄色一级毛片
|
成人h视频在线观看
|
久久性色
|
国产不卡视频
|
欧美日韩成人在线
|
亚洲性生活视频
|
久久性生活视频
|
无毒不卡
|