你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM8S AWU(活跃停机)功能一打开,过一会儿程序喜欢跑飞

[复制链接]
wgcrdg 提问时间:2013-9-6 15:02 /
问题描述:AWU功能一打开,过一会儿程序喜欢跑飞
                  不打开AWU功能就可以,不知道是哪个地方出了问题!编译器为IAR
#include "stdio.h"
#include  
#include
#define  _NOP()   __no_operation()
#pragma vector = 0X03
__interrupt void AWU_IRQHandler(void)
{
    unsigned char i;
    _NOP();
    i=AWU_CSR1;
    _NOP();
}

void Awu_Init(void)
{
    CLK_ICKR|= 0x08;        //打开LSI时钟
    CLK_PCKENR2 |= 0X04;   //使能AWU时钟
    AWU_APR=0x1e;           //
    AWU_TBR=0x0b;           //
    AWU_CSR1|=0x10;         //AWU使能自动唤醒功能
    CLK_ICKR|= 0x20;         //活跃停机模式(AWU使能情况)下,关闭电压调节器节省功耗
    CLK_ICKR|= 0x04;          //从停机(Halt)或活跃停机(Active Halt)模式快速唤醒使能
    FLASH_CR1 &= ~0x40;   //活跃停机模式下Flash掉电,
}
void main(void)
{
    _NOP();
    Awu_Init();
    _NOP();
    __enable_interrupt();  // 开全局中断
    while (1)
    {
        _NOP();
        __halt();               //低功耗模式(停机)
        _NOP();
    }
}

dianks.rar

下载

22.59 KB, 下载次数: 94, 下载积分: ST金币 -1

收藏 评论15 发布时间:2013-9-6 15:02

举报

15个回答
温柔的武士刀 回答时间:2013-9-16 21:04:27

回复:STM8S AWU(活跃停机)功能一打开,过一会儿程序喜欢跑飞

所有未用的I/O口全部设为上拉输出低电平,把未用的的IO设置成输入试试。
寄存器.pdf (4.6 MB, 下载次数: 370)
回答时间:2013-9-7 12:04:40

回复:STM8S AWU(活跃停机)功能一打开,过一会儿程序喜欢跑飞

 程序跑飞,自己单步,找到跑飞的地方。
dennywang 回答时间:2013-9-8 14:29:46

RE:STM8S AWU(活跃停机)功能一打开,过一会儿程序喜欢跑飞

程序跑飞与芯片功能无关,很多时候是指针非法或访问越界。建议你根据SP指向的内存区,查看栈内数据,找出跑飞位置,然后仔细检查程序。个人调试的一点心得,希望对你有用
wgcrdg 回答时间:2013-9-9 09:19:08

回复:STM8S AWU(活跃停机)功能一打开,过一会儿程序喜欢跑飞

程序单步运行时正常,是走了一会儿后,程序才跑飞的。
堆栈也是正常的,现在只有一个中断,然后是while (1)
    {
        _NOP();
        __halt();               //低功耗模式(停机)
        _NOP();
    }
 
库函数的例程,我也试了,走一段时间后(1到2分钟后),也会跑飞。
dzc2001 回答时间:2013-9-14 15:57:51

RE:STM8S AWU(活跃停机)功能一打开,过一会儿程序喜欢跑飞

库函数的例程如果都能跑飞,可能是你硬件设计上的问题了
wgcrdg 回答时间:2013-9-17 08:57:27

回复:STM8S AWU(活跃停机)功能一打开,过一会儿程序喜欢跑飞

回复第 5 楼 于2013-09-14 15:57:51发表:
库函数的例程如果都能跑飞,可能是你硬件设计上的问题了
硬件问题我也怀疑过,后来我用官方的实验板 STM8-DISCOVERY ,也测试了,还是出现同样的问题,不知道是什么原因。
 
abing-340056 回答时间:2014-6-14 06:43:42

回复:STM8S AWU(活跃停机)功能一打开,过一会儿程序喜欢跑飞

我现在也遇到了这样的情况,你的问题怎么解决的?
ninicaoyuan 回答时间:2014-8-26 09:30:31

回复:STM8S AWU(活跃停机)功能一打开,过一会儿程序喜欢跑飞

mark
ninicaoyuan 回答时间:2015-3-20 17:34:51
同样的问题呀,
拼命三郎 回答时间:2015-3-25 12:48:16
ddddd.png
qinhn 回答时间:2015-4-12 17:53:04
与其他中断冲突,我把其他定时器中断关闭就好了。
zhanglong71 回答时间:2016-5-9 15:32:20
温柔的武士刀 发表于 2013-9-16 21:04
所有未用的I/O口全部设为上拉输出低电平,把未用的的IO设置成输入试试。

这个适当设置后编译通过,在本人的stm8s207上运行符合预期。支持一下
CloseRainOpenFl 回答时间:2016-11-19 15:22:38
zhanglong71 发表于 2016-5-9 15:32
这个适当设置后编译通过,在本人的stm8s207上运行符合预期。支持一下

我就把主函数改了,其他都跟楼主一样,为什么根本不会唤醒:
void main(void)
{
        /*PB5为推挽输出*/
    PB_DDR |= 0x20;  /*xx1x xxxx*/
    PB_CR1 |= 0x20;  /*xx1x xxxx*/
    PB_CR2 &= 0xdf;  /*xx0x xxxx*/
        PB_ODR = 0x20;
    _NOP();
    Awu_Init();
    _NOP();
    __enable_interrupt();  // 开全局中断

    while (1)
    {
                PB_ODR = 0x20;
                asm("HALT");
                _NOP();
                PB_ODR = 0x00;
                asm("HALT");
                _NOP();
    }
}
peter001 回答时间:2016-11-20 11:06:43
标记一下,看看谁能解答
12下一页
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版