前言:我的第一篇博客,快被逼疯了。用的STM8S003F3,耗时5天,问题已解决,结局很坑!
但因为这一个问题,我似乎将stm8的时钟,复位,看门狗,iar的使用几乎全吃透了。
忠告:不要随随便便相信百度里头随便找来的资料!
现象:主频只在16MHz时,程序频繁复位不可控,其他现象异常离奇不阐述了,防止伤脑。
正文:前因后果是这样的:
1,我配置了16M的主频
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//内部高速时钟,不分频
或者:CLK->CKDIVR = 0x00; //HSIDIV = 0 CPUDIV = 0 cpu时钟 = 16Mhz
发现它频繁自动复位,复位速度极快,找不到原因,问了老总,老总说复位和IWDG有关。
2,没学过也没设置过看门狗,那就配置吧
大体就是让我配置一下,网上各种配置方法,精简后,所有网上内容都统一为:
void IWDG_Init(void) //配置并启动看门狗
{
IWDG->KR = 0xCC; //启动独立看门狗