你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

哪位有CMSIS_OS 就是封装后的freeRTos的说明

[复制链接]
Tony_Duan 提问时间:2015-9-7 17:45 /
对着freertos的说明,发现os就是比裸奔强很多。但是问题是封装后的cmsis_os虽然变化不大,但是由于没有使用说明,对初学者来说确实有点难了,比如在freertos中的xSemaphoreGiveFromISR()、xSemaphoreGive(),查了好久,在cmsis_os中只使用osSemaphoreRelease(myBinarySemHuart1Handle)就解决了问题,这样摸索实在是浪费时间,如果有使用说明就简单多了。谢谢
收藏 1 评论22 发布时间:2015-9-7 17:45

举报

22个回答
Tony_Duan 回答时间:2015-10-6 23:45:10
osEvent eve;
eve=osSignalWait(0,osWaitForever);
本来是可以根据信号不同在一个任务中执行不同的功能,前提是要把信号清零。我一直奇怪信号设置一后就不变了,比如我设置了osSignalSet(xxsHandle,0x01);osSignalSet(xxsHandle,0x02);osSignalSet(xxsHandle,0x04);之后,下次再设置信号0x01的话,其实另外两个模块下的程序也会执行,也就是多oswaitsignal没有清零任何信号,查看变量证实了我的判断,于是想用ossignalclear语句,很遗憾居然就是一个定义没有内容。查看oswaitsignal定义,关键语句如下:if(xTaskNotifyWait( 0,(uint32_t) signals, (uint32_t *)&ret.value.signals, ticks) != pdTRUE),查看xTaskNotifyWait定义,发现那个0就是执行前要清零的信号位,0位当然什么都不清除,他妈妈的这个封装真的有问题,一直以为是自己错了,请看freertos的解释:
ulBitsToClearOnEntry           Any bits set in ulBitsToClearOnEntry will be cleared in the calling RTOS task's notification value on entry to the xTaskNotifyWait() function (before the task waits for a new notification) provided a notification is not already pending when xTaskNotifyWait() is called.
For example, if ulBitsToClearOnEntry is 0x01, then bit 0 of the task's notification value will be cleared on entry to the function.

Setting ulBitsToClearOnEntry to 0xffffffff (ULONG_MAX) will clear all the bits in the task's notification value, effectively clearing the value to 0.
很清楚地解释了这一点,难道cmisis封装时不能添加一个变量吗?
由于我的程序不需要保留signal位,所以最简单的办法就是直接修改cmsis_os这个程序,把0直接换成0xffffffff,如下if(xTaskNotifyWait( 0xffffffff,(uint32_t) signals, (uint32_t *)&ret.value.signals, ticks) != pdTRUE)。问题解决。
creep 回答时间:2015-9-7 18:01:09
估计ARM也看不下去freeRTos混乱的函数和变量命名规则了,所以自己封装下重新取个简单通俗的名字,至于说明看注释和命名应该问题不大吧。
Tony_Duan 回答时间:2015-9-7 19:13:31
发个链接,如果不想深究freertos直接使用的话,就用cmsis rtos, 全英文的有例子很清晰
这个就是我想要找的哈哈
http://www.keil.com/pack/doc/cmsis/RTOS/html/index.html
JackieLaura 回答时间:2015-9-7 23:46:12
谢谢分享
stmcu.org.png
你好我好大家好! 回答时间:2015-9-8 09:04:14
帮顶              
CallMeJohn 回答时间:2015-9-9 19:09:41
这个指导文件本地就有
file:///C:/Keil_v5/ARM/Pack/ARM/CMSIS/4.3.0/CMSIS/Documentation/RTOS/html/modules.html
你好我好大家好! 回答时间:2015-9-9 21:14:00
论坛应该有吧
anny 回答时间:2015-9-10 08:26:24
Tony_Duan 发表于 2015-9-7 19:13
发个链接,如果不想深究freertos直接使用的话,就用cmsis rtos, 全英文的有例子很清晰
这个就是我想要找的 ...

楼主把它翻译一下,给我们这些不会英文的也看看
qiu-368230 回答时间:2015-9-10 08:54:30
如果CMSIS_OS 就是封装后的freeRTos,那么CMSIS-RTOS RTX呢,他们三个之间到底是什么关系啊,谢谢
Tony_Duan 回答时间:2015-9-11 07:30:38
qiu-368230 发表于 2015-9-10 08:54
如果CMSIS_OS 就是封装后的freeRTos,那么CMSIS-RTOS RTX呢,他们三个之间到底是什么关系啊,谢谢  ...

我也是刚玩,cmsis_os 显然是封装了freertos,如果完全使用freertos命令在程序中也是没问题的,但是cmsis_os更方便;没玩过RTX,个人估计如果在cubemx中也选择rtx的话,cmsis也把rtx封装了,即os的api和rtx的api有同样的功能。

国内资料太少,google又上不去,学的很艰难啊,比如我勾选了usb,cubemx把usb初始化放在defaulttask中了,难道usb要不停地初始化吗?百度不到的,希望共同提高
123下一页

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版