单片机定时器

定时器

STM32有11个定时器,2个高级定时器、4个通用定时器,2个基本定时器,1个系统嘀嗒定时器(systick),2个看门狗定时器。
定时器计算:
Tout=((per)psc)/Tclk
t=(f/pre)per
72000/36=2000HZ
Tout=1/2000S
T=Tout
pre=0.5
1000=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.画出一个智能家居系统的硬件框架图及其实现思路
最小系统包含电源电路,复位电路,单片机芯片,晶振电路。
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值