CubeMX 创建FreeRTOS 入门实例
选择CubeIDE或CubeMX 创建项目,在这期间会出现一些警告,可去FreeRTOS+CubeMX入门–warning and error中查看
基础配置
择 TIM6 代替 Systick 是因为 FreeRTOS 会占用 Systick,使用其他定时器代替Systick避免不必要的错误
第一个项目-驱动OLED
中断配置
文件 的简单认识
oled驱动改编自江协科技的标准库版本
主函数代码简单分析
#include "FreeRTOS.h"
#include "task.h"
#include "main.h"
#include "cmsis_os.h"
#include "OLED.h"
// 创建任务句柄
osThreadId_t defaultTaskHandle;
// 设置任务参数
const osThreadAttr_t defaultTask_attributes = {
.name = "defaultTask",
.stack_size = 128 * 4,
.priority = (osPriority_t) osPriorityNormal,
};
void StartDefaultTask(void *argument);
void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) one
void MX_FREERTOS_Init(void) {
// 创建任务
defaultTaskHandle = osThreadNew(StartDefaultTask, NULL, &defaultTask_attributes);
}
void StartDefaultTask(void *argument)
{
/* USER CODE BEGIN StartDefaultTask */
OLED_Init();
uint64_t i = 0;
/* Infinite loop */
for(;;)
{
i+=1;
OLED_ShowNum(0,0,i,10,6);
OLED_Update();
osDelay(1000);
}
}
编写业务函数
在默认任务中编写代码