STM32有11个定时器,2个高级定时器、4个通用定时器,2个基本定时器,1个系统嘀嗒定时器(systick),2个看门狗定时器。
定时器计算:
Tout=((per)psc)/Tclk
t=(f/pre)per
72000/36=2000HZ
Tout=1/2000S
T=Toutpre=0.51000=500ms=0.5s
定时器的基本单元包含:自动重载寄存器、预分频寄存器、定时器计数器
CNT的重点是得到自动重载寄存器、预分频寄存器
TIM2-TIM5通用寄存器,TIM6,TIM7基本寄存器,有APB1时钟输出产生
1.使能时钟 TIM,GPIO,LED的管脚
2.配置GPIO工作模式
3.初始化TIM,配置NVIC的中断优先级
4.创建TIM
void TIM3_Init(u16 per, u16 psc){TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure;//时钟配置RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);TIM_TimeBaseStructure.TIM_Period = per;//预分频系数TIM_TimeBaseStructure.TIM_Prescaler = psc;//重载初值TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;//时钟分频系数为72MHZTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//模式位上升沿TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);TIM_ITConfig(TIM3, TIM_IT_Update , ENABLE);//使能定时器//中断优先分组 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;//副优先级NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//通道使能NVIC_Init(&NVIC_InitStructure);TIM_Cmd(TIM3, ENABLE);//开启定时器TIM_ClearITPendingBit(TIM3,TIM_IT_Update);//清空给标志位
}
5.编写定时器中断服务函数
void TIM3_IRQHandler(void){
if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET)
{led1=~led1;}TIM_ClearITPendingBit(TIM3,TIM_IT_Update);/清空标志位
}
基于STM32及其最小系统设计一个智能家居系统。 要求1.说明最小系统包含哪些电路;2.画出一个智能家居系统的硬件框架图及其实现思路
最小系统包含电源电路,复位电路,单片机芯片,晶振电路。