STM32实验-高级定时器输出指定个数PWM

本文详细介绍了STM32F103ZET6微控制器中TIM1和TIM8高级定时器的功能,包括16位计数器、预分频器和输入输出通道。重点讨论了重复计数器的工作原理以及如何通过HAL库设置PWM输出。实验代码展示了如何初始化定时器8的通道1来控制LED1亮度,通过设置不同重复计数器值实现指定次数的PWM输出。

STM32F103ZET6中有TIM1,TIM8两个高级定时器,每一定时器都有

1、一个16位向上、向下、向上/下自动装载计数器
2、一个16位预分频器和四个独立从输入输出通道
3、每一个通道都可用于输入捕获、输出比较、PWM和单脉冲模式(除了基本定时器,高级定时器和通用定时器都能产生PWM)

当高级计时器发生溢出的时候都能使重复计数器减一,当重复计数器减到0之后,再发生一次计时器溢出,就会导致一次事件更新。

如下图所示,当RCR寄存器数据为0时候,每次计数器溢出都会导致事件更新;当RCR寄存器数据为2时候,当发生2次计数器溢出的时候,再发生一次溢出就会触发事件触发,即每3次溢出都会发生一次事件更新。如果设置了软件更新重新同步,则会导致软件更新的时候会直接触发重复计数器和基本计时器重置。

PWM的周期和基本定时器一样是Tout=(ARR+1)*(PSC+1)/Ft(Ft=72M)

实验要求是通过定时器8通道1输出指定个数PWM输出,用于控制LED1的输出。

我们已经知道LED1的引脚是PE5,查询引脚图我们会得知TIM8_CH1对应引脚为PC6。

 接下来编写我们的实验代码。

先编写头文件代码atim.h:

#ifndef __ATIM_H
#define __ATIM_H

#include "./SYSTEM/sys/sys.h"

extern TIM_HandleTypeDef g_timx_pwm_chy_handl
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值