娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年06月09日(星期一)

2018年06月09日 | stm32中關于讀取狀態標志位函數的自我理解

發布者:cocolang 來源: eefocus關鍵字:stm32  狀態標志位  函數 手機看文章 掃描二維碼
隨時隨地手機看文章

為了讓程序能夠讀取多個狀態標志位的狀態。固件設計了一個通用的函數RCC_GetStatus(),來讀取各標志位的狀態。


下面是RCC的所有標志位:


*                       - RCC_FLAG_HSIRDY: HSI oscillator clock ready  

*                       - RCC_FLAG_HSERDY: HSE oscillator clock ready  

*                       - RCC_FLAG_PLLRDY: PLL clock ready  

*                       - RCC_FLAG_LSERDY: LSE oscillator clock ready  

*                       - RCC_FLAG_LSIRDY: LSI oscillator clock ready  

*                       - RCC_FLAG_PINRST: Pin reset  

*                       - RCC_FLAG_PORRST: POR/PDR reset  

*                       - RCC_FLAG_SFTRST: Software reset  

*                       - RCC_FLAG_IWDGRST: Independent Watchdog reset  

*                       - RCC_FLAG_WWDGRST: Window Watchdog reset  

*                       - RCC_FLAG_LPWRRST: Low Power reset  

在RCC庫文件中定義了 RCC_FLAG 如下:


#define RCC_FLAG_HSIRDY                  ((u8)0x20)  

#define RCC_FLAG_HSERDY                  ((u8)0x31)  

#define RCC_FLAG_PLLRDY                  ((u8)0x39)  

#define RCC_FLAG_LSERDY                  ((u8)0x41)  

#define RCC_FLAG_LSIRDY                  ((u8)0x61)  

#define RCC_FLAG_PINRST                  ((u8)0x7A)  

#define RCC_FLAG_PORRST                  ((u8)0x7B)  

#define RCC_FLAG_SFTRST                  ((u8)0x7C)  

#define RCC_FLAG_IWDGRST                 ((u8)0x7D)  

#define RCC_FLAG_WWDGRST                 ((u8)0x7E)  

#define RCC_FLAG_LPWRRST                 ((u8)0x7F)  

每個狀態標志位定義為無符號的8位數,通過查找發現,其具體的值表示的是相應寄存器中其標志位所處的位置

例如獨立看門狗的標志位   #define RCC_FLAG_IWDGRST         (u8)0x7D  


那么如何讀取標志位是0還是1呢


0:無*****發生


1:發生*****


即:判斷寄存器中的標志位是0還是1,但個狀態所在的寄存器總共有三個,且所在寄存器的位也不同


通過源代碼可以發現:采用兩步去完成


1、先判斷該狀態標志是在哪個寄存器中,如下程序:



FlagStatus RCC_GetFlagStatus(u8 RCC_FLAG)  

