打印
[STM32F1]

周航慈书的疑惑

[复制链接]
1010|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Cjy_JDxy|  楼主 | 2017-9-15 10:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ST, LED, os, TI, pd
本帖最后由 Cjy_JDxy 于 2017-9-15 10:37 编辑

工作中用到实时多任务UCOSII,所以买了一本周航慈的《基于嵌入式实时操作系统的程序设计技术》。
书里第19页有一个例子。我用的开发板是STM32的,仿照那个例子做实验。
那个例子没有创建启动任务,我感觉很奇怪。我仿照那个实验坐下来。
本来书上是一个闪灯,一个蜂鸣器鸣叫。我改成两个LED闪烁。
可是只有一个灯闪。
程序如下:
int main(void)
{        
        delay_init();                     //ÑÓʱº¯Êý³õʼ»¯        
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// ÉèÖÃÖжÏÓÅÏȼ¶·Ö×é2
        LED_Init();                          //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú
        OSInit();   
         //OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO );//´´½¨ÆðʼÈÎÎñ
        OSTaskCreate(led0_task,(void *)0,&stkLed0Task[sizeof(stkLed0Task)/4-1],4);
         OSTaskCreate(led1_task,(void *)0,&stkLed1Task[sizeof(stkLed1Task)/4-1],4);
         OSStart();        
}

         
//¿ªÊ¼ÈÎÎñ
void start_task(void *pdata)
{
    OS_CPU_SR cpu_sr=0;
        pdata = pdata;
          OS_ENTER_CRITICAL();                        //½øÈëÁÙ½çÇø(ÎÞ·¨±»Öжϴò¶Ï)   
         OSTaskCreate(led0_task,(void *)0,(OS_STK*)&LED0_TASK_STK[LED0_STK_SIZE-1],LED0_TASK_PRIO);                                                   
         OSTaskCreate(led1_task,(void *)0,(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],LED1_TASK_PRIO);                                            
        OSTaskSuspend(START_TASK_PRIO);        //¹ÒÆðÆðʼÈÎÎñ.
        OS_EXIT_CRITICAL();                                //Í˳öÁÙ½çÇø(¿ÉÒÔ±»Öжϴò¶Ï)
}

//LED0ÈÎÎñ
void led0_task(void *pdata)
{                 
        pdata=pdata;
        
        while(1)
        {
                LED0=0;
                OSTimeDly(OS_TICKS_PER_SEC/4);
                //delay_ms(80);
                LED0=1;
                //delay_ms(920);
                OSTimeDly(OS_TICKS_PER_SEC/4);
        };
}

//LED1ÈÎÎñ
void led1_task(void *pdata)
{         
        pdata=pdata;
        while(1)
        {
                LED1=0;
                //delay_ms(300);
                OSTimeDly(OS_TICKS_PER_SEC/4);
                LED1=1;
                //delay_ms(300);
                OSTimeDly(OS_TICKS_PER_SEC/4);
        };
}请高手指教,谢谢!







沙发
戈卫东| | 2017-9-15 11:12 | 只看该作者
放断点跑跑看?

使用特权

评论回复
板凳
feelhyq| | 2017-9-15 11:19 | 只看该作者
        OSTaskCreate(led0_task,(void *)0,&stkLed0Task[sizeof(stkLed0Task)/4-1],4);
         OSTaskCreate(led1_task,(void *)0,&stkLed1Task[sizeof(stkLed1Task)/4-1],4);


UCOS II 不支持同级别的优先级,请将其中一个优先级改成 5 或者别的。

使用特权

评论回复
地板
Cjy_JDxy|  楼主 | 2017-9-15 11:33 | 只看该作者
feelhyq 发表于 2017-9-15 11:19
OSTaskCreate(led0_task,(void *)0,&stkLed0Task,4);
         OSTaskCreate(led1_task,(void *)0, ...

谢谢!搞好了

使用特权

评论回复
5
feelhyq| | 2017-9-15 12:15 | 只看该作者

结帖光荣

使用特权

评论回复
6
mmuuss586| | 2017-9-15 13:31 | 只看该作者

参考原子的资料,很详细的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:绿水本无忧因风皱面,青山原不老为雪白头。

553

主题

3530

帖子

19

粉丝