硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3351|回复: 5
收起左侧

[有问必答] 串口通信问题——助手正常接收,单片机中断接收错误

[复制链接]

7

主题

11

回帖

32

积分

新手上路

积分
32
发表于 2020-11-26 18:51:24 | 显示全部楼层 |阅读模式
本帖最后由 暴躁韭菜 于 2020-11-26 20:00 编辑

单片机接收串口指令后返回数据,在返回时通过串口助手显示正常,上位单片机中断接收,总有8字节数据错误,各位大佬看看。


串口接收自己写的,没用HAL处理过程,
void USART1_IRQHandler(void)
{   
        uint8_t reg;      
        if(__HAL_UART_GET_IT_SOURCE(&huart1,UART_IT_RXNE)){  //判断中断源
                reg = (uint8_t)(huart1.Instance->DR & (uint8_t)0xFF); //读出数据,自动清标志               
                switch(reg){
                        case '*': cnt = 0;break;  //起始符
                        case '%': flag = 1;break; //终止符标志
                        default : rxbuff1[cnt++] = reg;break;        //缓存               
                }
        }
}





调试.png
助手.png
回复

使用道具 举报

5

主题

192

回帖

212

积分

高级会员

积分
212
发表于 2020-11-26 21:35:46 | 显示全部楼层
哪个是正确的数据,哪个是错误的数据?光看中断没啥问题
回复

使用道具 举报

5

主题

192

回帖

212

积分

高级会员

积分
212
发表于 2020-11-26 21:37:53 | 显示全部楼层
串口初始化看不到,波特率校验位停止位这些确定没问题,那么就是你串口线有问题了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106912
QQ
发表于 2020-11-27 01:14:49 | 显示全部楼层
代码太少,不好帮你判断问题。
回复

使用道具 举报

7

主题

11

回帖

32

积分

新手上路

积分
32
 楼主| 发表于 2020-11-29 20:03:14 | 显示全部楼层
eric2013 发表于 2020-11-27 01:14
代码太少,不好帮你判断问题。

谢谢,我应该知道问题所在了,HAL_tick优先级默认0,我一直以为他应该是15呢,学串了,导致中断数据丢失。
回复

使用道具 举报

7

主题

11

回帖

32

积分

新手上路

积分
32
 楼主| 发表于 2020-11-29 20:10:13 | 显示全部楼层
cubeMX默认HAL_Tick优先级为0,一般RTOS systick一般都是15,思维惯性,没考虑这个,应该是中断没法抢占导致数据丢失,大家借鉴一下。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-9 16:25 , Processed in 0.186880 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表