173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

stm32串口高频发生中断

keros@mark 2023-03-18 资讯中心

STM32总是进入串口中断

你有时间在这里问,还不如把中断寄存器取出来看看到底是哪个标志置了位……

猜测你串口根本就没配置好,开了一堆中断源,然后某次产生校验错误或接收FIFO溢出之类的标志,然后你这程序脆弱的没有任何处理,于是永远、永远进进出出……

stm32 串口 中断的问题

返回的数据都是一样的吧,都是第一个字符?

你应该定义一个全局变量记录接受的字节数,另外每次中断只能接受一个字节。

你的中断函数是完成接受数据的吧,怎么里面还有一句(倒数第四行)等待发送结束?

int i=0;

void USART2_IRQHandler(void)

{

if (USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //判断发生接收中断

{

USART_ClearITPendingBit(USART2, USART_IT_RXNE); //清除中断标志

TxBuf1[i++]=USART_ReceiveData(USART2); //接收数据

if(i==8) //接受完8个字节数据

{

LCD_write_String(7,2,IntToStr(TxBuf1[4]));

i=0; //计数清零

}

}

stm32的串口中断问题

1)中断函数是发送和接收公用的,你是否开启了发送中断函数,如果开启了会一直进入中断。

2)你接收的数据是否太多,或者一直都在接收过程,比如一次性就给本机发了1000个数据,你说会不会一直进中断?

3)将中断函数里的东西全删了,只留一个清中断标志位的函数试试。(中断函数里你发送数据是发给谁,如果自发自收自然会一直进中断)。

本文标签:stm32串口高频发生中断

产品列表
产品封装
友情链接