问题描述: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
从零开始操作STM8寄存器(风驰iCreate奉献)
【中文资料】初学STM8库函数的中文帮助软件
绝对经典的中文STM8学习手册,淘宝上学习板资料,友情大放送!
【原创教程】风驰iCreate独家开源STM8 27个例程和10多万字的pdf教程
STM8的LCD1602 4线驱动,为什么不工作
【精华资料】由零开始开发STM8
STM8S 的触摸库是如何在主程序中查询键的呢、
【精华资料】STM8的C语言编程1-14讲完整版
【精品教程】STM8系列单片机入门教程系列
STM8 第一次进中断不准【悬赏问答】
回复:STM8S AWU(活跃停机)功能一打开,过一会儿程序喜欢跑飞
回复:STM8S AWU(活跃停机)功能一打开,过一会儿程序喜欢跑飞
RE:STM8S AWU(活跃停机)功能一打开,过一会儿程序喜欢跑飞
回复:STM8S AWU(活跃停机)功能一打开,过一会儿程序喜欢跑飞
堆栈也是正常的,现在只有一个中断,然后是while (1)
{
_NOP();
__halt(); //低功耗模式(停机)
_NOP();
}
库函数的例程,我也试了,走一段时间后(1到2分钟后),也会跑飞。
RE:STM8S AWU(活跃停机)功能一打开,过一会儿程序喜欢跑飞
回复:STM8S AWU(活跃停机)功能一打开,过一会儿程序喜欢跑飞
库函数的例程如果都能跑飞,可能是你硬件设计上的问题了
硬件问题我也怀疑过,后来我用官方的实验板 STM8-DISCOVERY ,也测试了,还是出现同样的问题,不知道是什么原因。
回复:STM8S AWU(活跃停机)功能一打开,过一会儿程序喜欢跑飞
回复:STM8S AWU(活跃停机)功能一打开,过一会儿程序喜欢跑飞
这个适当设置后编译通过,在本人的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();
}
}