為了讓程序能夠讀取多個狀態(tài)標(biāo)志位的狀態(tài)。固件設(shè)計了一個通用的函數(shù)RCC_GetStatus(),來讀取各標(biāo)志位的狀態(tài)。
下面是RCC的所有標(biāo)志位:
* - 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)
每個狀態(tài)標(biāo)志位定義為無符號的8位數(shù),通過查找發(fā)現(xiàn),其具體的值表示的是相應(yīng)寄存器中其標(biāo)志位所處的位置
例如獨立看門狗的標(biāo)志位 #define RCC_FLAG_IWDGRST (u8)0x7D
那么如何讀取標(biāo)志位是0還是1呢
0:無*****發(fā)生
1:發(fā)生*****
即:判斷寄存器中的標(biāo)志位是0還是1,但個狀態(tài)所在的寄存器總共有三個,且所在寄存器的位也不同
通過源代碼可以發(fā)現(xiàn):采用兩步去完成
1、先判斷該狀態(tài)標(biāo)志是在哪個寄存器中,如下程序:
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;
}
三個寄存器對應(yīng)于1,2,3
CR=01,BDCR=11, CSR=11; 也對應(yīng)著每個狀態(tài)標(biāo)志定義數(shù)據(jù)的高三位,例如:
#define RCC_FLAG_IWDGRST (u8)0x7D =0111 1101 ,其高三位011,即表明它在CSR寄存器中
所以,只要知道每個狀態(tài)標(biāo)志的高三位即可,讓標(biāo)志狀態(tài)右移5位即得高三位數(shù)據(jù)。
第二步判斷是在所屬寄存器的哪一位。
還是看這個宏定義:#define RCC_FLAG_IWDGRST (u8)0x7D =0111 1101 ,其低五位對應(yīng)著它所在寄存器的位數(shù)
11101=29,說明獨立看門狗復(fù)位標(biāo)志在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位的狀態(tài)標(biāo)志做與運算得到其低五位的值,例如
tmp = RCC_FLAG & FLAG_Mask;
tmp = 11011=29,
statusreg & ((u32)1 << tmp
然后將其與所對應(yīng)的寄存器做與運算即得到改狀態(tài)標(biāo)志位的值。
最后返回狀態(tài)標(biāo)志位。
固件原函數(shù),根據(jù)各個狀態(tài)標(biāo)志位的具體分布,即所在的寄存器與所在寄存器的位置。定義狀態(tài)標(biāo)志 位8位無符號數(shù),通過對這個數(shù)的前三位與后五位,來確定該狀態(tài)
標(biāo)志位。
上一篇:STM32 串口固件庫中定義的幾個中斷標(biāo)志什么意思?
下一篇:stm32 uart清除中斷時機
推薦閱讀
史海拾趣
在電子行業(yè)快速發(fā)展的背景下,Cermetek Microelectronics公司深知創(chuàng)新的重要性。公司不斷加大對研發(fā)的投入,引進先進的研發(fā)設(shè)備和人才,持續(xù)推出具有創(chuàng)新性的微電子產(chǎn)品。這些新產(chǎn)品不僅具有更高的性能和更低的功耗,還更加符合市場需求,為公司帶來了更多的商業(yè)機會。
服務(wù):Hartmann Codier GmbH深知客戶是企業(yè)發(fā)展的基石。因此,公司始終將客戶服務(wù)放在首位,致力于為客戶提供優(yōu)質(zhì)的產(chǎn)品和服務(wù)。公司建立了完善的客戶服務(wù)體系,包括售前咨詢、售中支持和售后服務(wù)等環(huán)節(jié)。
成果:通過不斷優(yōu)化客戶服務(wù)流程和提高服務(wù)質(zhì)量,Hartmann Codier GmbH贏得了廣大客戶的信賴和支持。公司與客戶之間建立了長期穩(wěn)定的合作關(guān)系,共同推動了電子行業(yè)的繁榮發(fā)展。同時,公司也根據(jù)客戶的反饋和需求,不斷改進產(chǎn)品和服務(wù),以滿足市場的不斷變化和升級。
理念:作為一家負(fù)責(zé)任的企業(yè),Hartmann Codier GmbH始終將環(huán)保理念貫穿于產(chǎn)品研發(fā)、生產(chǎn)和銷售的全過程中。公司嚴(yán)格遵守RoHS/WEEE等國際環(huán)保標(biāo)準(zhǔn),杜絕使用或包含六種有毒重金屬物質(zhì)。
實踐:在產(chǎn)品設(shè)計階段,公司就充分考慮環(huán)保因素,采用環(huán)保材料和工藝;在生產(chǎn)過程中,公司加強了對廢棄物的處理和回收利用;在產(chǎn)品銷售后,公司還提供了完善的回收服務(wù)。這些措施不僅降低了產(chǎn)品對環(huán)境的影響,還提升了企業(yè)的社會形象。
Custom Components Inc(簡稱CCI)公司的發(fā)展歷程始于一個技術(shù)突破。在公司成立的初期,CCI的研發(fā)團隊成功開發(fā)了一種新型的電子元件,這種元件在性能和成本上均優(yōu)于市場上的同類產(chǎn)品。這一技術(shù)突破立即引起了行業(yè)的關(guān)注,多家電子設(shè)備制造商紛紛向CCI拋出橄欖枝,希望建立長期合作關(guān)系。
隨著市場需求的不斷增長,CCI逐步擴大了生產(chǎn)規(guī)模,并通過技術(shù)創(chuàng)新不斷提升產(chǎn)品質(zhì)量。同時,公司還積極開拓國際市場,與海外客戶建立了穩(wěn)定的業(yè)務(wù)往來。憑借卓越的產(chǎn)品性能和良好的市場口碑,CCI逐漸在電子行業(yè)中嶄露頭角。
丹納赫集團起源于1984年,由Steven Rales和Mitchell Rales兄弟二人創(chuàng)立。他們的愿景是建立一個致力于持續(xù)改善并提升客戶滿意度的制造公司。名字“Dana”源自古老的凱爾特語,寓意奔騰不息的精神和不斷改善的品質(zhì)。起初,丹納赫集團并未直接涉足電子行業(yè),但隨著公司的發(fā)展,逐漸將業(yè)務(wù)范圍擴展至包括電子設(shè)備和技術(shù)的領(lǐng)域。
隨著業(yè)務(wù)的不斷發(fā)展,Desco Tools公司開始積極拓展全球市場。公司利用其在防靜電技術(shù)方面的優(yōu)勢,成功打入歐美、亞洲等多個國家和地區(qū)的市場。通過與國際知名企業(yè)的合作,Desco Tools公司的產(chǎn)品和解決方案得到了廣泛應(yīng)用,為全球電子行業(yè)的發(fā)展做出了重要貢獻。
從電磁鐵結(jié)構(gòu)形式的選擇、磁極形狀的選擇、鐵心的設(shè)計、線圈的設(shè)計、控制部分的設(shè)計等方面介紹了一種小型直流電磁鐵的結(jié)構(gòu)設(shè)計方法,提出了一種電磁鐵設(shè)計新思路. … 查看全部問答∨ |
(原創(chuàng))校園監(jiān)控?zé)崮艹掷m(xù)多久 大家還記得09年監(jiān)獄看守所監(jiān)控?zé)釂??因為連續(xù)出了幾次熱點事件后,監(jiān)獄看守所監(jiān)控問題一下子被提到第一高度。那幾個月幾乎天天有客戶來問題監(jiān)獄看守所監(jiān)控問題,我們公司工程師做監(jiān)獄看守所監(jiān)控方案和配置做到手痛,但現(xiàn)在慢慢好像回到了平淡。 &n ...… 查看全部問答∨ |
我現(xiàn)在要用delphi調(diào)用一個.SYS文件,實現(xiàn)delphi與SYS文件之間的通信。思想是:SYS文件是一個編譯好了的驅(qū)動文件,不過它并不與硬件相關(guān)聯(lián),它不是一個硬件驅(qū)動,相當(dāng)于一個“軟硬件驅(qū)動”。例如,用delphi調(diào)用SYS中的一個函數(shù),再SYS返回一個值給de ...… 查看全部問答∨ |
我現(xiàn)在已經(jīng)成功的將CE系統(tǒng)裝入ARM9系統(tǒng)里了,,我如果讓這個系統(tǒng)啟動后自動執(zhí)行一個程序呢 我現(xiàn)在已經(jīng)成功的將CE系統(tǒng)裝入ARM9系統(tǒng)里了,,我如果讓這個系統(tǒng)啟動后自動執(zhí)行一個程序呢?… 查看全部問答∨ |
OLED 顯示器技術(shù)及功能:電源供應(yīng)是否會影響顯示器畫質(zhì)? 作者:Oliver Nachbaur,德州儀器顯示電源系統(tǒng)工程經(jīng)理 有機發(fā)光二極管 (OLED) 顯示器越來越普遍,在手機、媒體播放器及小型入門級電視等產(chǎn)品中最為顯著。不同于標(biāo)準(zhǔn)的液晶顯示器,OLED 像素是由電流源所驅(qū)動。若要了解 OLED 電源供應(yīng) ...… 查看全部問答∨ |
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 感謝有你,感恩龍年,EEWORLD陪你一起“鬧”龍年!
- ADI有獎下載活動之14 ADI公司針對pH計和電導(dǎo)率儀的演示系統(tǒng)
- EEWorld加磅雙重禮 ELEXCON深圳國際電子展誠邀您參加
- 村田RFID知識有獎問答 雙重好禮等你來挑戰(zhàn)
- 來英飛凌旗艦店,探尋秋日好物!
- 搶樓有獎:免費獲得元器件樣品本~~
- 下載安森美半導(dǎo)體工業(yè)物聯(lián)網(wǎng)工業(yè)解決方案,百份好禮送!
- 報名觀看TI嵌入式主題月直播,場場精彩,好運連連
- 報名有禮:【TI C2000在實時控制系統(tǒng)中的新特性】網(wǎng)絡(luò)直播誠邀您參與!
- 華為P50 Pro又一組概念設(shè)計圖曝光 網(wǎng)友:沒啥新意
- 三星S21低配版只有60Hz Note21 Ultra渲染圖解密
- 6月國內(nèi)手機出貨量2863.0萬部 5G手機占比超過六成
- 華為Mate40全系搭載瀑布屏 3D人臉識別但劉海更小了
- 華為申請麒麟芯片商標(biāo)解密:呆萌 可愛
- 火場上的新“戰(zhàn)士”-消防機器人
- 寧德時代表態(tài)將配合蔚來ES8召回的工作
- Uber正式完成收購Mighty AI,這筆買賣到底值不值?
- 純電動汽車補貼取消,銷售或?qū)⒚媾R停滯
- 豐田計劃投資印尼開發(fā)電動汽車,當(dāng)?shù)丶t土鎳礦是優(yōu)勢?