找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4223|回复: 1
打印 上一主题 下一主题
收起左侧

关于STM8S独立看门狗的问题有些不懂,求指点下

[复制链接]
跳转到指定楼层
楼主
贴下代码
void main()
{
  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
  led_init();
  iwdg_init();
  led2(on);
  while(1)
  {
   led1(on);
   delayms(600);
   led1(off);
   delayms(600);
  }
}

下面是子代码
void led_init()
{
  GPIO_Init(GPIOD, GPIO_PIN_LNIB, GPIO_MODE_OUT_PP_HIGH_FAST);
}

#define led1(on_off)  (on_off==on) ? GPIO_WriteLow(GPIOD, GPIO_PIN_0):GPIO_WriteHigh(GPIOD, GPIO_PIN_0)
#define led2(on_off)  (on_off==on) ? GPIO_WriteLow(GPIOD, GPIO_PIN_1):GPIO_WriteHigh(GPIOD, GPIO_PIN_1)
#define led3(on_off)  (on_off==on) ? GPIO_WriteLow(GPIOD, GPIO_PIN_2):GPIO_WriteHigh(GPIOD, GPIO_PIN_2)
#define led4(on_off)  (on_off==on) ? GPIO_WriteLow(GPIOD, GPIO_PIN_3):GPIO_WriteHigh(GPIOD, GPIO_PIN_3)

void iwdg_init()
{
  //使能,启动看门狗
  IWDG->KR=0xcc;
  //解除 PR 及 RLR 的写保护
  IWDG->KR=0x55;
  //预分频寄存器
  //【7-3】必须保持,【2-0】从000到110对应4,8,16,32,64,128,256
  IWDG->PR=0x05;//128分频
  //重装载寄存器,设置复位时间,
  //复位时间为(value*2)/(128K/128)
  //例如这个为(200*2)/1000,即400MS不喂狗就复位
  IWDG->RLR=200;
  IWDG->KR = IWDG_KEY_REFRESH;//0xaa,喂狗
}

程序里面delayms函数不过400MS就可以led1闪烁,大于400MS就是复位的现象,可是在小于400MS的时候不管喂不喂狗都一样,求大神指导下,感激不尽

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:81678 发表于 2015-7-1 11:55 | 只看该作者
不好意思,乌龙了,逻辑分析仪看后明白了

QQ图片20150701115108.png (27.16 KB, 下载次数: 213)

QQ图片20150701115108.png

QQ图片20150701115155.png (5.8 KB, 下载次数: 205)

QQ图片20150701115155.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表