[ ST NUCLEO-U575ZI-Q 测评] FreeRTos的第一个任务
<div class='showpostmsg'><pre><code>#include <Arduino.h>
#include <STM32FreeRTOS.h> //引和freertos库
#ifndef LED_BUILTIN
#define LED_BUILTIN PC5
#endif
/*********************************************************************************
* @ 函数名: vTaskLed1
* @ 功能说明: LED1 任务,实现一个周期性的闪烁
* @ 参数 : pvParameters,当任务创建的时候传进来,可以没有
* @ 返回值: 无
********************************************************************************/
void vTaskLed1(void *pvParameters)
{
/* 任务都是一个无限,不能返回 */
while(1)
{
digitalWrite(LED_BUILTIN, HIGH);;
/* 阻塞延时,单位ms */
vTaskDelay( 500 );
digitalWrite(LED_BUILTIN, LOW);;
vTaskDelay( 500 );
long tick = xTaskGetTickCount();
Serial.print("running time = ");
Serial.println(tick);
}
}
void setup()
{
Serial.begin(115200);
// initialize LED digital pin as an output.
pinMode(LED_BUILTIN, OUTPUT);
Serial.println("start U575");
TaskHandle_t myTask1; //创建任务句柄
xTaskCreate(vTaskLed1,//创建任务
"Led task",
1024,
NULL,
6,
&myTask1);
// 开启任务
vTaskStartScheduler();
}
void loop()
{
}</code></pre>
<p>如上,开启FreeRTos。</p>
<p>效果:</p>
<p> 第一个任务就成功了,给arduino点个赞吧。下一集,开启多任务系统。</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> <p><img height="55" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/wanwan11.gif" width="70" />你已经开始了多任务<img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/wanwan76.gif" width="48" /><img height="49" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/wanwan86.gif" width="66" /></p>
damiaa 发表于 2022-12-13 14:40
你已经开始了多任务
<p>对,加上setup里面的任务,算是两个任务了吧,我还是学习中。</p>
本帖最后由 damiaa 于 2022-12-13 20:11 编辑
<p>esp32 idf框架就是默认了3个任务。</p>
<table id="id23">
<tbody>
<tr>
<td>
<p>Main Task (<code>main</code>)</p>
</td>
<td>
<p>CPU0</p>
</td>
<td>
<p>1</p>
</td>
<td>
<p>Task that simply calls <code>app_main</code>. This task will self delete when <code>app_main</code> returns</p>
</td>
</tr>
<tr>
<td>
<p>Idle Tasks (<code>IDLEx</code>)</p>
</td>
<td>
<p>CPU0 and CPU1</p>
</td>
<td>
<p>0</p>
</td>
<td>
<p>Idle tasks created for (and pinned to) each CPU</p>
</td>
</tr>
<tr>
<td>
<p>IPC Tasks (<code>ipcx</code>)</p>
</td>
<td>
<p>CPU0 and CPU1</p>
</td>
<td>
<p>24</p>
</td>
<td>
<p>IPC tasks created for (and pinned to ) each CPU. IPC tasks are used to implement the IPC feature. See <a href="https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-reference/system/ipc.html">Inter-Processor Call</a> for more details.</p>
</td>
</tr>
</tbody>
</table>
<p>esp32 的arduino 中用freertos在加载app_main的时候就创建了一个任务。</p>
<p>setup()和loop()函数包含在这个任务里面。</p>
<p>xTaskCreatePinnedToCore(loopTask, "loopTask", 8192, NULL, 1, NULL, ARDUINO_RUNNING_CORE);</p>
<p>stm32 的arduino 中用freertos不知道什么情况。 可能不一样 stm32的main.cpp 里面可能 没创建任务,但也包含了setup()和loop()函数。</p>
<p>如果这样 楼主的还是一个任务<img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/wanwan76.gif" width="48" /><img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/wanwan76.gif" width="48" /><img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/wanwan76.gif" width="48" /></p>
<p>测评汇总:免费申请|ST NUCLEO-U575ZI-Q https://bbs.eeworld.com.cn/thread-1228653-1-1.html</p>
页:
[1]