在线时间36 小时
UID423505
注册时间2013-3-27
NXP金币0
该用户从未签到
高级会员

- 积分
- 651
- 最后登录
- 2020-9-4
|
楼主:
我正在编写K64的看门狗的程序.运行在mqx系统下,现在我作了一个初始化的程序,调用初始化程序后,一直不问狗,但不产生看门狗中断中断.
使用的编译器是IAR.
程序如下:
void WDOG_Feed(void)
{
WDOG_REFRESH = 0xA602;
WDOG_REFRESH = 0xB480; //喂狗
}
//关闭和开启看门狗
void WDOG_Close(void)
{
WDOG_UNLOCK = 0xC520u;
WDOG_UNLOCK = 0xD928u;
WDOG_STCTRLH &= ~0x0001; //关闭看门狗 WDOTEN 0
}
void WDOG_Open(void)
{
WDOG_UNLOCK = 0xC520;
WDOG_UNLOCK = 0xD928;
WDOG_STCTRLH |= 0x0001; //打开看门狗 WDOTEN 1
}
void WDOG_Init(void)
{
WDOG_UNLOCK = 0xC520;
WDOG_UNLOCK = 0xD928; //解锁看门狗寄存器(重新写入前必须解锁)两次写入不能超过20个时钟周期
WDOG_PRESC = 0x0700; //(7+1)分频
WDOG_TOVALH = 0x1110; //看门狗超时时间设置为3s
WDOG_TOVALL = 0x5E90;
// WDOG_STCTRLH |= 0x0001; //打开看门狗 WDOTEN 1
// 2秒
// WDOG_TOVALH = 0x01C9;
// WDOG_TOVALL = 0xC380;
// // 使能总线,静止窗口模式,禁止看门口中断,开启开门狗
WDOG_STCTRLH = 0x37;
}
void main(void)
{
// DisableInterrupts;
WDOG_Init(); //初始化看门狗
LED_init();
// EnableInterrupts;
// WDOG_Open(); //开启看门狗
time_delay_ms(1500);
while(1)
{
led(LED0, LED_ON); //LED0 亮
time_delay_ms(500); //延时500ms
led(LED0, LED_OFF); //LED0 灭
time_delay_ms(500); //延时500ms
// WDOG_Feed();
}
}
哪位大侠指点一下. 是否正确?多谢!
在启动程序中,已经将对看门狗操作的程序屏蔽到了.还需要修改其他地方吗?
|
|
|
|
|