3)添加任务,这里我添加了2个任务(默认配置就行),系统自动生成了一个任务,总共是三个,在Task and Queues中双击默认的任务,系统自动生成了一个名为defaultTask的任务,优先级为osPriorityNormal,占空间大小128words,任务的函数名为StartDefaultTask。
这里我们创建三个led灯延时点亮的任务,我们知道在裸机开发时候这个用延时实现是冲突的,在FREERTOS系统中我们可以创建三个任务,互不干扰。
分别在/* USER CODE END Header_StartDefaultTask */
/* USER CODE END Header_StartTask02 */
/* USER CODE END Header_StartTask03 */
沙箱内
void StartDefaultTask(void *argument)
{
/* USER CODE BEGIN defaultTask */
/* Infinite loop */
for(;;)
{
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_7);//LED2
osDelay(500); //延时500个时钟节拍
}
/* USER CODE END defaultTask */
}
void StartTask02(void *argument)
{
/* USER CODE BEGIN myTask02 */
/* Infinite loop */
for(;;)
{
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_7);//LED1
osDelay(700); //延时700个时钟节拍
}
/* USER CODE END myTask02 */
}
void StartTask03(void *argument)
{
/* USER CODE BEGIN myTask03 */
/* Infinite loop */
for(;;)
{
HAL_GPIO_TogglePin(GPIOG,GPIO_PIN_2);//LED3
osDelay(1000); //延时1000个时钟节拍
}
/* USER CODE END myTask03 */
}
效果
82b26a4874635d6d8cae5b311bb0f4e0
总结:stm32系列发展到u5系列这里已经是比较成熟了,系统的移植相比于其他型号的板子来说便捷的多,还得益于完善的软件生态,此次freertos的移植可以说是一键移植,没有裁剪内核添加删除.h文件等等一系列复杂的操作,任务的创建也是轻松至极,体验非常棒!