久久精品99久久_亚洲一区二区综合_狠狠色伊人亚洲综合成人_亚洲综合爱爱久久网

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當前位置:首頁 >> 技術中心 >> 單片機入門 >> 高手帶你解析STM32 BSRR BRR ODR 寄存器

高手帶你解析STM32 BSRR BRR ODR 寄存器

關鍵字:STM32 單片機 寄存器 作者:admin 來源:不詳 發布時間:2018-05-18  瀏覽:39

 一、用法

經常會看到類似如下的宏定義語句,用于對已經初始化后的 IO 口輸出高、低電平。

#define SET_BL_HIGH() GPIOA->BSRR=GPIO_Pin_0

#define SET_BL_LOW() GPIOA->BRR=GPIO_Pin_012

其作用類似于如下兩個庫函數,

void GPIO_SetBits(GPIO_Typedef* GPIOx, uint16_t GPIO_Pin)

void GPIO_ResetBits(GPIO_Typedef* GPIOx, uint16_t GPIO_Pin) 12

而且實際上這兩個庫函數就是通過修改BSRR,BRR寄存器的值來實現對 IO 口設置的。如下便是輸出高電平的函數體:

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

{

/* Check the parameters */

assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

assert_param(IS_GPIO_PIN(GPIO_Pin));

GPIOx->BSRR = GPIO_Pin;

}12345678

因此,使用宏或者庫函數本質上都是一樣的。區別在于使用宏更快,而使用函數更靈活。

二、解釋

BSRR 和 BRR 都是 STM32 系列 MCU 中 GPIO 的寄存器。 BSRR 稱為端口位設置/清楚寄存器,BRR稱為端口位清除寄存器。

BSRR 低 16 位用于設置 GPIO 口對應位輸出高電平,高 16 位用于設置 GPIO 口對應位輸出低電平。

BRR 低 16 位用于設置 GPIO 口對應位輸出低電平。高 16 位為保留地址,讀寫無效。

所以理論上來講,BRR 寄存器的功能和 BSRR 寄存器高 16 位的功能是一樣的。也就是說,輸出低電平的宏語句,可以有如下兩種寫法。

#define SET_BL_LOW() GPIOA->BRR=GPIO_Pin_0

等價于

#define SET_BL_LOW() GPIOA->BSRR=GPIO_Pin_0 << 16 123

這么來看的話,其實 BRR 寄存器是比較多余的。而實際上,在最新的 STM32F4 系列 MCU 的 GPIO 寄存器中,已經找不到 BRR 寄存器了,僅保留了 BSRR 寄存器用于實現端口輸出高低電平。因此,在 STM32F4 系列 MCU 的庫函數中,對 GPIO 口輸出高低電平的函數為如下形式:

void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)

{

/* Check the parameters */

assert_param(IS_GPIO_PIN(GPIO_Pin));

assert_param(IS_GPIO_PIN_ACTION(PinState));

if(PinState != GPIO_PIN_RESET)

{

GPIOx->BSRR = GPIO_Pin;

}

else

{

GPIOx->BSRR = (uint32_t)GPIO_Pin << 16U;

}

}123456789101112131415

可見,不管是輸出高還是輸出低,都是對 BSRR 寄存器的操作。

三、BSRR、BRR、 ODR 之間的關系

配置 BSRR , BRR 是為了對端口輸出進行配置,而 ODR 寄存器也是用于輸出數據的寄存器,一個 ODR 寄存器控制了一組(16位)的 GPIO 輸出。因此,對 ODR 進行修改也可以到達對 IO 口輸出進行配置。

但是,由于對 ODR 寄存器的讀寫操作必須以 16 位的形式進行。因此,如果使用 ODR 改寫數據以控制輸出時,須采用“讀-改-寫”的形式進行。

假設需要對 GPIOA_Pin_6 輸出高電平。采用改寫 ODR 寄存器的方式時,使用“讀-改-寫”操作,代碼如下:

