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