STM32:STM32学习记录6: IWDG

配置流程:
1:系统时钟初始化,包括系统时钟和要开放的IO口或者功能的时钟配置。
2:IO口初始化,包括引脚,速率,输入输出模式等。
3:初始化看门狗。
注意:
注意如何操作喂狗!!!

#include"stm32f10x.h"
#include"stm32f10x_iwdg.h"

#define LED0_OFF  GPIO_SetBits(GPIOA,GPIO_Pin_8)    // LED0关
#define LED0_ON GPIO_ResetBits(GPIOA,GPIO_Pin_8)//LED0开


//初始化IO端口
void IO_Configuart(void)   
{
    GPIO_InitTypeDef GPIO_InitStructure;//定义 GPIO_InitStructure为    GPIO_InitTypeDef结构体类型

    //配置GPIOA_8     LED0
    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;//引脚选择
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//50MHz速率
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出
    GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化

    //配置GPIOA_13     KEY0
    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;//引脚选择
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//50MHz速率
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU ;//上拉输入     由于按键按下为低电平
    GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化
}

//复位和系统时钟控制
void RCC_Configuare(void)
{
    SystemInit();//频率设定有system_stm32f10x.c文件中的宏定义 开放某个宏 当调用SystemInit()时即可设置好频率
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    RCC_ClockSecuritySystemCmd(ENABLE);//使能或者失能时钟安全系统
}

void Delay(u16 speed)
{
    u16 i=0;
    while(speed!=0)
    {
        speed--;
        for(i=0;i<400;i++);
    }
}

//初始化看门狗
void IWDG_Configuare(void)
{
    IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);//使能或者失能对寄存器 IWDG_PR 和 IWDG_RLR 的写操作    
    IWDG_SetPrescaler(IWDG_Prescaler_64);//设置 IWDG 预分频值为4
    IWDG_SetReload(625); //设置 IWDG 重装载值 
    IWDG_ReloadCounter();//    按照 IWDG 重装载寄存器的值重装载 IWDG 计数器 
    IWDG_Enable();// 使能 IWDG 
}

//不操作时LED闪 说明程序复位了 按键按下时常亮说明喂狗了
int main(void)
{
    RCC_Configuare();
    IO_Configuart();
    IWDG_Configuare();
    LED0_OFF;
    Delay(10000);//延时
    LED0_ON;
    while(1)
    {
        if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_13)==0)
        {
            IWDG_ReloadCounter();//    按照 IWDG 重装载寄存器的值重装载 IWDG 计数器   此处为喂狗!!!!!!! 
        }
//        LED0_ON;
//        Delay(2000);
//        LED0_OFF;
//        Delay(2000);
    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值