完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
任务的代码我都是在裸机跑过的,完全没问题, 到ucosii 上就GG了 调的好心累啊,求助大神
//START 任务 //设置任务优先级 #define START_TASK_PRIO 10 ///开始任务的优先级为最低 //设置任务堆栈大小 #define START_STK_SIZE 512 //任务任务堆栈 OS_STK START_TASK_STK[START_STK_SIZE]; //任务函数 void start_task(void *pdata); //DHT11采集温湿度 任务 //设置任务优先级 #define DHT11_TASK_PRIO 5 //设置任务堆栈大小 #define DHT11_STK_SIZE 1024 //任务任务堆栈 OS_STK DHT11_TASK_STK[DHT11_STK_SIZE]; //任务函数 void dht11_task(void *pdata); //设置任务优先级 #define MQ2_TASK_PRIO 6 //设置任务堆栈大小 #define MQ2_STK_SIZE 128 //任务任务堆栈 OS_STK MQ2_TASK_STK[MQ2_STK_SIZE]; //任务函数 void mq2_task(void *pdata); //设置任务优先级 #define LCD_MQ2_TASK_PRIO 7 //设置任务堆栈大小 #define LCD_MQ2_STK_SIZE 128 //任务任务堆栈 OS_STK LCD_MQ2_TASK_STK[LCD_MQ2_STK_SIZE]; //任务函数 void lcd_mq2_task(void *pdata); //设置任务优先级 #define WARNING_TASK_PRIO 9 //设置任务堆栈大小 #define WARNING_STK_SIZE 128 //任务任务堆栈 OS_STK WARNING_TASK_STK[WARNING_STK_SIZE]; //任务函数 void warning_task(void *pdata); //火焰检测任务 //设置任务优先级 #define FIRE_TASK_PRIO 8 //设置任务堆栈大小 #define FIRE_STK_SIZE 128 //任务任务堆栈 OS_STK FIRE_TASK_STK[FIRE_STK_SIZE]; //任务函数 void fire_task(void *pdata); //OS_EVENT * MQ2_box = NULL; //MQ2消息邮箱 //OS_FLAG_GRP *Sem_F = NULL; //报警任务所需要的信号量集 //INT8U err ; int main(void) { delay_init(); //延时初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断分组配置 uart_init(115200); //串口波特率设置 LED_Init(); beep_init(); fire_init(); dht11_init(); adc1_init(); LCD_Init(); POINT_COLOR=RED; LCD_ShowString(120,40,260,24,24,"ENVIRONMENTAL MONITOR"); POINT_COLOR= BRRED; LCD_ShowString(180,110,220,24,24,"Ares Xu"); LCD_ShowString(100,180,220,24,24,"temperature :"); POINT_COLOR=BLUE; LCD_ShowString(100,260,220,24,24,"humidity :"); LCD_ShowString(305,260,200,24,24,"% RH"); //湿度的百分号 LCD_ShowString(295,350,200,24,24,"%"); //显示浓度的百分号 LCD_ShowString(150,350,200,24,24,"Air :"); //显示浓度的百分号 LCD_ShowString(295,180,200,24,24,"C"); //显示温度单位 OSInit(); //UCOS初始化 OSTaskCreate(start_task,(void*)0,(OS_STK*)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO); //创建开始任务 OSStart(); //开始任务 } //开始任务 void start_task(void *pdata) { OS_CPU_SR cpu_sr=0; pdata=pdata; OSStatinit(); //开启统计任务 OS_ENTER_CRITICAL(); //进入临界区(关闭中断) OSTaskCreate(dht11_task,(void*)0,(OS_STK*)&DHT11_TASK_STK[DHT11_STK_SIZE -1],DHT11_TASK_PRIO);//创建DHT11任务 // // OSTaskCreate(mq2_task,(void*)0,(OS_STK*)&MQ2_TASK_STK[MQ2_STK_SIZE-1],MQ2_TASK_PRIO);//创建MQ2气敏传感器任务 // // OSTaskCreate(warning_task,(void*)0,(OS_STK*)&WARNING_TASK_STK[WARNING_STK_SIZE-1],WARNING_TASK_PRIO);//创建报警任务任务任 // // OSTaskCreate(fire_task,(void*)0,(OS_STK*)&FIRE_TASK_STK[FIRE_STK_SIZE-1],FIRE_TASK_PRIO);//创建火焰传感器检测任务 // // MQ2_box = OSMboxCreate((void *) 0); //创建MQ2邮箱 // // Sem_F = OSFlagCreate((OS_FLAGS)3,&err); //创建信号量集,初始值为3(00000011) OS_EXIT_CRITICAL(); //退出临界区(开中断) } //OS_CPU_SR cpu_sr=0; //OS_ENTER_CRITICAL(); //进入临界区 //data_B = OSMboxPend(Dt_box,0,&err); //申请消息邮箱 //OS_EXIT_CRITICAL(); //退出临界区 //OSTaskSuspend(OS_PRIO_SELF); //OSTimeDlyHMSM(0,0,1,0); void dht11_task(void *pdata) { u8 temp = 0,humi = 0; OS_CPU_SR cpu_sr=0; pdata = pdata; for(;;) { dht11_get(&temp,&humi); LCD_ShowNum(270,180,temp,2,24); LCD_ShowNum(270,260,humi,2,24); OSTimeDlyHMSM(0,0,1,0); } } |
|
相关推荐
2个回答
|
|
仿真分析看在哪一行进入的hard fault,就好找问题了
|
|
|
|
嗯嗯,只需要执行一遍的任务。执行完不挂起会进入hard fault异常?
|
|
|
|
只有小组成员才能发言,加入小组>>
649 浏览 1 评论
2098 浏览 5 评论
2403 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2160 浏览 6 评论
2142 浏览 7 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
289浏览 9评论
283浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
419浏览 6评论
283浏览 5评论
331浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-3-29 13:59 , Processed in 0.935173 second(s), Total 76, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号