OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 333|回复: 5

freertos 高速切换任务异常问题

[复制链接]

10

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
203
金钱
203
注册时间
2018-6-13
在线时间
27 小时
发表于 2024-10-19 14:07:35 | 显示全部楼层 |阅读模式
1金钱
目前流程是固定250us定时器触发恢复运行任务1、任务2、任务3,任务1优先级为最高15,任务2为14,任务3为13,即定时器溢出后三个任务依次进行,然后使用串口中断接收单个串口数据,中断中将数据放进队列,并将串口数据处理任务恢复,串口数据处理任务内部处理完数据如果该串数据符合协议就返回一样的数据并暂停等待后续新数据到来,串口任务比前3个任务优先级低,freertos的滴答周期是1khz。串口波特率测试时为115200测试程序外设中断等级:滴答是15,串口是5,定时器是5
问题1:
不固定的会进入硬件错误中断,从PSP指针回溯,普遍问题出现在task.c的xTaskResumeAll函数中退出临界区之后的return xAlreadyYielded;
问题2:
有时会出现某些任务不运行的情况
问题3:
该方案 串口有几率会丢失数据

后面查看任务的栈使用情况,认为应该不是栈大小不足,每个都扩到几k都没作用。
后将串口任务临时改成不暂停,占用所有空闲时间,发现问题消失。问题预计是在任务频繁切换导致的?

有大佬能指导下问题大概是什么原因,如何解决。
另外像这样us级的任务,有没有什么好的流程方案。
微信截图_20241017154518.png
该图为任务时间占用和流程
微信截图_20241017154617.png
该图为进入硬件错误中断前的情况
微信截图_20241017153450.png
该图为PSP指针进入错误中断时指向的位置

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

70

主题

6696

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12682
金钱
12682
注册时间
2012-11-26
在线时间
3709 小时
发表于 2024-10-19 19:16:49 | 显示全部楼层
学无止境
回复

使用道具 举报

10

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
203
金钱
203
注册时间
2018-6-13
在线时间
27 小时
 楼主| 发表于 2024-10-21 08:43:28 | 显示全部楼层
jermy_z 发表于 2024-10-19 19:16
程序架构设计有问题

可能是的,大佬能大概说说如果是有这些功能,大致的架构该如何优化设计吗
回复

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2023-11-19
在线时间
17 小时
发表于 2024-10-21 10:21:12 | 显示全部楼层
freertos的最小任务周期怎么突破ms的 ? 直接老老实实写裸机代码吧
回复

使用道具 举报

10

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
203
金钱
203
注册时间
2018-6-13
在线时间
27 小时
 楼主| 发表于 2024-10-21 13:36:54 | 显示全部楼层
antoinekid 发表于 2024-10-21 10:21
freertos的最小任务周期怎么突破ms的 ? 直接老老实实写裸机代码吧

兄弟看来是没这样设计过,rtos任务周期突破ms本身并没有难度
回复

使用道具 举报

70

主题

6696

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12682
金钱
12682
注册时间
2012-11-26
在线时间
3709 小时
发表于 2024-10-21 18:20:07 | 显示全部楼层
opsd999 发表于 2024-10-21 08:43
可能是的,大佬能大概说说如果是有这些功能,大致的架构该如何优化设计吗

数据处理用消息队列就行,不用把任务一会挂起,一会恢复啥的
学无止境
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 07:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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