HC32F460串口接收中断只接收第1个字节
HC32F460串口接收中断,串口调试助手发送20个字节,只能接收到第1个字节。接收中断,先判断接收数据寄存器是否满,在函数里面判断是否有溢出和超时错误。接收到的数据存入数组中,数组计数器加1.除了串口中断,还有定时器中断,用来判断是否一帧数据大于3.5ms.
现在尝试了修改定时器中断为低级优先级,保证串口接收中断的优先级高,效果不行,还是只能接受第1个字节。
一时找不到原因,特来求助。
void USART1_IRQHandler(){ //485串口 modbus //USART1_IRQHandler
if(M4_USART1->SR_f.RXNE) //1:准备好读取接收到的数据
{
c = M4_USART1->DR>>16;
MbHmiRecBuffer=c;
if(MbHmiBufferIndex>MODBUS_HMI_BF_LEN)
MbHmiBufferIndex=0;
LastMbHmiTick=Tick1Ms;
我用寄存器访问的,和你类似,modbus客户端,用在产品上一直很稳定
你要自己对着手册查寄存器,这样就很容易找出问题
页:
[1]