打印
[STM8]

AWU有多坑?

[复制链接]
1590|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ni, TE, ST, syste, pi
ST的参考手册果然只是用来参考的,不能拿来写驱动程序。这是活跃停机模式的部分验证代码:
void Awu_Init(void)
{
    /* Check parameter */

        AWU_CSR1_AWUEN=1;
        AWU_TBR_AWUTB=0x0C;
        AWU_APR=0x20;
}

void main()
{
        SystemInit();/*内包含时钟、GPIO、AWU初始化函数*/

        while (1)
        {
                PB_ODR = 0x20;
                asm("HALT");
                PB_ODR = 0x00;
                asm("HALT");
        }
}

简单的几个配置,折腾了我两个晚上,结果还是呵呵,不能唤醒。
沙发
紫阳真人|  楼主 | 2016-11-19 16:15 | 只看该作者
后来加了这样一段程序:

#pragma vector=0x03
__interrupt void AWU_IRQHandler(void)
{
        asm("sim");//关中断
        unsigned char temp;
        temp=AWU_CSR1;//读 AWU_CSR 寄存器,清中断标志
        asm("rim"); //开中断
}
我初始化的时候连asm("rim"); 都没写,居然OK了。看来我还是图样,看问题图森破。

使用特权

评论回复
板凳
aozima| | 2016-11-19 16:31 | 只看该作者
没看明白楼主想表达什么?

不能唤醒的原因是什么?
怎么处理才能唤醒?

使用特权

评论回复
地板
紫阳真人|  楼主 | 2016-11-19 17:47 | 只看该作者
aozima 发表于 2016-11-19 16:31
没看明白楼主想表达什么?

不能唤醒的原因是什么?

正确唤醒通过循环0.5S亮灯0.5S灭灯来体现。开始没有写中断服务函数,始终不闪灯,后来加上去,即使没有开总中断,唤醒时也会进入中断函数,正常闪灯。
我的问题点在于:不开中断允许也能进入中断函数是为什么?或者整个操作过程或者说实验方法有什么不妥?

使用特权

评论回复
5
aozima| | 2016-11-19 18:14 | 只看该作者
1. AWU其实也属于中断?不开中断所以不会唤醒。(猜测)
2. 开了中断,但不写ISR(不写有默认的),那么中断状态不会被清,所以一直重复进ISR。

使用特权

评论回复
6
紫阳真人|  楼主 | 2016-11-19 18:26 | 只看该作者

1、它是中断源,但是我没写asm("rim");也能发生中断,这是问题所在;
2、基本同意。

使用特权

评论回复
7
huangcunxiake| | 2016-11-19 19:43 | 只看该作者
有点糊涂了。

使用特权

评论回复
8
robter| | 2016-11-20 12:18 | 只看该作者
没看明白楼主的意思

使用特权

评论回复
9
567| | 2016-11-20 13:15 | 只看该作者
STM8确实有很多自作聪明的地方,却带来很多不利的方面。
反常规设计,不能用常规思维来理解。

尤其是用其它MCU多年后,转用STM8,它的参考手册又说的不明不白,常常理解不了它硬件的真实机制。

使用特权

评论回复
10
紫阳真人|  楼主 | 2016-11-20 19:15 | 只看该作者
robter 发表于 2016-11-20 12:18
没看明白楼主的意思

或许是某些概念我理解错了,如能发现还请不吝赐教

使用特权

评论回复
11
紫阳真人|  楼主 | 2016-11-20 19:16 | 只看该作者

或许是某些概念我理解错了,如能发现还请不吝赐教

使用特权

评论回复
12
asimo2010| | 2017-4-21 15:49 | 只看该作者
asm("HALT"); 里自带asm("rim");

使用特权

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

本版积分规则

个人签名:必须有所突破

75

主题

525

帖子

9

粉丝