OpenEdv-开源电子网

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

看门狗中断的问题

[复制链接]

52

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2017-8-19
在线时间
160 小时
发表于 2017-8-25 09:37:38 | 显示全部楼层 |阅读模式
1金钱
  以下程序不知道为什么LED1的灯一直亮!!!我用的是窗口看门狗!!

#include "stm32f4xx.h"
#include "led.h"
#include "key.h"
#include "io_bit.h"
#include "systick.h"
#include "usart.h"
#include "string.h"
#include "stdio.h"
#include "exti.h"
#include "sw_exti.h"
#include "iwdg.h"
#include "wwdg.h"



void delay(u32 n)
{
        while(n--)
        {
                ;
        }
}


int main(void)
{       
        char data[100] = {0};
        led_init();          //初始化led
        //beep_init();       //初始化蜂鸣器
        key_init();                        //初始化key
        //systick_init_1us();   //滴答定时器启动,为1us
        //systick_init_nus(200);       //任意us系统滴答定时
        //systick_init_nms(200);      //任意ms系统滴答定时
        usart_1_init(84,9600);                //使能串口
        exti_init();                    //初始化外部中断
        sw_exti_init();           //初始化软件中断
        //iwdg_init(000,666);    //初始化独立看门狗
        wwdg_init(0,0x66,0x53);
        delay(100000);
        LED1 = 0 ;
        while(1)
        {       
                delay(1000000);
                LED1 = 0;
        }
}



#include "wwdg.h"
#include "led.h"


//该函数为窗口看门狗函数
/*
函数功能:实现窗口看门狗函数
形参: pr为分频值,win为窗口值,cnt为计数值
备注:我这里没有使用重新写入计数器的方法使其复位
*/
void wwdg_init(u8 pr,u8 win,u8 cnt)
{       
        uint32_t priority = 0;
        //初始化PCLK1的时钟
        RCC->APB1ENR |= 1 << 11;
       
        //配置WWDG相关的寄存器
       
        //配置看门狗计数器的值 -> 这个值是用来判断什么时候产生变化的

        //设置窗口值   必须大于0x40   小于0x7f   这里是7位
        WWDG->CFR &= (win);
       
        //设置分频
        WWDG->CFR |= (pr << 7);
       
        //设置计数值
        WWDG->CR &= (cnt);
       
        WWDG->CR |= 1 << 7;  //使能看门狗
       
        //中断使能
        WWDG->CFR |= 1 << 9;
       
        //设置NVIC
        NVIC_SetPriorityGrouping(7-2);//设置优先级分组
        priority = NVIC_EncodePriority(7-2,1,3);//设置优先级编码
        NVIC_SetPriority(WWDG_IRQn,priority); //优先级设置
        NVIC_EnableIRQ(WWDG_IRQn);
}
/*
函数功能:重新设置WWDG计数器的值
函数形参:计数器的值
*/
void wwdg_set_count(u8 cnt)
{
        WWDG->CR = (cnt & 0X7F);
}

/*
函数功能:WWDG看门狗中断服务函数
*/
void WWDG_IRQHandler(void)
{       
        wwdg_set_count(0x53);
        WWDG->SR &=~(1 << 0); //清除中断标志
}

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

使用道具 举报

52

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2017-8-19
在线时间
160 小时
 楼主| 发表于 2017-8-25 09:42:50 | 显示全部楼层
主要问题是好像中断怎么进不去
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2017-8-26 01:09:19 | 显示全部楼层
对比我们例程找问题吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-18 05:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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