STM8 学习笔记13:PWM

本文介绍了PWM的概念,包括频率、周期和占空比的定义,并详细阐述了STM8微控制器中通用定时器TIM3的PWM工作模式。通过ARR和CCRx寄存器设置PWM的周期和占空比,同时提到了相关寄存器的功能,如计数器使能、输出比较模式和输出极性等。还给出了一个配置PWM输出为1KHz、50%占空比的实验步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PWM

Gitee 空间跳转:https://gitee.com/galoc/stm8.git

1 概述

PWM也叫脉冲宽度调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。频率、周期、占空比。

1.1 PWM 频率

是指在 1 秒钟内,信号从高电平到低电平再回到高电平的次数,也就是说 1 秒钟 PWM 有多少个周期,单位 Hz。PWM信号的频率决定PWM完成一个周期的速度。

1.2 PWM 周期

T = 1/f,T是周期,f是频率。
如果频率为 50 Hz,也就是说一周期是 20 ms,那么 1s 钟就有 50 次 PWM 周期。

1.3 占空比

是一个脉冲周期内,高电平的时间与整个周期时间的比例,单位是 %(0% - 100%)一个周期的长度,如下图所示:
请添加图片描述

2 PWM 是如何让工作的?

在这里插入图片描述
ARR:自动重装载寄存器的值
CRRx:捕获/比较寄存器 x 的值
由上图可知,PWM 的周期或频率由 ARR 决定,PWM 占空比由 CCRx 决定

3 通用定时器输出比较部分框图介绍

在这里插入图片描述

3.1 捕获/比较通道1的主电路—输出部分

在这里插入图片描述
在比较模式下,预装载寄存器的内容被复制到影子寄存器中,然后影子寄存器的内容和计数器进行比较。

3.2 捕获/比较通道的输出部分(通道1)

在这里插入图片描述

4 相关寄存器

  1. TIMx_CR1.CEN 计数器使能(Counter enable)
    0:关闭计数器
    1:使能计数器
  2. TIMx_CCMR1.CCIS[1:0] 捕获/比较 1 选择(Capture/Compare 1 selection)
    00:CC1 通道被配置为输出;
    01:CC1 通道被配置为输入,IC1 映射在 TI1 上;
    10:CC1 通道被配置为输入,IC1 映射在 TI2 上;
    11:CC1 通道被配置为输入,IC1 映射在 TRC 上。(此模式仅工作在内部触发器输入被选中时,由 TIMx_SMCR 寄存器的 TS 位选择)
    作用:用于定义通道的方向(输入/输出),及输入脚的选择。
  3. TIMx_CCMR1.OC1M 输出比较 1 模式(Output compare 1 mode)
    110:PWM 模式 1,在向上计数时,一旦 TIMx_CNT < TIMx_CCR1 时通道 1 为有效电平,否则为无效电平。在向下计数时,一旦 TIMx_CNT > TIMx_CCR1 时 通道 1 为无效电平,否则为有效电平。
    111:PWM 模式 2,在向上计数时,一旦 TIMx_CNT < TIMx_CCR1 时通道 1 为无效电平,否则为有效电平。在向下计数时,一旦 TIMx_CNT > TIMx_CCR1 时 通道 1 为有效电平,否则为无效电平。
    :有/无效状态由 TIMx_CCER.CCxP 决定
    作用:用于确定 PWM 输出模式
  4. TIMx_CCER.CC1P 捕获/比较 1 输出极性(Capture/Compare 1 output polarity)
    CC1 通道配置为输出:
    0:OC1 高电平有效
    1:OC1 低电平有效
    作用:用于配置输出极性
  5. TIMx_CCER.CC1E 捕获/比较 1 输出使能
    CC1 通道配置为输出:
    0:关闭 — OC1 禁止输出
    1:开启 — OC1 信号输出到对应的输出引脚。
  6. TIMx_BKR.MOE OC 输出使能(Main output enable)
    作用:CCxE 使能位被设置,OC输出被启用
  7. TIMx_ARR 自动重装载值 (Auto-reload value)
    作用:用于设置自动重装载值,范围:0-65535
  8. TIMx_CCR 捕获/比较寄存器值(Capture/compare register value)
    作用:用于设置捕获/比较寄存器值,范围:0-65535

5 通用定时器 TIM3_PWM 输出实验配置步骤

需求:PWM输出频率为 1KHz,占空比为 50%
配置:选择内部高速时钟 16MHz,不分频,定时器3向上计数模式、分频系数为 128,ARR 为 124。

  1. 配置 CLOCK、GPIO
  2. 配置定时器基础工作参数
  3. 配置 PWM 模式/比较值
  4. 使能输出并启动计数器

相关函数介绍如下表:

函数主要寄存器主要功能
Pwm_Clock_ConfigCLK_SWR.SWI、CLK_CKDIVR.CKM、CLK_PCKENR1.PCKEN11配置时钟源并使能相关外设时钟
Pwm_GPIO_ConfigPx_DDR.DDR[7:0]、Px_ODR.ODR[7:0]、Px_CR1.C1[7:0],Px_CR2.C2[7:0] 、SYSCFG_RMPCR3配置 GPIO 并复用为 TIM3_Chn
Pwm_TimBase_InitTIMx_PSCR.PSC[2:0]、TIMx_CR1.DIR、TIMx_ARRH、TIMx_ARRL、TIMx_CCER.CC1E配置定时器基础工作参数
Pwm_Cfg_InitTIMx_CCMR1.OC1M、TIMx_CCR1H、TIMx_CCR1L 、TIMx_CCER.CC1P配置 PWM 模式/比较值
Pwm_EnableTIMx_BKR.MOE、TIMx_CR1.CEN、asm(“rim\n”)使能输出并启动计数器

7 结果

gPwmDuty = 62; gPwmFreq = 124;
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值