用STM8S003做了一款小报警器,电池供电,平时休眠,外部中断唤醒,测试过程中开启休眠就出现无规律重启,不使用休眠就一切正常,折腾了几天,一直没找到问题。最后逐步简化程序,发现只保留休眠和唤醒,也是一样的重启,已经没思路了,求各位朋友帮忙,贴出最后测试的程序,IAR下的。
#include "iostm8s103f3.h"
#define uchar unsigned char
#define uint unsigned int
#define beep PD_ODR_ODR6
#define led PD_ODR_ODR5
#define RF PA_IDR_IDR3
void delay_1ms(uint x) //1毫秒延时
{
uchar b,c;
for(;x>0;x--)
{
for(b=5;b>0;b--);
{
for(c=150;c>0;c--);
}
}
}
#pragma vector=0x05 //PA
__interrupt void ext_A3(void) //RF外部中断
{
;
}
void Init_GPIO(void) //IO初始化
{
PA_DDR=0xF7;
PA_CR1=0x00;
PA_CR2=0x00; //PA3中断,休眠前开启
PD_DDR=0xff;//ef
PD_CR1=0x60;
PD_CR2=0x00;
PD_ODR=0X20;
CLK_CKDIVR=0X02; //CPU 4分频
}
void system_start() //上电初始化
{
Init_GPIO();
EX
ti_CR1=0XC1; //PD上升沿和下降沿触发,PA仅上升沿触发
PA_CR2=0x08; //开启PA3上升沿中断
asm("rim");//开全局中断
}
void main()
{
system_start();
beep=1;
delay_1ms(500);
beep=0;
while(1)
{
led=!led;
asm("HALT");
}
}
只保留这点都不行,无规律重启,有时是连续重启,有时要几个小时