极客秀
搜索

STM32中CubeMX的FreeRTOS快速配置以及大量报错原因

之前出过一系列FreeRTOS的公众号,但是FreeRTOS的配置实在是啰嗦麻烦。需要耗费很长很长的时间。
本期利用CubeMX中使用FreeRTOS快速的初始化。
说明:由于CubeMX不支持MDK5.32以上版本,所以如果你是从官网下载的最新MDK的话。

**
**

这时候编译版本只能使用Version 6,Version 6的编译速度比5快速很多,但是会导致RTOS的编译出现非常多的错误。

**
**

**这时候我们需要获取老版本MDK,并且装上Version 5,使用Version 5来进行编译,这样子虽然编译速度会慢很多,但是编译不会出错。
**

**
**

**
**

因此如果大家编译出现了大量的错误的话,可以关注一下是不是因为MDK版本的问题。

  • RTOS初始化

首先将系统的时基切换成定时器(FreeRTOS推荐),这里推荐使用基本的定时器。

在创建项目的左边点击展开Middleware and Software Pack…找到FREERTOS。

选择CMSIS_V1为内核,在Include parameters中添加自己需要的头文件,这里我们启用二进制信号量。

在Tasks and Queues中添加任务

优先级修改为低优先级

开启定时器,优先级设置为0(最高)

在Timers and Semaphores添加二进制信号量和定时器。

这里我们添加两个任务用来演示RTOS的并行逻辑。

  • ** 演示 **

可以看到,在文件的代码结构中多出来了RTOS的部分源码,这意味着我们可以使用RTOS,其实还有信号量我发现没有包括进去,也可以找到文件自行添加。


void LED0Func(void *argument){  /* USER CODE BEGIN LED0Func */  /* Infinite loop */  for(;;)  {    osDelay(1);  }  /* USER CODE END LED0Func */}  
/* USER CODE BEGIN Header_LED1Func *//*** @brief Function implementing the LED1 thread.* @param argument: Not used* @retval None*//* USER CODE END Header_LED1Func */void LED1Func(void *argument){  /* USER CODE BEGIN LED1Func */  /* Infinite loop */  for(;;)  {    osDelay(1);  }  /* USER CODE END LED1Func */}

在FreeRTOS.c文件中可以看到,系统帮我们定义好了我们的两个任务函数,不需要像RTOS裸机开发一样使用大量繁琐的配置和初始化。


void LED0Func(void *argument){  /* USER CODE BEGIN LED0Func */  /* Infinite loop */  for(;;)  {    HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_10);//LED0反转    osDelay(500);  }  /* USER CODE END LED0Func */}  
/* USER CODE BEGIN Header_LED1Func *//*** @brief Function implementing the LED1 thread.* @param argument: Not used* @retval None*//* USER CODE END Header_LED1Func */void LED1Func(void *argument){  /* USER CODE BEGIN LED1Func */  /* Infinite loop */  for(;;)  {    HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_9);//LED1反转    osDelay(500);  }  /* USER CODE END LED1Func */}  

我们配置两个任务分别是控制两盏灯0.5s反转一次。

在main函数中不关调用了FREERTOS初始化也调用了任务调度器,因此我们只需要填充我们的任务函数。
可以看到,两个灯表现的方式是并行闪烁的,代表着任务的同步进行。

1.转载请保留原文链接谢谢!
2.本站所有资源文章出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
3.本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户擦亮眼睛自行鉴别,做一个有主见和判断力的用户。
4.本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。
5.联系方式(#替换成@):pm#vimge.com

  相关内容