STM32:STM32学习记录6: IWDG

来源:互联网 发布:单片机1602显示器程序 编辑:程序博客网 时间:2024/05/16 08:30
配置流程:
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);    }}


0 0
原创粉丝点击