初级会员

- 积分
- 118
- 金钱
- 118
- 注册时间
- 2017-4-29
- 在线时间
- 23 小时
|
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的加大而变化?
还望老师答疑解惑
|
|