STM8S103F3P6 UART TX中断无法触发:编译器绑定异常问题
问题定位:STM8S103F3P6 UART TX中断失效与开发环境的关联
我这边已经排查出问题根源:该UART TX中断发送失败的问题完全和开发环境/编译器绑定有关。
具体场景细节:
- 在Cosmos + STVD开发环境下,STM8S103F3P6芯片的UART TX中断函数无法正确绑定到中断向量,导致触发TX中断发送数据的功能彻底失效
- 我严格参考STM8官方UART中断例程编写了初始化代码、主循环以及中断向量处理函数(完整代码如下),但用终端工具始终检测不到任何数据输出
- 把整个项目直接迁移到IAR开发环境后,中断发送功能立刻恢复正常,终端能正常接收到预期数据
测试用完整代码
void init_handler(void){ CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); UART1_DeInit(); UART1_Init((uint32_t)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE); UART1_ITConfig(UART1_IT_TXE,ENABLE); enableInterrupts(); UART1_Cmd(ENABLE); } main(){ init_handler(); while(1); } INTERRUPT_HANDLER(UART1_TX_IRQHandler, 17){ /* In order to detect unexpected events during development, it is recommended to set a breakpoint on the following instruction. */ UART1_SendData8('a'); while (UART1_GetFlagStatus(UART1_FLAG_TXE) == RESET); }
内容的提问来源于stack exchange,提问作者Murat Hepeyiler
相关产品推荐
相关产品推荐

