打印
[STM8]

STM8S使用AWU的一点问题反馈与确认

[复制链接]
4756|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zdaly|  楼主 | 2015-3-13 11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在使用STM8S105进行开发时,使用AWU功能,参考Datasheet描述如下:
为了使用AWU功能,按顺序执行如下步骤:
1. 使用AWU_CSR寄存器的MSR位和TIM3的输入捕捉通道1来检测LS的时钟频率;
2. 通过写AWU_APR的APR[5:0]位来定义适当的预分频值;
3. 通过写AWU_TBR的AWUTB[3:0]来选择需要的自动唤醒延时;
4. 置位AWU_CSR 的AWUEN位;
5. 执行HALT指令。

与之相符的代码为:
    AWU_Init(AWU_TIMEBASE_12S);
    AWU_Cmd(ENABLE);

    halt();
但是按照上述描述,无法进行AWU的自动唤醒,需要修改为如下代码:
    AWU_Cmd(ENABLE);
    AWU_Init(AWU_TIMEBASE_12S);

    halt();

能进行正常的AWU自动唤醒,发出来以供遇到相同问题的朋友参考,如果觉得有异议,也可以来讨论讨论,谢谢。


沙发
wj19900703| | 2015-3-14 01:47 | 只看该作者
废话,你仔细看stm8s库里面对 AWU_Cmd(ENABLE);
    AWU_Init(AWU_TIMEBASE_12S);的说明,你就知道为什么了

使用特权

评论回复
板凳
zdaly|  楼主 | 2015-3-14 09:11 | 只看该作者
wj19900703 发表于 2015-3-14 01:47
废话,你仔细看stm8s库里面对 AWU_Cmd(ENABLE);
    AWU_Init(AWU_TIMEBASE_12S);的说明,你就知道为什么了 ...

所以说Datasheet和库里说的存在出入,如果有阅读Datasheet进行调试的,在这里会遇到问题。

使用特权

评论回复
地板
zdaly|  楼主 | 2015-3-14 09:19 | 只看该作者
查阅了STM8S的库文件,对“void AWU_Cmd(FunctionalState NewState)”的说明是“Initialisation of AWU and LS RC calibration must be done before.”,同样是说“AWU_Cmd(ENABLE)”之前要进行“AWU_Init(AWU_TIMEBASE_12S)”的动作。

使用特权

评论回复
5
zdaly|  楼主 | 2015-3-14 09:19 | 只看该作者
wj19900703 发表于 2015-3-14 01:47
废话,你仔细看stm8s库里面对 AWU_Cmd(ENABLE);
    AWU_Init(AWU_TIMEBASE_12S);的说明,你就知道为什么了 ...

您再看看你的库文件,上面是如何说明的。

使用特权

评论回复
6
769854714| | 2016-4-1 10:51 | 只看该作者
本帖最后由 769854714 于 2016-4-1 10:53 编辑

我用的STM8L101  怎么设置都唤醒不了  不知道哪里问题郁闷  AWUEN前面和后面放都不行

使用特权

评论回复
7
紫阳真人| | 2016-11-18 22:50 | 只看该作者
省略第一步检测时钟可以吗,我用寄存器操作的,
AWU_CSR1_AWUEN=1;
AWU_TBR_AWUTB=0x0C;
AWU_APR=0x20;
asm("HALT");
一点用都没有

使用特权

评论回复
8
dutxy| | 2018-5-13 09:58 | 只看该作者
紫阳真人 发表于 2016-11-18 22:50
省略第一步检测时钟可以吗,我用寄存器操作的,
AWU_CSR1_AWUEN=1;
AWU_TBR_AWUTB=0x0C;

AWU_APR是不是要根据0x20查表吧,是不是应该写成1E

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:极简主义

18

主题

419

帖子

0

粉丝