完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include "includes.h"
u8 task; static OS_STK task_led1_stk[TASK_LED1_STK_SIZE]; //定义栈 static OS_STK task_led2_stk[TASK_LED2_STK_SIZE]; //定义栈 void delay(int x) { INT16U i=0; for(;x>0;x--) for(i=100;i>0;i--); } void Task_LED1(void *p_arg) { (void)p_arg; for (;;) { LED1(OFF); delay(10000); LED1(ON); delay(10000); } } void Task_LED2(void *p_arg) { (void)p_arg; for (;;) { LED2(OFF); delay(20000); LED2(ON); delay(20000); } } void startup(void *p_arg) { OS_CPU_SysTickInit(); task=OSTaskCreate(Task_LED1,(void *)0, &task_led1_stk[TASK_LED1_STK_SIZE-1], TASK_LED1_PRIO); task=OSTaskCreate(Task_LED2,(void *)0, &task_led2_stk[TASK_LED2_STK_SIZE-1], TASK_LED2_PRIO); OSTaskDel(OS_PRIO_SELF); //任务建立完成删掉这个任务 } |
|
相关推荐
2个回答
|
|
无法运行多个任务的原因,请检查一下原因:
存在4个问题,修改就可以了 (1)主要是在OSStart();前面缺少下列语句,系统老的时钟中断无任务切换功能: OS_ENTER_CRITICAL(); PC_VectSet(0x08, OSTickISR); PC_SetTickRate(OS_TICKS_PER_SEC); OS_EXIT_CRITICAL(); 的固件版本一直在更新,所以上面的代码仅作参考,只要明白代码所要表达的意思即可。 firmware 的函数中实现的代码如下: void OS_CPU_SysTickInit (void) RCC_ClocksTypeDef rcc_clocks; // 获取系统频率 RCC_GetClocksFreq(&rcc_clocks); // 配置HCLK作为SysTick时钟 SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); if (SysTick_Config((rcc_clocks.HCLK_Frequency / OS_TICKS_PER_SEC) - 1)) //SysTick配置函数 while (1); (2)printf()是DOS服务,不可重入,必须改成可重入的函数,如PC_DispStr()函数,或者写为 OS_ENTER_CRITICAL(); printf("this is App_one,prio=10,Delay 6 second and start againnn"); OS_EXIT_CRITICAL(); 等就可以了。原来的系统自带的那几个test程序,就都没有使用printf()函数。 这个一定要注意。 大部分都是错在这个地方。调用系统函数的时候一定要搞清楚所调用的函数的功能和特性。 (3)另外OSTimeDlyHMSM(0,0,0,3000)是不允许的,要写为OSTimeDlyHMSM(0,0,3,0); 否则认为OSTimeDlyHMSM()参数无效而忽略,任务App_one不延时而长期循环,不切换。 低级错误,不允许出现! (4)因为prio=10,20,30,所以OS_CFG.H中要至少定义 #define OS_LOWEST_PRIO 32 否则某些低优先级任务被认为无效,不参与切换。 配置中注意设置。 |
|
|
|
你的任务里面的延时代码要用系统提供的延时函数,你的延时函数,调度器都没有办法介入吧
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1307 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1234 浏览 3 评论
2313 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1404 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1834 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-30 01:47 , Processed in 0.601956 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号