一、STM32家族中共有11个定时器,其中VBT6中含有7个定时器
11个引脚的分类:
高级引脚:Tim1、Tim8
通用引脚:Tim2、Tim3、Tim4、Tim5
基本引脚:Tim6、Tim7
两个看门狗:IWDG(独立看门狗)、WWDG(窗口看门狗)
一个sysTick定时器(属于内核)——(系统滴答定时器)
1、VBT6中7个定时器:
通用16bit定时器:2、3、4
高级16bit定时器:1
2个看门狗
1个sysTick定时器
2、看门狗:
看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个
数字,程序开始运行后看门狗开始计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗置零,重新开始
计数。如果看门狗增加到设定值就认为程序没有正常工作,强制整个系统复位。
二、tim初始化:
1、打开tim时钟
2、结构体参数初始化
3、结构体参数应用于硬件
4、使能(ENABLE)tim工作状态调至enable
1、定时器初始化:1ms
void TIM_init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
TIM_TimeBaseInitStruct.TIM_Prescaler = 72 - 1; //预分频器的值
TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up; //CNT工作模式,向上模式
TIM_TimeBaseInitStruct.TIM_Period = 1000 - 1; //pre预装载器的值
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStruct);
TIM_Cmd(TIM2, ENABLE);
}
//tim
2、查询法使用定时器的两个函数
FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG); //获取定时器的状态位
void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG); //状态位清零
//1ms定时器调出500ms定时器
while(1)
{
if(TIM_GetFlagStatus(TIM2, TIM_FLAG_Update) == SET)
{
TIM_ClearFlag(TIM2, TIM_FLAG_Update);
flag++;
}
if(flag >= 500) //单片机中判断等于某值时,一般不用等于,用>=
{
GPIO_WriteBit(GPIOE, GPIO_Pin_12, !GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_12));
flag = 0;
}
}