完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
从网上找的ucos移植到51单片机的实例,然后自己修改练手。新建了两个简单的任务,目的是完成led1每秒闪一次,led2每2秒闪一次,具体程序如下:#include "includes.h"
void TaskLed1(void *ppdata) reentrant; void TaskLed2(void *ppdata) reentrant; OS_STK TaskLedStk1[MaxStkSize]; OS_STK TaskLedStk2[MaxStkSize]; void main(void) { OSInit(); OSTaskCreate(TaskLed1, (void *)0, &TaskLedStk1[0],5); OSTaskCreate(TaskLed2, (void *)0, &TaskLedStk2[0],6); OSStart(); } void TaskLed1(void *ppdata) reentrant { for(;;){ P1_5=!P1_5; OStimeDlyHMSM(0,0,1,0); } } void TaskLed2(void *ppdata) reentrant { for(;;){ P1_6=!P1_6; OSTimeDlyHMSM(0,0,2,0); } } |
|
相关推荐
11个回答
|
|
没有初始化定时器,没有开启定时器中断,任务怎么会切换?
|
|
|
|
木有初始化时钟定时器
|
|
|
|
InitTimer0();在task1的循环前要执行的
|
|
|
|
void TaskQ1(void *qdata) reentrant { INT8U err; qdata = qdata; InitTimer0(); mySem = OSSemCreate(5); mySem1 = OSSemCreate(0); for(;;) { 。。。。。 } } |
|
|
|
void InitTimer0(void) reentrant
{ TMOD=TMOD&0xF0; TMOD=TMOD|0x01; //模式1(16位定时器),仅受TR0控制 TH0=0x70; //定义Tick=50次/秒(即0.02秒/次) TL0=0x00; //OS_CPU_A.ASM 和 OS_TICKS_PER_SEC ET0=1; //允许T0中断 TR0=1; } |
|
|
|
|
|
|
|
|
|
|
|
没有系统定时器的初始化。
|
|
|
|
|
|
|
|
看了 没什么用。。。。。。。。。。。。。。。。。。。。
|
|
|
|
你初始化的东西都没有吗?
|
|
|
|
只有小组成员才能发言,加入小组>>
UCOSII中断中添加OSSemPost(Sem);程序无法运行
4979 浏览 1 评论
在BC5.0上编译uC/OS-II出现"eeror writing object file",怎样处理???
3193 浏览 1 评论
560浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 01:43 , Processed in 0.721973 second(s), Total 70, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号