完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
UCOSII 移植到F0, 因为功耗的原因,系统主频采用8M 内部晶振,无倍频, 先弄了2个灯交替闪烁,发现 启动系统后15秒左右 灯才开始闪,原以为是主频的问题,更换为48M ,发现还是要延迟3秒才能交替工作,统计任务也关闭掉(未使用统计任务),调试中发现进入闪灯任务的OSdelay(100)函数后 可能进行了任务切换,空闲任务的OSIdleCtr 再跳变,约15秒后才能进行正常的闪灯,实在找不到什么原因,大侠们有遇到这个情况吗?
void Start_Task(void* pdata) { OS_CPU_SR cpu_sr; OSDelay_init(); //时钟节拍初始化,函数调用原子delay.c文件 OS_ENTER_CRItiCAL(); OSTaskCreate(LCD_Task, (void *)0, (OS_STK *)&LCD_TASK_STK[LCD_TASK_STK_SIZE - 1], LCD_TASK_PRIO ); OS_EXIT_CRITICAL(); OSTaskSuspend(OS_PRIO_SELF); // OSTaskDel(OS_PRIO_SELF); } void LCD_Task(void* pdata) { while(1) { BACKLIGHT_OFF; OSTimeDly(100); 程序执行到这里后观察空闲任务的计数变量OSIdleCtr,发现快速跳变,一直到15秒后恢复执行下面的代码,之后就正常循环执行while内代码 BACKLIGHT_ON; OSTimeDly(100); } } int main(void) { OS_CPU_SR cpu_sr; Blight_Init(); OSInit(); OS_ENTER_CRITICAL(); OSTaskCreate(Start_Task, (void *)0, (OS_STK *)&START_TASK_STK[START_TASK_STK_SIZE - 1], START_TASK_PRIO ); OS_EXIT_CRITICAL(); OSStart(); return 0; } |
|
相关推荐
2个回答
|
|
|
|
|
|
|
|
|
查查系统工作频率,看看节拍时钟的配置
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1022 浏览 1 评论
1852 浏览 0 评论
1833 浏览 1 评论
3258 浏览 5 评论
3585 浏览 9 评论
1023浏览 1评论
1851浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
1361浏览 1评论
1853浏览 0评论
1179浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 08:46 , Processed in 0.683660 second(s), Total 78, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1132