微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 在STM32跑的ucos2程序编译过了,但是指示灯就是不亮

在STM32跑的ucos2程序编译过了,但是指示灯就是不亮

时间:10-02 整理:3721RD 点击:
把ucos一直到Stmcu2上,验证一个多任务的流水灯程序,但是指示灯就是不亮
UCOS的内核是在官网下载对应的
求解释



  1. int main(void)

  2. {

  3. #if (OS_TASK_NAME_EN > 0)

  4.     CPU_INT08U  err;

  5. #endif





  6.     BSP_IntDisAll();                                            /* Disable all interrupts.                              */



  7.     OSInit();                                                   /* Initialize "uC/OS-II, The Real-Time Kernel"          */



  8.     OSTaskCreateExt((void (*)(void *)) AppTaskStart,           /* Create the start task                                */

  9.                     (void           *) 0,

  10.                     (OS_STK         *)&AppTaskStartStk[APP_CFG_TASK_START_STK_SIZE - 1],

  11.                     (INT8U           ) APP_CFG_TASK_START_PRIO,

  12.                     (INT16U          ) APP_CFG_TASK_START_PRIO,

  13.                     (OS_STK         *)&AppTaskStartStk[0],

  14.                     (INT32U          ) APP_CFG_TASK_START_STK_SIZE,

  15.                     (void           *) 0,

  16.                     (INT16U          )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR));



  17. #if (OS_TASK_NAME_EN > 0)

  18.     OSTaskNameSet(APP_CFG_TASK_START_PRIO, "Start", &err);

  19. #endif



  20.     OSStart();                                                  /* Start multitasking (i.e. give control to uC/OS-II)   */



  21.     return (1);

  22. }







  23. static  void  AppTaskStart (void *p_arg)

  24. {

  25.     CPU_INT32U  cpu_clk_freq;

  26.     CPU_INT32U  cnts;





  27.    (void)p_arg;



  28.     BSP_Init();                                                 /* Initialize BSP functions                             */

  29.     CPU_Init();                                                 /* Initialize the uC/CPU services                       */



  30.     cpu_clk_freq = BSP_CPU_ClkFreq();                           /* Determine SysTick reference freq.                    */

  31.     cnts         = cpu_clk_freq                                 /* Determine nbr SysTick increments                     */

  32.                  / (CPU_INT32U)OS_TICKS_PER_SEC;



  33.     OS_CPU_SysTickInit(cnts);                                   /* Init uC/OS periodic time src (SysTick).              */



  34.     Mem_Init();                                                 /* Initialize memory managment module                   */

  35.     Math_Init();                                                /* Initialize mathematical module                       */





  36. #if (OS_TASK_STAT_EN > 0)

  37.     OSStatInit();                                               /* Determine CPU capacity                               */

  38. #endif



  39.     APP_TRACE_DBG(("\n\n\r"));

  40.     APP_TRACE_INFO(("Creating Application Events...\n\r"));

  41.     AppEventCreate();                                          /* Create Application Events                            */



  42.     APP_TRACE_INFO(("Creating Application Tasks...\n\r"));

  43.     AppTaskCreate();                                           /* Create application tasks                             */







  44.         OSTaskCreate( Task0,                                                                                //任务1

  45.                           (void          * ) 0,                                                        //不带参数

  46.                           (OS_STK        * )&Task0Stk[128 - 1],                        //堆栈指针

  47.                           (INT8U           ) 5                                                        //优先级

  48.                          );

  49.         

  50.         OSTaskCreate( Task1,                                                                                //任务2

  51.                           (void          * ) 0,                                                        //不带参数

  52.                           (OS_STK        * )&Task1Stk[128 - 1],                                            

  53.                            (INT8U           ) 6                                                        //优先级

  54.                          );





  55.         for(;;)

  56.         {



  57.                 BSP_LED_On(2);

  58.         OSTimeDlyHMSM(0, 0, 0, 500);                            /* Delay for 100 milliseconds                           */

  59.         

  60.                 BSP_LED_Off(2);

  61.         OSTimeDlyHMSM(0, 0, 0, 500);                            /* Delay for 100 milliseconds                           */



  62.         }







  63. }



  64. void Task0(void *p_arg)

  65. {

  66.         for(;;)

  67.         {



  68.                 BSP_LED_On(3);

  69.         OSTimeDlyHMSM(0, 0, 0, 100);                            /* Delay for 100 milliseconds                           */



  70.                 BSP_LED_Off(3);

  71.         OSTimeDlyHMSM(0, 0, 0, 100);                            /* Delay for 100 milliseconds                           */



  72.         }

  73. }



  74. void Task1(void *p_arg)

  75. {

  76.         for(;;)

  77.         {



  78.                 BSP_LED_On(4);

  79.         OSTimeDlyHMSM(0, 0, 0, 200);                            /* Delay for 100 milliseconds                           */



  80.                 BSP_LED_Off(4);

  81.         OSTimeDlyHMSM(0, 0, 0, 200);                            /* Delay for 100 milliseconds                           */



  82.         }

  83. }

复制代码

请大侠指点哈,看看是什么问题

问题解决了没哦?这样的东西,第一步先排除硬件有没问题,如果是买的学习板子一般没问题,其实就是看看软件寄存器是否配置好了。还有像灯闪烁,最好延时1s左右,太短了看不到效果,人眼无法感觉

是硬件配置的问题 刚开始初始化的时候出现了问题 控制LED的管脚并没有被正确的初始化 更改以后就好了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top