硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2424|回复: 1
收起左侧

[有问必答] 关于停机唤醒的疑问?

[复制链接]

1

主题

0

回帖

1

积分

新手上路

积分
1
发表于 2017-11-24 16:21:55 | 显示全部楼层 |阅读模式
void App_EnterStopMode(void)
{
1》OS_CPU_SR  cpu_sr = 0u;
2》SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;  /* 1رÕμÎ′e¶¨ê±Æ÷ */  
               
3》PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);               
               
4》OS_ENTER_CRITICAL();
               
5》SystemInit();
               
6》SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
               
7》OS_EXIT_CRITICAL();
   
8》bsp_LedOn(1);
}
想在空闲任务中添加与钩子函数同级别的一个函数,用来进入停机模式;
停机模式是采用例程中的按键方式进入,按K2键唤醒。
目前是按K2键后程序能执行到8处,但没有任务运行,这是什么原因?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2017-11-24 16:44:43 | 显示全部楼层
把你的这个bsp_LedOn(1);改成bsp_LedToggle就看到效果了。

如果没有高优先级任务就就绪,程序就会一直在空闲任务里面跑的,所以就会出现你点击一下K2按键,就空闲任务就执行下,然后又进入停机模式。

像uCOS-II,停机模式不要放在空闲任务里面搞,如果要空闲任务里面搞的话,弄休眠模式就好。uCOS-II不支持tickless模式。而uCOS-III搞了一个类似tickless的低功耗模式,暂时还没有精力去研究,关于什么是tickless模式,可以学习下我们FreeRTOS教程里面的这部分讲解。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-10 19:27 , Processed in 0.266263 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表