STM32CubeMX+FreeRTOS学习[1] 任务的创建(Lu)

2026/4/23 6:01:08

Tasks and Queues用于添加任务和队列。

默认配置了一个名为defaultTask的任务,其优先级为普通,任务堆栈大小为128字,任务函数名为StartDefaultTask。

双击蓝色的地方,弹出对话框,将任务名修改为Task_LED0,将任务函数名修改为Func_LED0。

点击Add按钮,增加一个任务Task_LED1,优先级设置为Normal,函数名为Func_LED1。

需要注意的是,STM32Cube对FreeRTOS进行了一些修改,比如优先级只有7个,如下图。

Timers and Semaphores是添加软件定时器和信号量的选项。

注:该步骤中,除了添加任务,其他的都使用默认参数。 Step7.生成代码。

这时候会弹出一个警告。原因是FreeRTSO使用了Systick作为时钟节拍,而HAL库也使用了Systick作为HAL_Delay()和各种timeout的时钟基准。因此需要将HAL的时钟基准改为其他TIMER。一般使用一个基本定时器。

点击“No”按钮,然后在Pinout设置页面选择时基源为TIM4

再次点击代码生成按钮,等完成后直接打开工程。

工程基本组织结构如下图,其中Application/User组中的文件是用户可以修改的,而其他组中的文件一般不进行修改。

Step8.分析程序结构。 在进入main函数之前,先定义了两个变量,声明了几个函数。

再看main函数。将main函数整理,删除很多注释之后,得到下图所示内容。

其中第①部分,是硬件配置;第②部分,创建两个线程(或称任务);第③部分,启动调度器。这就是程序的基本结构。 启动调度器后,程序就由FreeRTOS的调度器管理了,将会被执行的是两个已经创建的任务函数Func_LED0和Func_LED1,后面的while(1)是不会执行到的。

Step9.添加代码。 在main.c文件中,找到前面配置添加的两个任务函数,Func_LED0和Func_LED1,然后在里面分别添加LED0和LED1的控制代码。


STM32CubeMX+FreeRTOS学习[1] 任务的创建(Lu).doc 将本文的Word文档下载到电脑
搜索更多关于: STM32CubeMX+FreeRTOS学习[1] 任务的创 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219