前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[攻城狮计划(二)] —— 瑞萨 PWM 定时器

[攻城狮计划(二)] —— 瑞萨 PWM 定时器

作者头像
秋名山码神
发布2023-04-12 10:09:48
4820
发布2023-04-12 10:09:48
举报
文章被收录于专栏:码神随笔

前言

🚀🚀开启攻城狮的成长之旅!这是我参与的由 CSDN博客专家 架构师李肯瑞萨MCU 联合发起的「 致敬未来的攻城狮计划 」的第 2 篇,点击查看活动计划详情

👍首先作为一个穷学生来说,很感谢有这次的机会能带我领略除C51和STM32板子以外开发板的机会,让我在空闲的时间内不仅能吸取很多知识,更能听取李老师作为企业级架构师的手把手敲代码的教学。

通用 PWM 定时器

PWM概述

​ 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

PWM 波形的基本信息如下图所示:

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

PWM常用信息:

  1. pwm的频率: 是指1秒钟内信号从高电平到低电平再回到高电平的次数(一个周期); 也就是说一秒钟PWM有多少个周期 单位: Hz 表示方式: 50Hz 100Hz

  1. pwm的周期: T=1/f 周期=1/频率 50Hz = 20ms 一个周期 如果频率为50Hz ,也就是说一个周期是20ms 那么一秒钟就有 50次PWM周期

  1. 占空比: 是一个脉冲周期内,高电平的时间与整个周期时间的比例 单位: % (0%-100%) 表示方式:20%

R7FA2E1单片机配置PWM波形输出

  1. 首先需要确定PWM波形输出的引脚,在本例中,我们选择P14作为PWM输出引脚。因此在代码中定义引脚:
代码语言:javascript
复制
// 定义引脚
sbit PWM_OUT = P1^4;
  1. PWM波形的输出是由一个定时器和一个比较器共同完成的。首先,需要选择一个计数器作为定时器,并配置相应的工作模式。在这里,我们选择Timer2作为定时器,并配置为PWM波形输出模式。
代码语言:javascript
复制
void pwm_init(){
    // Timer2 配置
    T2CR = 0x08;  // 16位自动重载模式

    // 重载值 = 定时周期 / 时钟周期
    T2DRH = 0x1F;  // 定时周期高8位
    T2DRL = 0x40;  // 定时周期低8位

    // PWM模式:重载值为占空比
    T2MR |= 0x0080;  // TD2.7设置为1
    T2MR &= ~0x0040; // TD2.6设置为0
}
  1. 接下来,需要选择一个比较器,并配置相应的工作模式。在这里,我们选择Timer2的比较器,并将其配置为PWM波形输出模式。
代码语言:javascript
复制
void pwm_init(){
    // ...

    // Timer2 比较器配置
    TCRCR2 = 0x00; // 无需输入捕获

    // 输出模式:PWM
    TCDR2 = 0x0F;  // 先设为最大值,占空比为0

    // 初次比较时间设为0
    TCMP2H = 0x00; 
    TCMP2L = 0x00;

    // 触发比较事件
    TCRCR2 |= 0x02;  // TD2CE2 设置为1
}
  1. 最后,需要设置占空比。在R7FA2E1单片机中,占空比的大小与比较值的大小成正比。在这里,我们通过手动修改比较寄存器来设置占空比。在循环中更改占空比的数值,从而实现PWM波形的动态调整。
代码语言:javascript
复制
void main(){
    // 初始化
    pwm_init();
    PWM_OUT = 0;

    // 动态调整占空比
    while(1){
        for(unsigned char i = 1; i <= 15; ++i){
            TCMP2H = 0x00;
            TCMP2L = i << 8;

            // 延迟一段时间,保证PWM波形输出稳定
            delay(1000);
        }
    }
}

最后

如果本文对你有所帮助,还请三连支持一下博主!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 通用 PWM 定时器
    • PWM概述
      • R7FA2E1单片机配置PWM波形输出
      • 最后
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档