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

哪位有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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版