CubeMX+FreeRTOS点灯

一、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半秒翻转一次电平

 

posted @ 2022-12-15 12:23  Yoku  阅读(407)  评论(0)    收藏  举报