1. 打开STM32CubeMX
- 我使用的是Version 5.5.0
2. 根据芯片创建工程
- 此处我使用的是stm32f429igt6
3. 配置时钟
- 选择外部时钟
- 配置时钟树
4. 配置串口
5. 配置LED
6. 勾选使用RTOS
- 此处我们选择新版本:CMSIS_V2
- 添加任务
7. 生成工程
- 可能出现以下警告:
其意思就是,当使用了FreeRtos的时候,强烈建议HAL库使用除了Systick以外的时钟源。也就是说当不使用FreeRtos的时候,HAL使用的是systick作为时钟源,现在使用了rtos,不建议hal库和rtos一起使用systick作为时钟源。
- 根据软件的建议,使用定时作为HAL库的时钟源:
- 这里我们使用TIM1作为HAL库的时钟源,点击生成代码时,上边的警告已经不再出现了
8. 测试RTOS是否添加成功
8.1 打开MDK工程
8.2 在freertos.c中添加任务函数
- 引入头文件
/* USER CODE BEGIN Includes */
#include "usart.h"
/* USER CODE END Includes */
- 修改Func1_LED函数
void Func1_LED(void *argument)
{
/* USER CODE BEGIN Func1_LED */
/* Infinite loop */
for(;;)
{
HAL_GPIO_WritePin(GPIOH, GPIO_PIN_10, GPIO_PIN_RESET);
osDelay(100);
HAL_GPIO_WritePin(GPIOH, GPIO_PIN_10, GPIO_PIN_SET);
osDelay(100);
}
- 修改Func2_USART1函数
void Func2_USART1(void *argument)
{
/* USER CODE BEGIN Func2_USART1 */
uint8_t TxData[20]= "usart1 transmit!\n";
/* Infinite loop */
for(;;)
{
HAL_UART_Transmit(&huart1,TxData,20,0xffff);
osDelay(500);
}
/* USER CODE END Func2_USART1 */
}
8.3 编译,下载
- LED灯正常闪烁,同时串口正常发送
移植成功!
CMSIS-RTOS2 API参考:
http://www.keil.com/pack/doc/CMSIS_Dev/RTOS2/html/group__CMSIS__RTOS.html
来源:CSDN
作者:超级大洋葱806
链接:https://blog.csdn.net/u014779536/article/details/104052871