首页 > 其他 > 详细

用STM32CubeMX创建FreeRTOS项目

时间:2015-07-13 10:10:32      阅读:486      评论:0      收藏:0      [点我收藏+]

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

 

2. 测试平台

  keil v5.13.0.0

  cube 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);
    }        
}

 

用STM32CubeMX创建FreeRTOS项目

原文:http://www.cnblogs.com/zhaitao85/p/4642071.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!