用STM32CubeMX创建FreeRTOS项目

1. 目标, PG13,PG14双线程双闪灯。

2. 测试平台

  stm32f429i-disco

  keil v5.13.0.0

  CubeMx 4.8.0

3. 步骤

  3.1 打开cube, PG13,13设为输出, Rcc选外部晶振, 点选FreeRTOS

  3.2 时钟配置界面 enable css, 配置成系统主频168M

  3.3 全部默认设置, 生成代码。 

  3.4 配置好的模版大概是这样的

  

//void StartDefaultTask(void const * argument);

int main(void)
{
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();

    osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128);
    defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);
    osKernelStart();
    while(1);
}

/* StartDefaultTask function */
void StartDefaultTask(void const * argument)
{
    /* USER CODE BEGIN 5 */
    /* Infinite loop */
    for(;;)
    {
        osDelay(1);
    }
    /* USER CODE END 5 */ 
}    

  照猫画虎填上自己代码就行了

void blink_ledG(void const *argument);
void blink_ledR(void const *argument);
main(){
       HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, GPIO_PIN_SET);
    HAL_GPIO_WritePin(GPIOG, GPIO_PIN_14, GPIO_PIN_SET);
    
    
    osThreadDef (ledG, blink_ledG, osPriorityNormal, 0, 128); 
    osThreadDef (ledR, blink_ledR, osPriorityNormal, 0, 128); 
    
    osThreadCreate(osThread(ledG), NULL);
    osThreadCreate(osThread(ledR), NULL);     
     osKernelStart();
      while (1);       
}

void blink_ledG(void const *argument) {
    for(;;){
        HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, GPIO_PIN_SET);
        osDelay(500);
        HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, GPIO_PIN_RESET);
        osDelay(500);    
    }    
}
void blink_ledR(void const *argument) {
    for(;;){
        HAL_GPIO_WritePin(GPIOG, GPIO_PIN_14, GPIO_PIN_SET);
        osDelay(250);
        HAL_GPIO_WritePin(GPIOG, GPIO_PIN_14, GPIO_PIN_RESET);
        osDelay(250);
    }        
}
原文地址:https://www.cnblogs.com/zhaitao85/p/4642071.html