{  

  u32 tmp = 0;  

  u32 statusreg = 0;  

  FlagStatus bitstatus = RESET;  

  

  /* Check the parameters */  

  assert_param(IS_RCC_FLAG(RCC_FLAG));  

  

  /* Get the RCC register index */  

  tmp = RCC_FLAG >> 5;  

  

  if (tmp == 1)               /* The flag to check is in CR register */  

  {  

    statusreg = RCC->CR;  

  }  

  else if (tmp == 2)          /* The flag to check is in BDCR register */  

  {  

    statusreg = RCC->BDCR;  

  }  

  else                       /* The flag to check is in CSR register */  

  {  

    statusreg = RCC->CSR;  

  }  

三個寄存器對應于1,2,3

CR=01,BDCR=11, CSR=11; 也對應著每個狀態標志定義數據的高三位,例如:


#define RCC_FLAG_IWDGRST         (u8)0x7D =0111 1101 ,其高三位011,即表明它在CSR寄存器中


所以,只要知道每個狀態標志的高三位即可,讓標志狀態右移5位即得高三位數據。


第二步判斷是在所屬寄存器的哪一位。


還是看這個宏定義:#define RCC_FLAG_IWDGRST         (u8)0x7D =0111 1101 ,其低五位對應著它所在寄存器的位數


11101=29,說明獨立看門狗復位標志在CSR寄存器的29位。


看固件源程序:



tmp = RCC_FLAG & FLAG_Mask;  

  

if ((statusreg & ((u32)1 << tmp)) != (u32)RESET)  

{  

  bitstatus = SET;  

}  

else  

{  

  bitstatus = RESET;  

}  

  

/* Return the flag status */  

return bitstatus;  

首先:


#define FLAG_Mask                 ((u8)0x1F)  

即FLAG_Mask=0001 1111

它和任何8位的狀態標志做與運算得到其低五位的值,例如


tmp = RCC_FLAG & FLAG_Mask;  

tmp = 11011=29,


statusreg & ((u32)1 << tmp  

然后將其與所對應的寄存器做與運算即得到改狀態標志位的值。

最后返回狀態標志位。




固件原函數,根據各個狀態標志位的具體分布,即所在的寄存器與所在寄存器的位置。定義狀態標志 位8位無符號數,通過對這個數的前三位與后五位,來確定該狀態


標志位。


關鍵字:stm32  狀態標志位  函數 引用地址:stm32中關于讀取狀態標志位函數的自我理解

上一篇:STM32 串口固件庫中定義的幾個中斷標志什么意思?
下一篇:stm32 uart清除中斷時機

推薦閱讀

一、前言:Oculus喜獲入華?小米VR再破局Oculus,是VR設備制造商當中的巨頭之一。根據TrendForce的統計數字,Oculus一年出貨量超70萬臺,全球排名第二,這還是在其未能進入中國市場的情況之下(其余主流對手皆已入華)。??作為一個最早研發VR設備的巨頭,Oculus其實早在2016年就籌劃入華事項,卻因無合適的本地化落地方案和合作伙伴而遲滯多年。?另一方...
據路透社報道,孟晚舟律師團隊將提出一項動議,質疑美國的引渡。加拿大廣播報道指出,孟晚舟的引渡聽證會將于2020年1月開始,預計于當年10月結束。 去年12月被溫哥華警方以美國逮捕令拘留的孟晚舟仍在等待引渡程序何時正式啟動。孟晚舟的引渡案在今年3月6日進了第一次聽證會;5月8日進行第二次聽證會,無任何實質性進展;6月6日再次召開聽證會...
據外媒報道,德國政府公布了價值 1300 億歐元的經濟促進計劃,其中包括每輛電動車購車補貼 6000 歐元,支持電動車基礎建設,以及增值稅從 19%下調到 16%等。并要求每個加油站安裝電動汽車充電樁,來為電動車主提供充電服務。 作為政府激勵措施的一部分,德國將在電芯生產和充電基礎設施建設方面投資 25 億歐元,在該領域,石油巨頭(包括殼牌)、...
據三星官方報道,其計劃于 2021 年內推出第7代V-NAND解決方案,并在2021年下半年發布首款基于第7代 V-NAND的消費級SSD。三星表示,在第7代V-NAND的技術加持下,即將推出的SSD將擁有業內最小的單元尺寸,與第7代100層V-NAND相比,由于可以在不增加模塊高度的情況下堆疊176層,第7代的單元體積減少了35%,同時降低功耗并提高近 16% 的效能。該消費級 S...

史海拾趣

小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 泸溪县| 荆门市| 洛扎县| 灵山县| 江安县| 色达县| 平潭县| 女性| 孟州市| 凤山县| 玉田县| 卢氏县| 贵港市| 惠来县| 孝感市| 兴国县| 五大连池市| 英德市| 乌拉特后旗| 翁牛特旗| 梅河口市| 翼城县| 厦门市| 焉耆| 霍邱县| 怀仁县| 新宾| 九寨沟县| 堆龙德庆县| 金秀| 晴隆县| 古丈县| 陆河县| 田东县| 连云港市| 三河市| 屯门区| 拜泉县| 怀来县| 毕节市| 海盐县|