硬汉嵌入式论坛

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

[STM32H7] FreeRTO+串口中断接收容易造成帧数据丢失??

[复制链接]

5

主题

95

回帖

110

积分

初级会员

积分
110
发表于 2019-12-9 15:06:31 | 显示全部楼层 |阅读模式
各路大神,能否用V7的板子帮忙做个测试,在使用FreeRTOS的情况下,串口中断接收数据帧是否容易丢帧。

测试发送数据帧如下:A5 5A 00 11 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 01

或者使用测试发送函数:

void UartSendDatFrame(void)
{
        uint8_t i=0;
        uint8_t Sum=0;
        uint8_t DatBuf[64];

        DatBuf[0] = 0xa5;
        DatBuf[1] = 0x5a;
       
        DatBuf[2] = 0x00;
        DatBuf[3] = 17;
        for(i=0; i<17; i++)
        {
                DatBuf[4+i] = i;
                Sum ^= i;
        }
        DatBuf[21] = Sum;

        /*串口发送DatBuf数据 */
}



V7-FreeRTOS 串口接收-数据丢帧测试.zip

25.08 MB, 下载次数: 162

回复

使用道具 举报

5

主题

95

回帖

110

积分

初级会员

积分
110
 楼主| 发表于 2019-12-9 18:20:19 | 显示全部楼层
貌似是我开的任务太多造成的,测试的程序应该没有问题。
回复

使用道具 举报

5

主题

95

回帖

110

积分

初级会员

积分
110
 楼主| 发表于 2019-12-9 18:46:16 | 显示全部楼层
找到问题了,是因为我在另一个任务中有调用__disable_irq();导致中断被短暂的关闭掉,导致串口接收中断为计时接收数据进入ORE,造成数据丢帧
回复

使用道具 举报

610

主题

3062

回帖

4912

积分

至尊会员

积分
4912
发表于 2019-12-11 17:05:21 | 显示全部楼层
xiaomeng 发表于 2019-12-9 18:46
找到问题了,是因为我在另一个任务中有调用__disable_irq();导致中断被短暂的关闭掉,导致串口接收中断为计 ...

厉害呀,
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2019-12-17 15:11:06 | 显示全部楼层
xiaomeng 发表于 2019-12-9 18:46
找到问题了,是因为我在另一个任务中有调用__disable_irq();导致中断被短暂的关闭掉,导致串口接收中断为计 ...

在任务里做关中断操作不合理吧...
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 05:26 , Processed in 0.161093 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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