1.整体思路图
2.keil5中配置
当将宏定义configUSE_TICKLESS_IDLE配置为1时且系统运行满足以下两个条件时,系统内核会自动的调用低功耗宏定义函数portSUPPRESS_TICKS_AND_SLEEP()。 1.当前空闲任务正在运行,所有其它的任务处在挂起状态或者阻塞状态。 2. 只有当系统可运行于低功耗模式的时钟节拍数大于等于这个参数时,系统才可以进入到低功耗模式。默认配置为2,我们自定义时一定不能小于2
这个函数被空闲任务调用,是低功耗tickless的关键
3.滴答定时器频率与系统主频的关系
实时操作系统一般都是采用滴答定时器做系统时钟,一个是系统主频,另一个是系统主频的八分频,默认的port.c移植文件中是用的系统主频。
1.SysTick滴答定时器时钟源选择系统主频 2.SysTick滴答定时器时钟源选择系统主频的八分频 这个地方由72000000/8=9000000即可。
4.系统进入停机模式
介绍两个函数
configPRE_SLEEP_PROCESSING( xExpectedIdleTime )
configPOST_SLEEP_PROCESSING( xExpectedIdleTime ) 函数被调用在
1.configPRE_SLEEP_PROCESSING( xExpectedIdleTime ) 执行低功耗模式前,用户可以在这个函数里面关闭外设时钟来进一步降低系统功耗。 设置其它低功耗方式也是在这个函数里面,用户只需设置参数xExpectedIdleTime=0即可屏蔽掉默认的wfi指令执行方式。 因为退出这个函数后会通过if语句检测此参数是否大于0,配置好其它低功耗模式后,设置参数 xExpectedIdleTime = 0即可,但切不可将此参数随意设置为0以外的其它数值。
2.configPOST_SLEEP_PROCESSING ( xExpectedIdleTime ) 退出低功耗模式后,此函数会得到调用,之前在configPRE_SLEEP_PROCESSING里面关闭的外设时钟,可以在此函数里面重新打开,让系统恢复到正常运行状态。
5.低功耗注意要点
1.用户需要根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。可以使用的低功耗方式有睡眠模式,待机模式,停机模式。 2.选择了低功耗方式后就是关闭可以关闭的外设时钟。 3 . 降低系统主频。 4 . 注意I/O的状态。 如果此I/O口带上拉,请设置为高电平输出或者高阻态输入。 如果此I/O口带下拉,请设置为低电平输出或者高阻态输入。 i. 在睡眠模式下,所有的I/O引脚都保持它们在运行模式时的状态。 ii. 在停机模式下,所有的I/O引脚都保持它们在运行模式时的状态。 iii. 在待机模式下,所有的I/O引脚处于高阻态,除了以下的引脚:复位引脚(始终有效)。当被设置为防侵入或校准输出时的TAMPER引脚。被使能的唤醒引脚 5 . 注意I/O和外设IC的连接。 6 .测低功耗的时候,一定不要连接调试器,更不能边调试边测电流。
总结
跟着这个博主学习的-很厉害的 点个赞呗!
|