OpenEdv-开源电子网

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

使用FreeRTOS串口6使用DMA接收数据后,串口5打印接收到的数据

[复制链接]

30

主题

184

帖子

0

精华

高级会员

Rank: 4

积分
608
金钱
608
注册时间
2020-4-17
在线时间
111 小时
发表于 2022-11-1 10:53:12 | 显示全部楼层 |阅读模式
10金钱
每次正常接收打印几次后
[接收]10         11         12         13         14         15         16         

[接收]10         11         12         13         14         15         16         

[接收]10         11         12         13         14         15         16         

[接收]10         11         12         13         14         15         16         

[接收]10         11         12         13         14         15         16         

[接收]10         11         12         13         14         15         16         
Error:..\FreeRTOS\tasks.c,2806


报错:Error:..\FreeRTOS\tasks.c,2806



最佳答案

查看完整内容[请看2#楼]

这个看着是调度出问题了 先试试加大这个任务的堆栈试试
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2022-11-1 10:53:13 | 显示全部楼层
跟紧我 发表于 2022-11-1 17:00
应该是任务调度冲突导致的。在串口打印输出的时候任务时间片到了,进入中断任务切换时候出错了。
目前只能 ...

这个看着是调度出问题了  先试试加大这个任务的堆栈试试
回复

使用道具 举报

30

主题

184

帖子

0

精华

高级会员

Rank: 4

积分
608
金钱
608
注册时间
2020-4-17
在线时间
111 小时
 楼主| 发表于 2022-11-1 11:01:18 | 显示全部楼层
本帖最后由 跟紧我 于 2022-11-1 11:02 编辑

网上查了下有两个说法:
1.freertos时钟调用有冲突,delay的可能性大。但是没说具体哪里问题2.定时器比DMA优先级高导致的。但没有定义别的定时器
回复

使用道具 举报

5

主题

356

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4670
金钱
4670
注册时间
2019-4-30
在线时间
904 小时
发表于 2022-11-1 11:32:10 | 显示全部楼层
你如果串口5打印那么你串口5的波特率就调高一点 比如串口5的是115200 那你六的就 921600
回复

使用道具 举报

30

主题

184

帖子

0

精华

高级会员

Rank: 4

积分
608
金钱
608
注册时间
2020-4-17
在线时间
111 小时
 楼主| 发表于 2022-11-1 11:54:05 | 显示全部楼层
a1281854907 发表于 2022-11-1 11:32
你如果串口5打印那么你串口5的波特率就调高一点 比如串口5的是115200 那你六的就 921600

现在是串口6波特率为9600,串口5打印波特率为115200。两个串口波特率对调也一样报错。另外DMA和串口间优先级改了也没效果
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2022-11-1 12:17:13 | 显示全部楼层
你看看.\FreeRTOS\tasks.c,2806代码不就知道了
回复

使用道具 举报

30

主题

184

帖子

0

精华

高级会员

Rank: 4

积分
608
金钱
608
注册时间
2020-4-17
在线时间
111 小时
 楼主| 发表于 2022-11-1 14:43:58 | 显示全部楼层
@nashui_sx 查看了tasks.c文件的2806行代码,有点蒙
企业微信截图_16672848005101.png
企业微信截图_16672848524245.png
回复

使用道具 举报

30

主题

184

帖子

0

精华

高级会员

Rank: 4

积分
608
金钱
608
注册时间
2020-4-17
在线时间
111 小时
 楼主| 发表于 2022-11-1 17:00:04 | 显示全部楼层
应该是任务调度冲突导致的。在串口打印输出的时候任务时间片到了,进入中断任务切换时候出错了。
目前只能尽量减少串口输出打印和延长任务时间片,不知道有没有更好办法解决。
企业微信截图_1667292888522.png
企业微信截图_16672928118554.png
回复

使用道具 举报

30

主题

184

帖子

0

精华

高级会员

Rank: 4

积分
608
金钱
608
注册时间
2020-4-17
在线时间
111 小时
 楼主| 发表于 2022-11-1 20:15:10 | 显示全部楼层
nashui_sx 发表于 2022-11-1 18:47
这个看着是调度出问题了  先试试加大这个任务的堆栈试试

改大了堆栈确实不会再报错了。任务时间片改回1ms,堆栈改为512,打印80条都不会报错
回复

使用道具 举报

30

主题

184

帖子

0

精华

高级会员

Rank: 4

积分
608
金钱
608
注册时间
2020-4-17
在线时间
111 小时
 楼主| 发表于 2022-11-1 20:21:12 | 显示全部楼层
nashui_sx 发表于 2022-11-1 18:47
这个看着是调度出问题了  先试试加大这个任务的堆栈试试

想请教两个问题:
1.日常使用中什么办法可以知道任务堆栈是否溢出呢?
2.为什么正点原子例程任务时间片设置1ms,对一些需要实时连续传输的信号是不是不太友好
回复

使用道具 举报

30

主题

184

帖子

0

精华

高级会员

Rank: 4

积分
608
金钱
608
注册时间
2020-4-17
在线时间
111 小时
 楼主| 发表于 2022-11-1 20:26:01 | 显示全部楼层
记录一下。FreeRTOS设置任务堆栈太小,使用串口打印”过程中”溢出会打印报错内容Error:..\FreeRTOS\tasks.c,2806。因为串口打印也会占用堆栈,打印的内容太多容易堆栈溢出
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2022-11-1 20:34:43 | 显示全部楼层
跟紧我 发表于 2022-11-1 20:15
改大了堆栈确实不会再报错了。任务时间片改回1ms,堆栈改为512,打印80条都不会报错。

print 需要堆栈比较大
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2022-11-1 20:35:32 | 显示全部楼层
本帖最后由 nashui_sx 于 2022-11-1 20:38 编辑
跟紧我 发表于 2022-11-1 20:21
想请教两个问题:
1.日常使用中什么办法可以知道任务堆栈是否溢出呢?
2.为什么正点原子例程任务时间片 ...

1.有个查询历史堆栈最小值 vTaskList打印出来看看我一般是这样定义 #define             Led_Task_Size                                (100+STACK_SIZE_ADD)//任务堆栈大小
给你感觉得值修改STACK_SIZE_ADD  整体调节大小 方便点  
2.连续传输你前后加上不让调度就行了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-11 05:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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