查看: 3322|回复: 3

休眠后系统时钟切换

[复制链接]

6

主题

25

帖子

210

积分

高级工程师

Rank: 3Rank: 3

积分
210
发表于 2022-10-19 19:35:44 | 显示全部楼层 |阅读模式
写的代码太冗余了,导致定时器和代码配合不是很好,想把系统主频调快一点,目前默认的是8M,代码1s从休眠中唤醒一次,如果初始化为16M,那么休眠后还是直接调用初始化的函数吗?
我看了下论坛里的一些帖子,然后对照复旦微的参考历程,还是没弄清楚改怎么配置,还有人说什么调教值,有没有什么明路让我参考下
回复

使用道具 举报

155

主题

847

帖子

4701

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4701
发表于 2022-10-24 09:25:41 | 显示全部楼层
1、休眠 指 单片机暂停了,不执行程序。所以定时器中断设置要在休眠前完成,等时间到了,定时器中断唤醒单片机,让单片机工作0
2、代码太冗余,那就优化下代码。也可以利用编译器c代码优化。开的优化等级越高,代码越小,不过调试的时候可能会感觉程序会跳,应为编译器会把相同代码合并导致。
3、把主频改成16m,一般是这么做的,上电后延时几百ms ,更改主频8m到16m,修改 WKFSEL  bit位使单片机休眠后自动切16M(手册PMU章节里的寄存器)。这样就可以了
回复

使用道具 举报

6

主题

25

帖子

210

积分

高级工程师

Rank: 3Rank: 3

积分
210
 楼主| 发表于 2022-10-25 10:37:44 | 显示全部楼层
顾博文 发表于 2022-10-24 09:25
1、休眠 指 单片机暂停了,不执行程序。所以定时器中断设置要在休眠前完成,等时间到了,定时器中断唤醒单 ...

也就是说在初始化的时候配置为16M之后,那么单片机从休眠中唤醒就默认采用16M的主频,是这个意思吗
回复

使用道具 举报

155

主题

847

帖子

4701

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4701
发表于 2022-10-31 08:39:38 | 显示全部楼层
sigerio 发表于 2022-10-25 10:37
也就是说在初始化的时候配置为16M之后,那么单片机从休眠中唤醒就默认采用16M的主频,是这个意思吗 ...

WKFSEL  bit 要设置才能生效, 而且主频是rchf的情况下
回复

使用道具 举报

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

本版积分规则

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