OpenEdv-开源电子网

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

窗口看门狗实验 中断问题

[复制链接]

38

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2011-7-12
在线时间
0 小时
发表于 2011-11-14 19:31:41 | 显示全部楼层 |阅读模式

#include "stm32f10x.h"


void RCC_Configuration(void)
{
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOD,ENABLE);
}
void WWDG_Configuration(void)
{
 WWDG_SetPrescaler(WWDG_Prescaler_8);        // 8M/4096/8=244Hz,4ms递减一个数值。
 WWDG_SetWindowValue(0x5f);            //7f-40=3f=63,,63*4=252ms,1s内复位四次。
 WWDG_Enable(0x7f);
 WWDG_ClearFlag();                              这句话为什么要加,
 WWDG_EnableIT();
}
void GPIO_Configuration(void)
{
 GPIO_InitTypeDef GPIO_InitStructure;      
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
 GPIO_Init(GPIOA, &GPIO_InitStructure);
  
 GPIO_SetBits(GPIOA,GPIO_Pin_8);
 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
 GPIO_Init(GPIOD,&GPIO_InitStructure);

 GPIO_SetBits(GPIOD,GPIO_Pin_2); 
}
void NVIC_Configuration(void)
{
 NVIC_InitTypeDef NVIC_InitStructure;
 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
 NVIC_InitStructure.NVIC_IRQChannel =WWDG_IRQn;
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 NVIC_Init(&NVIC_InitStructure);
}
void Delay(vu32 times)
{
 for(;times!=0;times--);
}
int main(void)
{
 RCC_Configuration();
 GPIO_Configuration(); 
 WWDG_Configuration();
 NVIC_Configuration();
 GPIO_ResetBits(GPIOA,GPIO_Pin_8);
 Delay(100000);       //(1/8000000)*100000=1/80,一条指令要几个周期,所以延时要小于复位时间,才能执行灯灭指令
 GPIO_SetBits(GPIOA,GPIO_Pin_8);
}

 





void WWDG_IRQHandler(void)
{
 GPIO_ResetBits(GPIOD,GPIO_Pin_2);
 
 WWDG_SetCounter(0x7f);
 WWDG_ClearFlag();
 Delay(1000);
 GPIO_SetBits(GPIOD,GPIO_Pin_2);
}



1.WWDG_ClearFlag();                              这句话为什么要加,
2.去掉初始化中的WWDG_ClearFlag(); 
 把中断中的喂狗命令去掉,LED0,LED1都闪烁,进入中断没问题,加上喂狗命令则LED0,LED1都稍微亮,而且一直亮。
3.加上初始化中的WWDG_ClearFlag(); 
则只有LED0闪烁。


应该在初始化中加上WWDG_ClearFlag();,为什么LED1没有闪烁?好像没有进入中断。


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

使用道具 举报

38

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2011-7-12
在线时间
0 小时
 楼主| 发表于 2011-11-14 19:41:22 | 显示全部楼层
原子的库函数编的窗口看门狗程序好像不对啊,并没有喂狗啊,一直在复位。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-11-14 20:00:09 | 显示全部楼层
回复【楼主位】天马:
---------------------------------
中断一般都需要自行清除中断标志的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

38

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2011-7-12
在线时间
0 小时
 楼主| 发表于 2011-11-14 20:13:50 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
在中断中清标志位不就行了?在初始化中不用请吧,usart和exti初始化中都没有清标志位,在中断中清的。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-11-14 20:55:11 | 显示全部楼层
回复【4楼】天马:
---------------------------------
初始化的时候可以不清的.不过最好清一下.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2013-9-1
在线时间
0 小时
发表于 2013-10-25 18:03:32 | 显示全部楼层
为什么PCLK1=8M,不是36M吗?但是按36M算每秒钟闪烁就不是5次左右了???
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-10 00:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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