打印
[开发工具]

有人对stm32cube生成的freertos中断了解吗

[复制链接]
1962|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
240011814|  楼主 | 2016-1-4 22:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
systick中断优先级是5,其他的比他低,可是其他中断里有osdelay();就卡死了,
进到源码里有个注释说osdelay();优先级最低,那要延时怎么办
用freertos定时器也是不运行了
沙发
airwill| | 2016-1-5 08:18 | 只看该作者
是的, Systick 中断是为操作系统提供时基的, osdelay() 的时基来源于此. Systick 的中断优先级一般设置得比较低, 因为时基系统相对有较长的执行时间. 这样的设计可以避免 systick 影响其它中断的实时性.
你的问题是, 你的中断就不应该调用 osdelay(), 中断的任务保留必要的信号和状态变量, 然后交割主循环或者任务去做剩下的处理, 这里你可以做个处理任务去对接这个中断服务.
当然还有不推荐的办法, 你非得这样弄, 把调用 osdelay() 的中断的优先级设置得比 systick 更低. 为了追求最简练的系统, 这样做也不是非得要禁止, 但有个严重的副作用, 这个中断会影响其它所有任务的实时性! 因为这个中断服务就相对于超级优先级的任务了.

使用特权

评论回复
板凳
wangjianxing| | 2016-1-5 09:20 | 只看该作者
帮顶

使用特权

评论回复
地板
240011814|  楼主 | 2016-1-5 10:16 | 只看该作者
中断的任务保留必要的信号和状态变量, 然后交割主循环或者任务去做剩下的处理

我看了文档,感觉这样中断好像无法嵌套

使用特权

评论回复
5
mintspring| | 2016-1-5 14:51 | 只看该作者
OS的操作实在是太高端了,我至今搞不懂咋回事。

使用特权

评论回复
6
240011814|  楼主 | 2016-1-5 15:53 | 只看该作者
在整一个通讯的玩意,3个下行采集串口,2个上行串口,不用os,处理能力大打折扣

使用特权

评论回复
7
airwill| | 2016-1-5 18:55 | 只看该作者
看来是个大的数据贪吐量的工作, 这考验的是你的数据结构和数据处理的能力, 并未见得发挥了 OS 的优势!

使用特权

评论回复
8
戈卫东| | 2016-1-6 01:37 | 只看该作者
你使能中断同时设置优先级就是。

使用特权

评论回复
9
犹豫的大三| | 2016-1-6 08:37 | 只看该作者
airwill 发表于 2016-1-5 08:18
是的, Systick 中断是为操作系统提供时基的, osdelay() 的时基来源于此. Systick 的中断优先级一般设置得比 ...

请问版主大人,在FreeRTOS中如何判断堆栈使用情况?uCOS可以很方便的查看

使用特权

评论回复
10
240011814|  楼主 | 2016-1-6 10:37 | 只看该作者
airwill 发表于 2016-1-5 18:55
看来是个大的数据贪吐量的工作, 这考验的是你的数据结构和数据处理的能力, 并未见得发挥了 OS 的优势! ...

数据并发处理

使用特权

评论回复
11
airwill| | 2016-1-6 13:14 | 只看该作者
犹豫的大三 发表于 2016-1-6 08:37
请问版主大人,在FreeRTOS中如何判断堆栈使用情况?uCOS可以很方便的查看

很抱歉, 你的问题我也不清楚, 不过我想应该可以写一个函数, 来监控和分析堆栈的使用情况.

使用特权

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

本版积分规则

17

主题

70

帖子

3

粉丝