感谢所有给出答案的人。但问题与编译器有关。我使用了 Cosmos 和 STVD,它没有绑定中断函数。当我将项目迁移到 IAR 时,问题就解决了。
我正在处理 STM8S103F3P6 IC。我尝试使用 TX 中断发送消息,但从未成功。
我已经检查了 UART 中断的示例。另外,我尝试开发相同的代码。但是,我仍然是零。我从 STM8 示例中获取了中断向量函数。我的错误在哪里?我怎么知道?
这是我的 init、main 和中断向量函数;
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);
}
它什么也不发送。我没有任何逻辑分析仪,我只使用终端应用程序检查过。