STM32的电源复位和引脚复位

时间:2024-03-10 10:48:28

在调试程序的时候,发现仿真的时候程序一切运行正常,当重新上电后,程序运行不正常

具体现象如下:

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模块儿的问题啊,在开发板上测试也不行,要不就是程序的问题,初始化设置有问题