事情是这样的,最近在做一个小系统,主控是STM32F103ZET6,在配置两个串口的时候出现了这样的问题:在烧录之后自动运行则正常运行,硬件重启之后则串口无法正常工作。起初我把重心放在为什么重启之后不能正常运行,怀疑是重启的时候由于某种原因电平变化触发了某些中断并卡死,耗费了很长时间,后来发现,仅仅是使能串口时钟时不知怎么的没有写对:
RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1 , ENABLE);
复制代码
RCC_APB2PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
复制代码
两个将将写反。
改过后调试正常,可还是不禁思考:为什么烧录后的自动运行就能正常运行呢?
我没有用jlink来连接stm32做调试,而是生成hex文件过后烧录进mcu。 |