stm32F103C8T6芯片
備份寄存器數據丟失兩種可能:
1、觸發了入侵中斷
PC13 做爲普通IO使用時 要禁用入侵中斷功能,否則會導致備份寄存器數據在關機,在啓動的時候數據丟失,(可以查閱其他文章,不詳解)
2、 芯片VBAT 在關機的時候掉電. 如果需要備份寄存器在關機的時候保存數據,那麼VBAT需要接到鈕釦電池,如果關機之後VBAT也掉電,備份寄存器是無法保存的,當時我就是好奇爲什麼備份寄存器數據總是丟失,之後發現是VBAT的原因,後來改成了 flash存儲的數據,做法:關機的時候觸發 低電壓中斷,然後保存數據到flash.(一般用MCU內部的flash 存儲的話,100uF 足夠512字節存儲)
下面是幾個特殊引腳的說明:
1、PC13 RTC
入侵功能介紹:
侵入檢測功能分析:功能數據備份。
1 BKP_CR的TPAL位,設定決定TAMPER引腳的信號由0變1或是又1變0爲有效觸發信號,產生侵入檢測事件置位標誌 位(BKR_CSR 的TEF)。
2 侵入檢測事件後會將所有數據備份寄存器復位。
3 注意一點的是:在BKP_CR的TPE位允許使能之前,一當有侵入檢測引腳產生的侵入檢測事件也是有效的。這一點有利 於更好的保護數據。
4.一當TPAL=0(或1),如果在在BKP_CR的TPE位允許(侵入檢測引腳允許位)使能之前TPAL=1(或0),則一旦允許了侵入檢測功能,則會產生一個額外的侵入事件。儘管BKP_CR的TPE(侵入檢測引腳允許位)位爲1後併爲出現新的沿跳變
5 在一個侵入檢測事件被檢測到並被清零後,侵入檢測引腳應該要禁止掉。當再次在想寫數據備份寄存器之前重新設置BKP_CR的TPE位(侵入檢測引腳允許位)。這樣可以避免侵入檢測引腳上仍有侵入檢測事件產生時,不斷的對數據備份寄存器寫操作。
6VDD電源斷開時, 侵入檢測功能仍有效,位了避免不必要的數據備份寄存器復位,TAMPER引腳外部應連接到正確的電平上。
初始化IO的時候加上這句號:
PWR_BackupAccessCmd( ENABLE );/* 允許修改RTC和後備寄存器*/
RCC_LSEConfig(RCC_LSE_OFF);//關閉外部低速外部時鐘信號功能 後,PC13 PC14 PC15 纔可以當普通IO用。
BKP_TamperPinCmd(DISABLE); /* 關閉入侵檢測功能,PC13可以用作普通IO*/
BKP_ITConfig(DISABLE); /* 禁止TAMPER 中斷*/
2、 PA13 PA14 PA15 這三個腳默認是 JTAG腳 ,就算是按照普通IO進行初始化也是不可以正常用的需要添加
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
則可以當做正常IO使用