nyszx 发表于 2018-12-1 17:24:46

STM32F103从STOP模式唤醒后串口不工作

如题,不进入STOP模式没有问题,从STOP中断唤醒后,就无法收发数据。相关寄存器操作都正常,但就是没有数据从IO输出。是不是唤醒后还需要额外配置?重新初始化USART相关寄存器也不行。更奇怪的是有时候可以,有时候不行,表现为修改程序其他部分,重新编译,唤醒后有时候正常有时候不正常。
程序使用3.5标准固件库

程序进入STOP的方法:执行   PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);


唤醒后参考固件库例程,唤醒中断中执行:SYSCLKConfig_STOP();
/**
* @briefConfigures system clock after wake-up from STOP: enable HSE, PLL
*         and select PLL as system clock source.
* @paramNone
* @retval None
*/
void SYSCLKConfig_STOP(void)
{
RCC_HSEConfig(RCC_HSE_ON);

HSEStartUpStatus = RCC_WaitForHSEStartUp();

if(HSEStartUpStatus == SUCCESS)
{
    RCC_PLLCmd(ENABLE);
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);

    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
    while(RCC_GetSYSCLKSource() != 0x08);

}
}



chifen 发表于 2018-12-1 21:18:44

是不是你PA9 PA10 像这样的IO的PA口被关闭没有打开

nyszx 发表于 2018-12-1 22:19:09

chifen 发表于 2018-12-1 21:18
是不是你PA9 PA10 像这样的IO的PA口被关闭没有打开

检查了所有硬件配置,没有问题。现在怀疑编译器,因为这个问题是在每次编译过后会随机出现,还在测试原因

nyszx 发表于 2018-12-1 23:31:37

测试还发现,进入STOP再恢复并且可以 正常通信时,多次重复后会随机出现恢复后无法通信状态,进入STOP模式恢复后一旦出现无法通信时只能完全断电才能恢复(但也不是完全每次都可以)。否则会一直无法通信。其次是编译重新下载也会出现随机无法通信现象。

chifen 发表于 2018-12-3 10:21:49

和编译器关系不大,唤醒后 对串口所有配制重新设置一次,如果你开串口中断也要重新配制,先配制时钟后才能配制串口

dataozi 发表于 2018-12-3 16:45:03

从STOP模式下唤醒后,要重新倍频一下(如果系统时钟工作在72MHZ),配置一下时钟。

发表于 2018-12-3 17:01:30

唤醒后,需要重新对时钟、模块进行配置。测试一下是否能够解决问题,楼主说复位可以解决,猜测重新配置也可以解决。

nyszx 发表于 2018-12-9 20:11:36

现在测下来重新配置也不是能完全保证能够通讯,时钟也重新配置了,管脚也重新配置了,但还是不稳定,相同的程序,而且有的板子正常有的不正常
页: [1]
查看完整版本: STM32F103从STOP模式唤醒后串口不工作