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

2023-12-14 14:59

本文主要是介绍[攻城狮计划(二)] —— 瑞萨 PWM 定时器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

🙌秋名山码民的主页
😂oi退役选手,Java、大数据、单片机、IoT均有所涉猎,热爱技术,技术无罪
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
获取源码,添加WX

目录

  • 前言
  • 通用 PWM 定时器
    • PWM概述
    • R7FA2E1单片机配置PWM波形输出
  • 最后


前言

🚀🚀开启攻城狮的成长之旅!这是我参与的由 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输出引脚。因此在代码中定义引脚:
// 定义引脚
sbit PWM_OUT = P1^4;
  1. PWM波形的输出是由一个定时器和一个比较器共同完成的。首先,需要选择一个计数器作为定时器,并配置相应的工作模式。在这里,我们选择Timer2作为定时器,并配置为PWM波形输出模式。
void pwm_init(){// Timer2 配置T2CR = 0x08;  // 16位自动重载模式// 重载值 = 定时周期 / 时钟周期T2DRH = 0x1F;  // 定时周期高8位T2DRL = 0x40;  // 定时周期低8位// PWM模式:重载值为占空比T2MR |= 0x0080;  // TD2.7设置为1T2MR &= ~0x0040; // TD2.6设置为0
}
  1. 接下来,需要选择一个比较器,并配置相应的工作模式。在这里,我们选择Timer2的比较器,并将其配置为PWM波形输出模式。
void pwm_init(){// ...// Timer2 比较器配置TCRCR2 = 0x00; // 无需输入捕获// 输出模式:PWMTCDR2 = 0x0F;  // 先设为最大值,占空比为0// 初次比较时间设为0TCMP2H = 0x00; TCMP2L = 0x00;// 触发比较事件TCRCR2 |= 0x02;  // TD2CE2 设置为1
}
  1. 最后,需要设置占空比。在R7FA2E1单片机中,占空比的大小与比较值的大小成正比。在这里,我们通过手动修改比较寄存器来设置占空比。在循环中更改占空比的数值,从而实现PWM波形的动态调整。
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);}}
}

最后

如果本文对你有所帮助,还请三连支持一下博主!
请添加图片描述

这篇关于[攻城狮计划(二)] —— 瑞萨 PWM 定时器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/492982

相关文章

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro

Springboot如何配置Scheduler定时器

《Springboot如何配置Scheduler定时器》:本文主要介绍Springboot如何配置Scheduler定时器问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Springboot配置Scheduler定时器1.在启动类上添加 @EnableSchedulin

Oracle数据库执行计划的查看与分析技巧

《Oracle数据库执行计划的查看与分析技巧》在Oracle数据库中,执行计划能够帮助我们深入了解SQL语句在数据库内部的执行细节,进而优化查询性能、提升系统效率,执行计划是Oracle数据库优化器为... 目录一、什么是执行计划二、查看执行计划的方法(一)使用 EXPLAIN PLAN 命令(二)通过 S

《计算机视觉工程师养成计划》 ·数字图像处理·数字图像处理特征·概述~

1 定义         从哲学角度看:特征是从事物当中抽象出来用于区别其他类别事物的属性集合,图像特征则是从图像中抽取出来用于区别其他类别图像的属性集合。         从获取方式看:图像特征是通过对图像进行测量或借助算法计算得到的一组表达特性集合的向量。 2 认识         有些特征是视觉直观感受到的自然特征,例如亮度、边缘轮廓、纹理、色彩等。         有些特征需要通

【Qt】定时器事件

定时器事件 在之前学习QTimer中实现了定时器的功能,而在QTimer背后是QTimerEvent定时器事件进行支撑的。在QObject中提供了一个timeEvent这个函数。 startTimer启动定时器killTimer关闭定时器 Qt 中在进⾏窗⼝程序的处理过程中,经常要周期性的执⾏某些操作,或者制作⼀些动画效果,使⽤定 时器就可以实现。所谓定时器就是在间隔⼀定时间后,去执⾏某⼀

Claude Enterprise推出计划

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行! 订阅:https://rengongzhineng.io/ 今天推出的Claude Enterprise计划,专为企业打造安全的

为备份驱动器制定备份计划:维护数据的3大方法

时间:2014-02-26 14:49 来源:网管之家 字体:[大 中 小]   您可能已经对您的电脑进行了备份,但其实这样还是远远不够的,其并非如您所认为的那样安全。您企业备份驱动器上的文件可能与您的主系统上的文件一样,容易受到灾难的影响。根据最近流行的恶意软件CryptoLocker的感染途径显示,连接到PC的外置驱动器——辅助硬盘驱动器,例如,用于备份的外部USB硬盘驱动器,可以像

独立按键单击检测(延时消抖+定时器扫描)

目录 独立按键简介 按键抖动 模块接线 延时消抖 Key.h Key.c 定时器扫描按键代码 Key.h Key.c main.c 思考  MultiButton按键驱动 独立按键简介 ​ 轻触按键相当于一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通与断开。  ​ 按键抖动 由于按键内部使用的是机

基于开源链动 2 + 1 模式、AI 智能名片与 S2B2C 商城小程序的用户忠诚度计划

摘要:本文深入探讨了在商业环境中执行用户忠诚度计划的创新途径。通过整合开源链动 2 + 1 模式、AI 智能名片以及 S2B2C 商城小程序等先进元素,从提供福利、解决问题和创造赚钱机会三个核心方面展开详细阐述。研究表明,这些新技术和新模式的有机结合,能够为企业打造更具吸引力和影响力的用户忠诚度计划,从而实现商业效益的最大化与可持续发展。 一、引言 在当今竞争激烈且市场环境快速变化的时代,

【JavaScript】在循环体中了解定时器工作机制

for (var i = 0; i < 5; i++) {setTimeout(function() {console.log(i);}, 1000);}console.log(i);   如果我们约定,用箭头表示其前后的两次输出之间有 1 秒的时间间隔,而逗号表示其前后的两次输出之间的时间间隔可以忽略,代码实际运行的结果该如何描述?会有下面两种答案: A. :5 -> 5 -> 5 ->