在调试程序的时候,发现仿真的时候程序一切运行正常,当重新上电后,程序运行不正常
具体现象如下:
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模块儿的问题啊,在开发板上测试也不行,要不就是程序的问题,初始化设置有问题