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);
}
}
是不是你PA9 PA10 像这样的IO的PA口被关闭没有打开 chifen 发表于 2018-12-1 21:18
是不是你PA9 PA10 像这样的IO的PA口被关闭没有打开
检查了所有硬件配置,没有问题。现在怀疑编译器,因为这个问题是在每次编译过后会随机出现,还在测试原因 测试还发现,进入STOP再恢复并且可以 正常通信时,多次重复后会随机出现恢复后无法通信状态,进入STOP模式恢复后一旦出现无法通信时只能完全断电才能恢复(但也不是完全每次都可以)。否则会一直无法通信。其次是编译重新下载也会出现随机无法通信现象。 和编译器关系不大,唤醒后 对串口所有配制重新设置一次,如果你开串口中断也要重新配制,先配制时钟后才能配制串口 从STOP模式下唤醒后,要重新倍频一下(如果系统时钟工作在72MHZ),配置一下时钟。 唤醒后,需要重新对时钟、模块进行配置。测试一下是否能够解决问题,楼主说复位可以解决,猜测重新配置也可以解决。 现在测下来重新配置也不是能完全保证能够通讯,时钟也重新配置了,管脚也重新配置了,但还是不稳定,相同的程序,而且有的板子正常有的不正常
页:
[1]