历史上的今天
今天是:2025年02月06日(星期四)
2021年02月06日 | STM8电源模式管理及功耗控制
2021-02-06 来源:eefocus
一、功耗控制调整
1、硬件功能调整

2、软件功能调整

3.经验
3.3V供电比5V更省电
HSI比HSE更省电
晶振频率越低越省电
读写RAM比FLASH更省电
片上资源会影响功耗,不用的应该用PCG功能关掉。

二、电源管理

怎么进入模式?
进入等待模式:asm("WFI");
进入活跃停机模式:asm("HALT"); //开启AWU再执行此句会进入活跃停机
进入停机模式:asm("HALT"); //没有开启AWU再执行此句会进入停机
三、自动唤醒AWU结构和配置
自动唤醒单元用于单片机活跃停机模式,
1、时钟源
AWU可以选用两个时钟源:LSI和HSE
通过选项字节OPT4中的“CKAWUSEL”位来选择:
置0 ==》LSI (默认);
置1 ==》HSE。
2、时钟源分频系数
通过选项字节OPT4中的“PRSC[1:0]”位来选择:

通过1、2步的设置得到1个粗略的时钟LS
3、修正时钟频率(不常用)
使用AWU_CSR控制/状态寄存器中的“MSR”位和TIM3或者TIM1的输入捕捉通道1来检测LS的时钟频率,发现误差则通过重新配置异步预分频器AWU_APR中的APR[5:0]来进行定时时间修正。

4、配置异步预分频器
配置异步预分频器AWU_APR中的APR[5:0]来配置适当的分频值
APR :预分频系数


5、写时基选择寄存器
写时基选择寄存器AWU_TBR中的AWUTB[3:0]来选择需要的自动唤醒延时间隔
AWUTB: 时间间隔


到底该怎么设置??
参考这张表:

比如:我们想设置6ms定时,则查表可得:AWUTB=0101
根据计算公式:3秒=

其中fLS=128000,则可以计算出:APR=48
再查APR表

确定APR应赋值2E
6、控制位使能
置位控制/状态寄存器(AWU_CSR)的AWUEN位

7、执行HALT命令进入活跃停机
asm("HALT");
四 具体操作如下
① 开启LSI,同时设置快速唤醒功能,此两个功能都在CLK_ICKR寄存器中.
CLK_ICKR|=0x0C; //打开LSI时钟,从活跃停机模式快速唤醒使能
② 确定FLASH进入活跃停机后是否掉电
FLASH_CR1&=0x0B; //活跃停机模式下Flash不掉电
③ 设置预分频值
AWU_APR=0x26; //配置预分频值
④ 设置AWU唤醒时间间隔
AWU_TBR=0x0C; //配置AWU唤醒时间间隔
⑤ 使能AWU
AWU_CSR1|=0x10; //使能“AWUEN”启动AWU
⑥ 进入活跃停机模式
asm("HALT");
⑦ 如果写了活跃停机的唤醒中断,会在醒来时触发,所以应该写一个中断响应函数
#pragma vector=3
__interrupt void AWU_IRQHandler(void)//自动唤醒AWU中断函数
{
//此处写中断响应函数
AWU_CSR1|=0x10;//继续使能AWU
//asm("HALT");
}
可以把前几步写作一个初始化函数:AWU_init()
void AWU_init(void)
{
CLK_ICKR|=0x0C; //打开LSI时钟,从活跃停机模式快速唤醒使能
FLASH_CR1&=0x0B; //活跃停机模式下Flash不掉电
AWU_APR=0x26; //配置预分频值
AWU_TBR=0x0C; //配置AWU唤醒时间间隔
AWU_CSR1|=0x10; //使能“AWUEN”启动AWU
}
史海拾趣
|
WINCE bootloader "unresolved external symbol" 问题,求高手帮解决 打印错误提示如下: BUILD: [00:0000000069:PROGC ] Linking \\WINCE500\\PLATFORM\\SMDK2450\\src\\Bootloader_update\\Eboot_boot\\ directory. BUILD: [01:0000000077:PROGC ] Linking E:\\WINCE500\\platform\\smdk2450\\target\\ARMV4I\\ret ...… 查看全部问答> |
|
关于wince50下申请中断号KernelIoControl 各位高手: 情况是这样的:我用WINCE42的BSP升级到WINCE50,现在做一个SDIO的驱动,但是总是中断进不去,后来通过调试信息发现kernelIoControl(....)申请的中断号不知道是多少,总之是失败了 dwSDIOIrq = pHardwareContext->dwSD ...… 查看全部问答> |
|
Vxworks系统在嵌入式ARM(s3c2410\\pxa270 等)芯片上的移植,目前做的人比较少,希望从帖子发出来后能够凝聚一群做这方面的朋友。让我们一起努力吧!… 查看全部问答> |
|
我看了附带的SCH文件 发现4X4的按键模块里,如果我要给按键K1分配管脚,怎么分配?set_location_assignment 多少?sch如下图。另问:如果我想显示4位数字,如何在开发板上的74HCT138译码器锁住同时显示4个数码管?小弟在此谢过了 数码管的 … 查看全部问答> |
|
神马iPhone、iPad已经过时了!看看瑞典人设计的超酷的iGadget吧 本帖最后由 jameswangsynnex 于 2015-3-3 19:58 编辑 瑞典的设计公司CHN在日内瓦召开的CNET EURO发布了一个超酷的产品,在其展示短片中,iGadget系列产品展示了其轻薄的特性和客伸缩的优越功能,产品支持wifi无限网络,可以随意浏览新闻并支持照片 ...… 查看全部问答> |
|
本帖最后由 dontium 于 2015-1-23 13:33 编辑 数组如何传递? 比如int vadd(int n,int a[],int b[]) a+=b,a & b 均有n个元素 n传输到寄存器A里面了 那么栈中的a,b呢? 是地址吗? 如何获取地址以及数组元素? 请大虾指点 谢 ...… 查看全部问答> |
|
【电子书】 The Definitive Guide to the Cortex-m3_2nd Edition replyreload += \',\' + 1185985;这是一本为那些对 ARM Cortex-M3 感兴趣的硬件工程师和软件工程师而写的书。尽管 Cortex-M3 技术参考手册 (TRM)和 ARMv7 架构应用手册都已经提供了很详细的信息,但是由于它们都太专业了,所以看起来很困难。而《 ...… 查看全部问答> |
|
刚装了CCS5.5,怎么用不了HALCoGen了?? 在代码生成器里生成project之后,直接与CCS的project目录重叠,怎么光出错啊?? 显示找不到文件什么的。。… 查看全部问答> |




