STM32TIM定时器

本文详细介绍了STM32通用定时器的三种计数模式,以及在PWM工作模式下的应用。通过理解通用定时器的框图和相关寄存器,如TIMx_CCMR1的OC1M位,解释了PWM的工作过程和编程步骤,包括设置比较值、输出极性和使能等。还涵盖了定时器中断实验中涉及的重要寄存器。
摘要由CSDN通过智能技术生成

功能
在这里插入图片描述

三种定时器区别

在这里插入图片描述
在这里插入图片描述

计数模式

通用定时器可以向上计数、向下计数、向上向下双向计数模式。
①向上计数模式:计数器从0计数到自动加载值(TIMx_ARR),然后重新从0开始计数并且产生一个计数器溢出事件。
②向下计数模式:计数器从自动装入的值(TIMx_ARR)开始向下计数到0,然后从自动装入的值重新开始,并产生一个计数器向下溢出事件。
③中央对齐模式(向上/向下计数):计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后再从0开始重新计数。
在这里插入图片描述

通用定时器框图

在这里插入图片描述

寄存器

在这里插入图片描述
在这里插入图片描述

PWM

在这里插入图片描述

定时器中断实验相关寄存器

计数器当前值寄存器CNT
在这里插入图片描述
预分频寄存器TIMx_PSC
在这里插入图片描述
自动重装载寄存器(TIMx_ARR)
在这里插入图片描述
控制寄存器1(TIMx_CR1)
在这里插入图片描述
在这里插入图片描述

程序设计

	void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
	{
                     if(htim->Instance == TIM2)
                         {
	    	    HAL_UART_Transmit(&huart1,"helloworld",strlen("helloworld"),1000);
	         }	
	}

PWM工作过程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
CCR1:捕获比较(值)寄存器(x=1,2,3,4):设置比较值。
CCMR1: OC1M[2:0]位:
对于PWM方式下,用于设置PWM模式1【110】或者PWM模式2【111】
CCER:CC1P位:输入/捕获1输出极性。0:高电平有效,1:低电平有效。
CCER:CC1E位:输入/捕获1输出使能。0:关闭,1:打开。

寄存器TIMx_CCMR1的OC1M[2:0]位来分析:

在这里插入图片描述
在这里插入图片描述

PWM编程过程

使能定时器3和相关IO口时钟。
使能定时器3时钟:RCC_APB1PeriphClockCmd();
使能GPIOB时钟:RCC_APB2PeriphClockCmd();
② 初始化IO口为复用功能输出。函数:GPIO_Init();
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
这里我们是要把PB5用作定时器的PWM输出引脚,所以要重映射配置,
所以需要开启AFIO时钟。同时设置重映射。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);
④ 初始化定时器:ARR,PSC等:TIM_TimeBaseInit();
⑤ 初始化输出比较参数:TIM_OC2Init();
⑥ 使能预装载寄存器: TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
⑦ 使能定时器。TIM_Cmd();
⑧ 不断改变比较值CCRx,达到不同的占空比效果:TIM_SetCompare2();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值