定时器
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的重点是得到自动重载寄存器、预分频寄存器
TIM
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;//时钟分频系数为72MHZ
TIM_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.画出一个智能家居系统的硬件框架图及其实现思路
最小系统包含电源电路,复位电路,单片机芯片,晶振电路。