stm32f030cct6 中断出不来问题
本帖最后由 lilu 于 2018-4-3 08:52 编辑在调试stm32f030cct6时,用了4个串口分别为usart1,2,3,5,同时初始化后,串口3会自发产生中断并进入中断服务函数,中断标志死活清不掉,一直卡在中断服务函数里,不知道怎么回事?大家有遇到过吗?
RXNE 和 TXE 标志位是不能直接清的,你必须要清中断条件(RXNE 的话是从 RDR 读取,TXE 的话是向 TDR 写入)要么就是关掉这个中断。 借鉴数据手册中提到Set the TE bit in USARTx_CR1 to send an idle frame as first transmission。也就是说一旦使能了TE,芯片会自动地发出了一次数据,并会引起TC_FLAG置位,而想要清除该flag的先决条件是使能了串口。因此,假如在使能串口钱已经使能了串口中断,那程序就一直进入中断了。完成了初始化,那么只要把需要发送的数据填写到发送缓冲区,并且调用一次USART_SendData()把第一个字节发送出去之后,剩下的就交给中断处理。 进去之后 先关掉中断 在处理函数内容,然后再次启动,这样就不会一直在中断里出不来了 串口3是卡在发送哥还是接收中断?发送中断的话,需要在发送完成后关闭发送中断使能。
页:
[1]