打印
[技术问答]

HC32F460串口接收中断只接收第1个字节

[复制链接]
7310|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
HC32F460串口接收中断,串口调试助手发送20个字节,只能接收到第1个字节。接收中断,先判断接收数据寄存器是否满,在函数里面判断是否有溢出和超时错误。接收到的数据存入数组中,数组计数器加1.


除了串口中断,还有定时器中断,用来判断是否一帧数据大于3.5ms.
现在尝试了修改定时器中断为低级优先级,保证串口接收中断的优先级高,效果不行,还是只能接受第1个字节。
一时找不到原因,特来求助。

使用特权

评论回复
沙发
fxyc87| | 2021-8-29 08:15 | 只看该作者
void USART1_IRQHandler(){                //485串口 modbus                        //USART1_IRQHandler

                if(M4_USART1->SR_f.RXNE)                                //1:准备好读取接收到的数据
                {
                        c = M4_USART1->DR>>16;
                                MbHmiRecBuffer[MbHmiBufferIndex++]=c;
                                if(MbHmiBufferIndex>MODBUS_HMI_BF_LEN)
                                        MbHmiBufferIndex=0;
                                LastMbHmiTick=Tick1Ms;


我用寄存器访问的,和你类似,modbus客户端,用在产品上一直很稳定
你要自己对着手册查寄存器,这样就很容易找出问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

185

帖子

2

粉丝