OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3609|回复: 1

IWDG奇怪现象

[复制链接]

8

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2017-4-29
在线时间
23 小时
发表于 2018-6-30 11:28:01 | 显示全部楼层 |阅读模式
1金钱
使用原子老师767开发板进行IWDG试验,碰到个奇怪现象无法解释,具体如下:

原始程序和老师基本相同
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "key.h"
IWDG_HandleTypeDef IWDG_Handler;
int main(void)
{
u8 key=0;
u8 led0Status=0,led1Status=0;
HAL_Init();
Stm32_Clock_Init(432,25,2,9);
delay_init(216);

LED_Init();
KEY_Init();

LED0(1); //LED on
delay_ms(1000);
LED0(0); //LED off

IWDG_Handler.Instance=IWDG;
IWDG_Handler.Init.Prescaler=IWDG_PRESCALER_64;  //更改位置
IWDG_Handler.Init.Reload=500;                                //更改位置

IWDG_Handler.Init.Window=IWDG_WINDOW_DISABLE;
HAL_IWDG_Init(&IWDG_Handler);

while(1)
{
  if(KEY_Scan(0)==WKUP_PRES)
  {
   HAL_IWDG_Refresh(&IWDG_Handler);
  }
  delay_ms(10);
}
}

以上源代码和老师例程基本一致。
如果按下wake_up按钮,LED大概每隔几秒钟闪烁一次。

如果把程序中红色位置数值更改为
IWDG_Handler.Init.Prescaler=IWDG_PRESCALER_256;  
IWDG_Handler.Init.Reload=125;
理论上实验结果应该是一样的,因为相乘结果都是32000.
但实际试验结果差异有点大,即LED会变为每隔十几秒闪烁一次,不知道为什么LED闪烁间隔会随着Prescaler的加大而变化?


还望老师答疑解惑

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-7-1 02:20:16 | 显示全部楼层
正常来说,不应该。你试试寄存器代码。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-2 20:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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