uint32_t temp;

temp = GPIOA->ODR;

temp = temp | GPIO_Pin_6;

GPIOA->ODR = temp;1234

而使用改寫 BSRR 寄存器時,僅需要使用如下語句:

GPIOA->BSRR = GPIO_Pin_6;1

這是因為在修改 ODR 時,為了確保對端口 6 的修改不會影響到其他端口的輸出,需要對端口的原始數據進行保存,之后再對端口 6 的值進行修改,最后再寫入寄存器。而對 BSRR 的操作,是寫 1 有效,寫 0 不改變原狀態,因此可以對端口 6 置 1,其他位保持為 0。BSRR 為 1 的位,會修改相應的 ODR 位,從而控制輸出電平。

對 BSRR 的操作可以實現原子操作。因此在設置單個 IO 口輸出時,使用 BSRR 進行操作會更加方便。

但也有例外的時候,在需要對單個IO口進行 Toggle 操作時(即對當前輸出取反輸出,當前輸出為高則輸出低,當前輸出低則輸出高),官方的庫函數就是直接對 ODR 寄存器進行操作的。代碼如下:

void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

{

/* Check the parameters */

assert_param(IS_GPIO_PIN(GPIO_Pin));

GPIOx->ODR ^= GPIO_Pin;

}1234567

這是因為,0 和 1 與 1 進行異或操作被取反,0 和 1 與 0 進行異或操作保持原值。如下:

0 ^ 1 = 1

1 ^ 1 = 0

0 ^ 0 = 0

1 ^ 0 = 1

編輯:admin  最后修改時間:2018-05-18

聯系方式

0755-82591179

郵箱:ivy@yingtexin.net

地址:深圳市南山區桃源街道平山社區平山一路2號南山云谷創業園二期11棟410-411

Copyright © 2014-2026 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4

