初级会员

- 积分
- 160
- 金钱
- 160
- 注册时间
- 2016-6-3
- 在线时间
- 42 小时
|
1金钱
本来想验证一下定时器定时去喂狗的程序,结果几次试验都不成功,求大神帮助
void tim(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);
TIM_DeInit(TIM2);
TIM_TimeBaseStructure.TIM_Period=2000; /* ×Ô¶ˉÖØ×°ÔØ¼Ä′æÆ÷ÖüÆúμÄÖμ(¼ÆêyÖμ) */
/* àÛ¼Æ TIM_Period¸öÆμÂêoó2úéúò»¸ö¸üD»òÕßÖD¶Ï */
TIM_TimeBaseStructure.TIM_Prescaler= (7200- 1); /* ê±ÖóÔ¤·ÖÆμêy 72M/72 */
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; /* 2éÑù·ÖÆμ */
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; /* ÏòéϼÆêyÄ£ê½ */
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
TIM_ClearFlag(TIM2, TIM_FLAG_Update); /* Çå3yòç3öÖD¶Ï±êÖ¾ */
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
TIM_Cmd(TIM2, ENABLE); /* ¿aÆôê±Öó */
TIM2_NVIC_Configuration();
}
void TIM2_NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
以上是定时器的配置
void iwdg_Init(u8 prer,u16 rlr)
{
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
IWDG_SetPrescaler(prer);
IWDG_SetReload(rlr);
IWDG_ReloadCounter();
IWDG_Enable();
}喂狗的配置
void TIM2_IRQHandler(void)
{
if ( TIM_GetITStatus(TIM2 , TIM_IT_Update) != RESET )
{
TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);
IWDG_ReloadCounter();//reload
}
}
定时执行喂狗程序
int main(void)
{
SystemInit(); /* ÅäÖÃÏμí3ê±ÖóÎa 72M */
gpio_led();
tim();
delay_Init();
iwdg_Init(4,500);
TIM2_NVIC_Configuration();
while(1)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_11);
// led_toggle();
}
}
原本是想2s去喂狗,喂狗溢出是小于1s,想让程序跑飞,然后去复位一下让灯熄灭,结果程序一直照常执行,不知哪里处理问题
|
|