當前位置:首頁 > 單片機 > 單片機
[導讀]用stm32 的配置GPIO 來控制LED 顯示狀態(tài),可用ODR,BSRR,BRR 直接來控制引腳輸出狀態(tài).ODR寄存器可讀可寫:既能控制管腳為高電平,也能控制管腳為低電平。管腳對于位寫1 gpio 管腳為高電平,寫 0 為低電平BSRR 只寫寄存

用stm32 的配置GPIO 來控制LED 顯示狀態(tài),可用ODR,BSRR,BRR 直接來控制引腳輸出狀態(tài).

ODR寄存器可讀可寫:既能控制管腳為高電平,也能控制管腳為低電平。

管腳對于位寫1 gpio 管腳為高電平,寫 0 為低電平

BSRR 只寫寄存器:[color=Red]既能控制管腳為高電平,也能控制管腳為低電平。
對寄存器高 16bit 寫1 對應管腳為低電平,對寄存器低16bit寫1對應管腳為高電平。寫 0 ,無動作

BRR 只寫寄存器:只能改變管腳狀態(tài)為低電平,對寄存器 管腳對于位寫 1 相應管腳會為低電平。寫 0 無動作。

剛開始或許你跟我一樣有以下疑惑:

1.既然ODR 能控制管腳高低電平為什么還需要BSRR和SRR寄存器?
2.既然BSRR能實現BRR的全部功能,為什么還需要SRR寄存器?

對于問題 1 ------ 意法半導體給的答案是---

“This way, there is no risk that an IRQ occurs between the read and the modify access.”
什么意思呢?就就是你用BSRR和BRR去改變管腳狀態(tài)的時候,沒有被中斷打斷的風險。也就不需要關閉中斷。

用ODR操作GPIO的偽代碼如下:

disable_irq()
save_gpio_pin_sate = read_gpio_pin_state();
save_gpio_pin_sate = xxxx;
chang_gpio_pin_state(save_gpio_pin_sate);
enable_irq();

關閉中斷明顯會延遲或丟失一事件的捕獲,所以控制GPIO的狀態(tài)最好還是用SBRR和BRR

對于問題 2 ------- 個人經驗判斷意法半導體僅僅是為了程序員操作方便估計做么做的。

因為BSRR的 低 16bsts 恰好是set操作,而高16bit是 reset 操作 而BRR 低 16bits 是reset 操作。

簡單地說GPIOx_BSRR的高16位稱作清除寄存器,而GPIOx_BSRR的低16位稱作設置寄存器。

另一個寄存器GPIOx_BRR只有低16位有效,與GPIOx_BSRR的高16位具有相同功能。

舉個例子說明如何使用這兩個寄存器和所體現的優(yōu)勢。

例如GPIOE的16個IO都被設置成輸出,而每次操作僅需要

改變低8位的數據而保持高8位不變,假設新的8位數據在變量Newdata中,

這個要求可以通過操作這兩個寄存器實現,STM32的固件庫中有兩個函數

GPIO_SetBits()和GPIO_ResetBits()使用了這兩個寄存器操作端口。

上述要求可以這樣實現:

GPIO_SetBits(GPIOE, Newdata & 0xff);
GPIO_ResetBits(GPIOE, (~Newdata & 0xff));

也可以直接操作這兩個寄存器:

GPIOE->BSRR = Newdata & 0xff;
GPIOE->BRR = ~Newdata & 0xff;

當然還可以一次完成對8位的操作:

GPIOE->BSRR = (Newdata & 0xff) | ( (~Newdata & 0xff)<<16 );

當然還可以一次完成對16位的操作:

GPIOE->BSRR = (Newdata & 0xffff) | ( (~Newdata )<<16 );

從最后這個操作可以看出使用BSRR寄存器,可以實現8個端口位的同時修改操作。

有人問是否BSRR的高16位是多余的,請看下面這個例子:

假如你想在一個操作中對GPIOE的位7置'1',位6置'0',則使用BSRR非常方便:
GPIOE->BSRR = 0x400080;

如果沒有BSRR的高16位,則要分2次操作,結果造成位7和位6的變化不同步!
GPIOE->BSRR = 0x80;
GPIOE->BRR = 0x40;

BSRR還有一個特點,就是Set比Reset的級別高,

就是說同一個bit又做Set又做Reset,最后結果是Set

要同步變化只要簡單的 GPIOx->BSRR = 0xFFFF0000 | PATTEN;

即可,不用考慮哪些需要置1,哪些需要清零

從最后這個操作可以看出使用BSRR寄存器,可以實現8個端口位的同時修改操作。


本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯合牽頭組建的NVI技術創(chuàng)新聯盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現場 NVI技術創(chuàng)新聯...

關鍵字: VI 傳輸協議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