久久精品99久久_亚洲一区二区综合_狠狠色伊人亚洲综合成人_亚洲综合爱爱久久网
成人在线观看毛片| 青青草视频国产| 农民人伦一区二区三区| 国产欧美自拍视频| 天天成人综合网| 手机在线视频你懂的| 欧美激情第一区| 日本在线观看视频一区| 中文字幕第22页| 午夜激情影院在线观看| 成人性做爰片免费视频| 人妻互换免费中文字幕| 黄www在线观看| 一区二区免费av| 日韩精品手机在线观看| av天堂永久资源网| 免费看啪啪网站| 少妇高潮毛片色欲ava片| 思思久久精品视频| 日韩中文字幕在线免费| 国产理论在线播放| 97超碰人人澡| 免费看日b视频| 永久av免费在线观看| 岳毛多又紧做起爽| www.av片| 日本中文字幕一级片| www激情五月| 亚洲综合伊人久久| 一区二区成人网| 色综合天天色综合| 欧美日韩在线免费播放| 欧美 亚洲 视频| 男女av免费观看| 国产高清999| wwwjizzjizzcom| 亚洲精品永久视频| www.com毛片| 久久99久久久久久| 国产日韩欧美大片| 两性午夜免费视频| 91欧美视频在线| 不卡av免费在线| 国产免费黄色一级片| 日韩av三级在线| 91精品999| 欧美丰满熟妇bbbbbb百度| 少妇高潮流白浆| 人妻无码一区二区三区四区| 国产日韩欧美大片| www.污污视频| 喜爱夜蒲2在线| 欧美少妇一级片| 超碰在线97免费| h无码动漫在线观看| 亚洲熟妇av一区二区三区| 天天干天天操天天玩| 污污的网站18| 91高清国产视频| 欧美 日韩精品| 国产91porn| 波多野结衣家庭教师视频| 免费精品99久久国产综合精品应用| 日韩 国产 一区| 老熟妇仑乱视频一区二区| 中文字幕资源在线观看| www.51色.com| 欧美丝袜在线观看| 女女百合国产免费网站| 一本二本三本亚洲码 | 亚洲天堂2018av| 欧洲av无码放荡人妇网站| 最近中文字幕一区二区| 亚洲精品mv在线观看| 97超碰人人澡| 日本免费黄色小视频| 国内自拍第二页| 想看黄色一级片| 天堂av在线中文| 久久国产这里只有精品| 无码毛片aaa在线| 免费日韩视频在线观看| 亚洲最大天堂网| 蜜臀av色欲a片无码精品一区| 免费拍拍拍网站| 国产日韩欧美大片| www.成年人| www.日本xxxx| 深夜黄色小视频| 北条麻妃在线一区| 黄在线观看网站| 国产欧美日韩网站| 久久久久久久久久网| 91亚洲免费视频| 久久精品一二三四| 喜爱夜蒲2在线| www.xxx麻豆| 成熟了的熟妇毛茸茸| 无码人妻精品一区二区三区66| 午夜影院免费观看视频| 国产精品少妇在线视频| 激情五月亚洲色图| 91亚洲一区二区| 日韩精品―中文字幕| 潘金莲激情呻吟欲求不满视频| 免费无遮挡无码永久视频| 激情小视频网站| 182午夜视频| www.亚洲天堂网| 日本少妇高潮喷水视频| www.99在线| 免费在线观看的毛片| 国产精品专区在线| 黄色片视频在线| 国产男女激情视频| 亚洲久久中文字幕| 日本老太婆做爰视频| 欧美在线一区视频| 国产91xxx| 欧美一二三不卡| 青青草av网站| 国产黄色特级片| 黄网站色视频免费观看| 黄色一级片免费的| av7777777| av网站大全免费| 污片在线免费看| 欧美黄色性生活| 99热成人精品热久久66| 99国产精品白浆在线观看免费| 97人人爽人人| 人妻丰满熟妇av无码区app| 少妇人妻无码专区视频| 久久出品必属精品| 欧美在线aaa| 999精品网站| 宅男噜噜噜66国产免费观看| 亚洲色成人一区二区三区小说| 日本一级淫片演员| 精品国产av无码一区二区三区| 日本精品一区在线| aaaaaaaa毛片| 欧洲金发美女大战黑人| 日韩美女爱爱视频| 人人爽人人av| 51自拍视频在线观看| 日韩网站在线免费观看| 成人久久久久久久久| 色婷婷一区二区三区av免费看| 毛片毛片毛片毛片毛| av网站手机在线观看| 日本三级黄色网址| 日韩免费视频播放| 超碰超碰在线观看| 久久国产成人精品国产成人亚洲| 日本999视频| www插插插无码视频网站| 亚洲一区精品视频在线观看| 国产911在线观看| 日本特黄a级片| 黄色片一级视频| 欧美大片免费播放| 三级在线免费观看| 日韩a级在线观看| 国产91视频一区| 国产又粗又爽又黄的视频| 国产性生活一级片| 一区二区三区四区毛片| 日本www.色| 中文字幕在线乱| 九一免费在线观看| 国产精品久久..4399| 波多野结衣之无限发射| 成人综合视频在线| 国产精品天天av精麻传媒| 日本人视频jizz页码69| 亚洲三级在线观看视频| 精品视频在线观看一区二区| 午夜视频在线网站| 国产成人精品免费看在线播放| 日本精品一区二区三区四区| 国产熟女高潮视频| wwwwww欧美| 久久久久久三级| 大荫蒂性生交片| 天美一区二区三区| 日韩视频第二页| 丁香色欲久久久久久综合网| 国产主播在线看| 精品无码一区二区三区在线| 亚洲图色中文字幕| 欧美丰满熟妇xxxxx| 亚洲理论电影在线观看| 成人高清dvd| 国产1区2区3区中文字幕| 欧美少妇一区二区三区| 最新中文字幕久久| 日本一本在线视频| 国产va亚洲va在线va| 日本免费a视频|