ddllxxrr 发表于 2021-1-3 10:28

【NUCLEO-L452RE测评】+FREERTOS(CMSIS-RTOS)事件

<div class='showpostmsg'> 本帖最后由 ddllxxrr 于 2021-1-3 10:43 编辑

<p>到今天为止,我觉得FREERTOS就是CMSIS-RTOS只不过看其封装了哪个操作系统,除了FREERTOS外我现在见到的,还可封装MDK自带的Keil RTX。但我只用CMSIS-RTOS就得了。</p>

<p>毕竟要站在巨人的肩膀上。</p>

<p>我今天看了下事件。我觉得MDK把事件说得很清楚,每个任务只要建立了就有16个事件位。也不需要建立什么事件标识。</p>

<p>&nbsp;</p>

<p>但事件,英语翻译过去应为EVENT,可是CMSIS-RTOS确定义为signal这个旗标的那个信号Semaphone,而STM32CUBE里边也没有处理好。只是一个框架子。</p>

<p></p>

<p>&nbsp;</p>

<p>根本定义不了什么,我这个人比较懒,能不动手写就不动手写,但这个事件没有定义,只有自己写了:</p>

<p>接上个程序:</p>

<p>1,定义一个线程,在这个线程里向默认任务发事件。</p>

<p>2,默认任务收到后,打印出数量,就这些。</p>

<p>&nbsp;</p>

<pre>
<code>/* USER CODE END Header_StartTask02 */
void StartTask02(void const * argument)
{
/* USER CODE BEGIN StartTask02 */
/* Infinite loop */
for(;;)
{
    osDelay(1000);
                osSignalSet(defaultTaskHandle,0x01);
}
/* USER CODE END StartTask02 */
}
</code></pre>

<p>&nbsp;</p>

<pre>
<code>/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void const * argument)
{
/* USER CODE BEGIN 5 */
        uint32_t count;
/* Infinite loop */
for(;;)
{
    osSignalWait(0x01,osWaitForever);
                {
                count++;
                osDelay(1);
                LCD_ShowNum(10,80,count,5);
                }       
}
/* USER CODE END 5 */
}</code></pre>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>运得结果是每隔一分钟就显示一个加1值。</p>

<p></p>

<p>写了这么多,FREERTOS(CMSIS-RTOS)我觉得就够用了。至于怎么用,那就是经验和失败的叠加。也许下次还有个互斥量要做一下。</p>

<p>我觉得那个玩意在工作中没多大用,互斥只是解决优先级反转。我反正用不上。</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

w494143467 发表于 2021-1-3 15:09

<p>老哥给力!</p>

soso 发表于 2021-1-5 10:03

<p>加油加油</p>

freebsder 发表于 2021-1-6 21:34

<p>CMSIS-RTOS有v1和v2,好像有些不一样,建议上v2</p>
页: [1]
查看完整版本: 【NUCLEO-L452RE测评】+FREERTOS(CMSIS-RTOS)事件