历史上的今天
今天是:2024年12月11日(星期三)
2019年12月11日 | uCos 没有延时Tick滴答定时器测试
2019-12-11 来源:eefocus
原来学uCos只是表面,今天才发现uCos没有心跳也是可以活的,只是延时功能。 即:OSTimeDly、OSTimexxx 头的功能不能使用。
如果有是用OSTimexxx,任务将会卡死。其实,OSTimeDly 功能就是延时指定时间再唤醒任务。延时过程中任务是挂起状态,时间到后,等待高任务运行完后在运行。下面测试不开cpu硬件定时器情况下的程序:
//Task0由 MainTask建立,优先级为2
void Task0 (void *pArg)
{
pArg = pArg;
while(1)
{
GPIOB->ODR &= ~GPIO_Pin_14;
OSTaskSuspend(2); //Task0挂起
}
}
//Task0由 Main()建立,优先级为3
void MainTask (void *pArg)
{
pArg = pArg;
// OS_CPU_SysTickInit();
OSSetupTask(Task0, 2);
while(1)
{
GPIOB->ODR &= ~GPIO_Pin_14;
OSTaskResume(2); //唤醒Task0
}
}
用户程序一共两个任务,Task0 优先于MainTask,Task0运行完后挂起让出CPU,MainTask接运行,完后唤醒Task0,Task0运行完后挂起让出CPU,如此循环调度。
这说明在没有硬件定时器支持情况下,且不用OSTime功能,uCos也是能运行的。
史海拾趣
|
在读startup.s的代码时碰到几句像下边的语句 add r0, pc, #MEMCTRLTAB - (. + 8) add r11, pc, #g_oalAddressTable - (. + 8) 这里边的(. + 8)是 ...… 查看全部问答> |
|
因為沒有GPIB接口的線,所以我用RS232線代替 MSComm1.Settings = \"9600,n,7,1\" If MSComm1.PortOpen True Then MSComm1.PortOpen = True End If MSComm1.Output =\"*RST\" strinput = MSComm1.Input T ...… 查看全部问答> |
|
兄弟们,推荐一款\"IC刷卡模块\",能接在s3c2440开发板(预装WinCE5.0),即ARM9做控制。 1. IC刷卡模块一般用什么接口与s3c2440开发板连接; 2. 请给出产品连接或产品名; 3. 哪位兄才做过刷卡考勤的,能否给点思路或资料(重分)。 谢谢!… 查看全部问答> |
|
之前学习51的基础(如果是指熟悉寄存器和基本编程的话),那算是差不多了。 于是开始正儿八经考虑选一款什么芯片用。 前不久让MSP430刺激了,可是这玩意不好弄,价格也贵。而且不熟。 然后调转枪头,看51,知道了很强大的C8051F,可是,它貌似也 ...… 查看全部问答> |
|
选择QEMU是因为QEMU开源、比较完备,支持的种类多,开发社区也活跃而用QEMU来调试一些东西也非常方便。如何编译最新版的QEMU(当前是0.14.0 rc1)下载QEMU 0.14.0 rc1版本后,如果是在linux下,按照通常的源程序,./configure --target-list=arm-so ...… 查看全部问答> |
|
今天面试闹的一个让我苦笑不得的大笑话,老总,问我什么是TTL电平,什么是CMOS电平,它们有什么区别? 我紧张到考都不用考虑就说:TTL就是0和1;当时老总笑了,我回答过后才发现自己才胡扯,真的弄的我苦笑不得呀,这是最基本的,平常没注意这些 ...… 查看全部问答> |
|
迅雷下载地址: http://downloads.ti.com/download ... baf395a2d4f99e5d518… 查看全部问答> |




