stm32 BKP寄存器操作操作寄存器+庫(kù)函數(shù)
BKP在實(shí)際應(yīng)用中可以存入重要數(shù)據(jù),防止被惡意查看,或用于斷電等。
本例實(shí)現(xiàn)對(duì)BKP寄存器的讀寫操作,和入侵檢測(cè)和處理。主程序中寫入寄存器后,依次打印出10個(gè)BKP寄存器數(shù)據(jù),然后觸發(fā)GPIOC13的入侵中斷(輸入低電平),在中斷中打印出入侵事件發(fā)生后的寄存器內(nèi)容(復(fù)位為0 )。
直接操作寄存器
用到的寄存器描述如下:
備份數(shù)據(jù)寄存器x(BKP_DRx) (x = 1 … 10):低16位[15:0]有效,用來(lái)寫入或讀出備份數(shù)據(jù)。
備份控制寄存器(BKP_CR):
低兩位有效。
TPAL[1]:侵入檢測(cè)TAMPER引腳有效電平(TAMPER pin active level)
- 0:侵入檢測(cè)TAMPER引腳上的高電平會(huì)清除所有數(shù)據(jù)備份寄存器(如果TPE位為1)
- 1:侵入檢測(cè)TAMPER引腳上的低電平會(huì)清除所有數(shù)據(jù)備份寄存器(如果TPE位為1)
TPE[0]:?jiǎn)?dòng)侵入檢測(cè)TAMPER引腳(TAMPER pin enable)
- 0:侵入檢測(cè)TAMPER引腳作為通用IO口使用
- 1:開(kāi)啟侵入檢測(cè)引腳作為侵入檢測(cè)使用
備份控制/狀態(tài)寄存器(BKP_CSR):
本文引用地址:http://m.butianyuan.cn/article/201611/318036.htmTIF[9]:侵入中斷標(biāo)志(Tamper interrupt flag) 0:無(wú)侵入中斷 1:產(chǎn)生侵入中斷
當(dāng)檢測(cè)到有侵入事件且TPIE位為1時(shí),此位由硬件置1。
通過(guò)向CTI位寫1來(lái)清除此標(biāo)志位(同時(shí)也清除了中斷)。如果TPIE位被清除,則此位也會(huì)被清除。
TEF[8]:侵入事件標(biāo)志(Tamper event flag) 0:無(wú)侵入事件 1:檢測(cè)到侵入事件
當(dāng)檢測(cè)到侵入事件時(shí)此位由硬件置1。通過(guò)向CTE位寫1可清除此標(biāo)志位
TPIE[2]:允許侵入TAMPER引腳中斷(TAMPER pin interrupt enable)
0:禁止侵入檢測(cè)中斷 1:允許侵入檢測(cè)中斷(BKP_CR寄存器的TPE位也必須被置1)
注1:侵入中斷無(wú)法將系統(tǒng)內(nèi)核從低功耗模式喚醒。 注2:僅當(dāng)系統(tǒng)復(fù)位或由待機(jī)模式喚醒后才復(fù)位該位。
CTI[1]:清除侵入檢測(cè)中斷(Clear tamper interrupt)
0:無(wú)效 1:清除侵入檢測(cè)中斷和TIF侵入檢測(cè)中斷標(biāo)志
CTE[0]:清除侵入檢測(cè)事件(Clear tamper event)
0:無(wú)效 1:清除TEF侵入檢測(cè)事件標(biāo)志(并復(fù)位侵入檢測(cè)器)。
要寫入BKP寄存器數(shù)據(jù)必須在 PWR->CR中取消備份區(qū)寫保護(hù),才可以寫入BKP數(shù)據(jù)。stm32開(kāi)啟入侵檢測(cè)也不需要設(shè)置GPIOC的時(shí)鐘和輸入輸出模式。
代碼如下:(system.h 和stm32f10x_it.h等相關(guān)代碼參照stm32 直接操作寄存器開(kāi)發(fā)環(huán)境配置)
User/main.c
Library/src/bkp.c
Library/inc/bkp.h
stm12f10x_it.c
}
評(píng)論