在調試程序的時候,發現仿真的時候程序一切運行正常,當重新上電后,程序運行不正常
具體現象如下:
1、確定是進入while(1)了,因為有程序運行的秒閃燈在閃爍
2、應該是MCU無法正常收到的24L01的命令(無法驅動4094片子的繼電器動作)
3、當手動把復位引腳的電平拉低后,程序便運行正常了
調試方法如下:
1、懷疑是硬件復位電路的問題,但是確實是普通的阻容復位,沒看出來多大的問題
2、用軟件復位,上電運行第一次先進行軟件復位,第二次正常運行,不知道怎么設置標志位
系統復位將復位除時鍾控制寄存器CSR中的復位標志和備份區域中的寄存器以外的所有寄存器
@1、備份區域中的寄存器
1 if(BKP->DR1!=0X5050) 2 { 3 SCB->AIRCR = (u32)0x05FA0000 | (u32)0x04; 4 BKP->DR1 = 0X5050; 5 }
備份區域中的寄存器在沒有電池供電的情況下,軟件復位后,寄存器的值仍然會丟
@2、復位除時鍾控制寄存器CSR中的復位標志
1 if( (RCC->CSR >> 28) == 0 ) 2 { 3 SCB->AIRCR = (u32)0x05FA0000 | (u32)0x04; 4 }
確實能軟件復位了,但是沒起到應有的效果
3、有沒有可能是無線模塊的設置問題
4、由STM32內部復位電路可知,電源復位和軟件復位
這個問題確實很困惑,望高手指點啊 。。。。。。。
是不是很有可能是24L01模塊兒的問題啊,在開發板上測試也不行,要不就是程序的問題,初始化設置有問題