一、CubeMX配置
1、选择时钟源,选择TIM1,网上推荐freertos使用除systick以外的timebase,网上找到的原因是防止高于systick优先级的服务调用HAL_Delay(),导致服务无法返回。
2、选择“FREERTOS” “CMSIS_V1” ,CMSIS_V1 和CMSIS_V2在MDK调试中起到不同作用
3、选择Tasks and Queues(任务与队列,用于配置任务体以及消息队列)。
创建了一个新任务,2个任务改了
Task Name(任务名称,保存在 TCB 结构体中,设置时自己起名字)
Entry Function(任务实体,任务的运行函数名)
4、将P0、P1设置IO口输出模式
二、代码
/* USER CODE END Header_StartTask01_LED */ void StartTask01_LED(void const * argument) { /* USER CODE BEGIN 5 */ /* Infinite loop */ for(;;) { HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0); osDelay(1000); } /* USER CODE END 5 */ } /* USER CODE BEGIN Header_StartTask02_LED */ /** * @brief Function implementing the myTask01_LED thread. * @param argument: Not used * @retval None */ /* USER CODE END Header_StartTask02_LED */ void StartTask02_LED(void const * argument) { /* USER CODE BEGIN StartTask02_LED */ /* Infinite loop */ for(;;) { HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1); osDelay(500); } /* USER CODE END StartTask02_LED */ }
三、现象
PB0一秒翻转一次电平,PB0半秒翻转一次电平
标签:CODE,LED,FreeRTOS,点灯,void,StartTask02,USER,CubeMX,GPIO From: https://www.cnblogs.com/CC-C/p/16984634.html