基于Hal库实现FreeRTOS操作系统

基于Hal库实现FreeRTOS操作系统(二)

前言

通过STM32CubeMX生成了一个工程模板,本章我基于前者新建的工程开始基于FreeRTOS操作系统的动态任务创建方法。

任务创建的动态方法

首先,我们找到tasks.c文件(我的路径是Middleware->FreeRTOS->tasks.c,不同电脑可能路径不同,这里只是作为参考)。在这里找到xTaskCreate函数详细代码如下所示:
xTaskCreate(	TaskFunction_t pxTaskCode,                                              //创建任务块
							const char * const pcName,	                //任务块名字
							const configSTACK_DEPTH_TYPE usStackDepth,      //申请代码块大小
							void * const pvParameters,                      //返回的变量
							UBaseType_t uxPriority,                         //优先级
							TaskHandle_t * const pxCreatedTask )            //任务块句柄

由上述代码可知,动态创建一个任务,主要有六个模块组成,在在对应的文件(tasks.h)中有使用的例子。如下

 * Example usage:
   <pre>
 // Task to be created.
 void vTaskCode( void * pvParameters )
 {
	 for( ;; )
	 {
		 // Task code goes here.
	 }
 }

下面贴入我使用的代码:

#define START_STK_SIZE    120//栈大小
#define START_TASK_PRIO   1//任务优先级
TaskHandle_t StartTask_Handler;//任务句柄
void start_task( void * pvParameters )//任务函数
{
	。。。
	vTaskDelete(StartTask_Handler);//通过句柄删除任务
}
int main()
{
	。。。
    xTaskCreate((TaskFunction_t)         start_task,            //创建任务块
		(char *)                 "start_task",		//任务块名字
		(configSTACK_DEPTH_TYPE) START_STK_SIZE,        //申请代码块大小
		(void *)                 NULL,                  //返回的变量
		(UBaseType_t)            START_TASK_PRIO,       //优先级
		(TaskHandle_t *)         &StartTask_Handler );  //任务块句柄
		。。。
}

完成动态创建一个任务优先级为1,栈大小为120bit的任务。
vTaskDelete()函数同样在task.c文件中,通过任务块的句柄删除函数。

您可以按照以下步骤来配置HAL库FreeRTOS的使用。 1. 首先,您需要在STM32CubeMX中生成一个工程模板。确保您已经安装了最新版本的STM32CubeMX和HAL库。在生成工程时,确保选择了FreeRTOS作为您的操作系统。 2. 在生成的工程中,找到tasks.c文件,该文件通常位于Middleware->FreeRTOS->tasks.c的路径下。在该文件中,您可以找到xTaskCreate函数。 3. 使用xTaskCreate函数来创建任务块。该函数的参数包括任务函数、任务块名称、堆栈大小、参数、优先级和任务句柄。您可以根据您的需求,调整这些参数来创建您所需的任务。 4. 接下来,您可以根据需要在任务函数中编写您的代码。您可以使用HAL库提供的函数来控制外设和执行其他操作。在任务函数中,您还可以使用printf函数来输出调试信息。您可以参考引用中的代码片段,了解如何在任务函数中使用printf函数。 5. 在编译和下载程序之前,确保您的开发环境已正确配置。请参考引用中提到的文章中的说明,以防止遇到一些环境配置问题。 配置HAL库FreeRTOS,可以使您的STM32项目能够同时使用这两个功能强大的库,从而更好地管理任务和外设操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [2023年电赛E题代码-stm32部分源码、jetson nano上的OpenCV源码及电路板PCB原理图设计](https://download.csdn.net/download/qq_32971095/88226738)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [基于Hal库实现FreeRTOS操作系统](https://blog.csdn.net/weixin_44453834/article/details/127360056)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [hal库STM32CubeMX配置与使用(含Free RTOS)](https://blog.csdn.net/huangjielan/article/details/123113754)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值