我们经常使用的串口中断是,接收中断和发送中断,但是从头文件中来看比较模糊。 发送中断到底是用UART1_IT_TXE(TXE的意思是发送寄存器为空),还是用UART1_IT_TC(TC的意思是发送完成),接收中断到底是用UART1_IT_RXNE(RXNE的意思是接收寄存器非空),还是用UART1_IT_RXNE_OR(OR的意思是接收寄存器超载溢出),又要怎么使用呢?
经过实践,总结如下: 发送中断只能使用UART1_IT_TXE,并且与51单片机的方式有很大不同,51单片机中发送中断的工作流程是:1)给SBUF赋值,2)硬件自动发送,3)发送完成进入串口中断,4)在中断中判断中断是发送还是接受,清楚对应标志位; STM8中对串口进行了初始化之后, UART1_Init((uint32_t)115200,
UART1_WORDLENGTH_8D,
UART1_STOPBITS_1,
UART1_PARITY_NO,
UART1_SYNCMODE_CLOCK_DISABLE,
UART1_MODE_TXRX_ENABLE);
UART1_Cmd(ENABLE);
在需要发送数据时再对发送中断进行使能,比如在主函数中, UART1_ITConfig(UART1_IT_TXE,ENABLE);
|