PWM在各个编程中都非常的重要,在学习32单片机,FPGA等中都有学习到,本次文章为介绍汇编语言编写频率或占空比可调的PWM波,从更加底层的方面介绍和去了解pwm波生成的过程,基于S3C2410X/S3C2440X。

目录

一、PWM定时器整体

1.1 定时器整体分析

1.2定时器寄存器配置输出

二、寄存器详解

2.1定时器配置寄存器0

2.2 定时器配置寄存器1

​编辑 2.3 定时器控制寄存器

2.4 定时器计数缓冲寄存器与比较寄存器

三、程序编程

3.1 通过PWM组件定时器2控制PWM输出频率100KHZ、占空比位10/100 – 90/100波形

3.2  PWM组件的定时器2控制PWM输出频率为3000-15000HZ、占空比位4/5的波形。


一、PWM定时器整体

1.1 定时器整体分析

这里可以看到系统所拥有的定时器资源,拥有俩个带死区的pwm,俩个不带死区的pwm和一个内部使用,没有输出的定时,其中主要是依靠其系统时钟PCLK进行多次分频后通过比较输出pwm,pwm输出网上有很多基础知识可以去查看,在汇编中需要我们配置相关的寄存器从而控制其分频系数大小、是否使能、是否输出、是否复位等一系列操作,相关寄存器配置完全后才能正常输出pwm具体整体图见图1.1所示;(把图仔细理解来便可以进行下一步了)

图1.1  PWM定时器控制器组件

1.2定时器寄存器配置输出

我们要配置PWM输出我们主要配置定时器配置寄存器(TCFG)、定时器控制寄存器(TCON)定时器缓冲寄存器(TCNTB)、定时器比较寄存器(TCMPB)、定时器观察寄存器(TCNTO)等以控制和查看PWM定时器的工作,其过程见图1.2所示;

图1.2  PWM配置输出过程

二、寄存器详解

2.1定时器配置寄存器0

定时器配置寄存器0(TCFG0)配置定时器0-4的预分频系数并决定死区长度,可读/写

我们看定时器结构可以知道: 输入频率= PCLK / (预分频值+1)/分频数

定时器配置寄存器TCFG0各位含义 ,可以看到T1和T0是有8位一起决定的,而T2、T3、T4由另外8为决定的,2^8=256,所以分频可以为(0-255)+1分频;需要输出PWM波这个预分频需要考虑好所使用的定时器后如何配置其分频系数。

31-24

23-16

15-8

7-0

TCFG0

保留

DZL死区长度

PRC1预分频系数1

PRC0预分频系数0

含义

保留

8位确定死区长度

8位决定T4、T3、

T2预分频器值

8位决定T1、T0

的预分频器值

2.2 定时器配置寄存器1

在查看PWM输出的整体结构图后第一步是配置好预分频数后接下来便是配置分频器系数了,这里不像TCFG0,多个定时器“绑一起”,这里各个定时器是独立的

大家可以看到寄存器的是用四位来配置选择1/2,1/4,1/8,1/16,有些人便会疑惑:“我用俩位就可以决定的为什么要用四位来决定呢”  ,其实这是因为4位计算机是最好处理的,所以用的是四位而不是俩位,这里要注意到定时器分频都是独立配置的。

 2.3 定时器控制寄存器

配置好了预分频系数和分频器数那么输入f就确定了,接下来便是配置定时器的其他工作了,TCON主要控制定时器T0-T4的工作,可读/写。

当你选择好哪个定时器输出PWM波,那需要在所对应的位上配置好,主要有定时器的启动/停止,确定是否手动更新,是否输出反转,是否自动重装等 操作。

2.4 定时器计数缓冲寄存器与比较寄存器

在前面我们配置好了输入频率f ,了解了定时器的工作寄存器的配置,接下来便是要输出一定占空比的PWM波,也称为脉冲宽度调制,主要的俩个为一个周期的大小和高电平的大小,那么这俩个就由TCNTBn和TCMPBn决定;  PWM输出占空比= TCMPBn / TCNTBn

三、程序编程

3.1 通过PWM组件定时器2控制PWM输出频率100KHZ、占空比位10/100 – 90/100波形

这里我都给了注释: 唯一一点是关闭定时器,书上是rTCON=0x0我认为这样并不能关闭定时器2而是关闭定时器0,所以我这里写的是rTCON=0x000;其div便是一个pwm的周期也就是TCNTBn的大小。

3.2  PWM组件的定时器2控制PWM输出频率为3000-15000HZ、占空比位4/5的波形。

这里和上面是类似的,PWM输出有俩大重要参数,一个是频率,一个是占空比,把握好这俩个你才能更好的输出你想要的PWM波,前面和后面的配置是类似的,只是工作的部分代码不同,大家可以好好对比对比便能发现了。

该为学习嵌入式汇编语言的学习,对于了解更加底层的寄存器编写程序能够让我们更加了解整个系统的工作机理从而更好的编写程序,也为之后其他学习打好基础。

产生频率或者占空比可调的PWM波【汇编语言】相关推荐

  1. 如何使用定时器产生两路频率可调、占空比可调的PWM波

    接上次的博客,上一篇博客介绍的是产生两路频率可调.占空比固定为50%的方波,但是更多情况下也需要调节占空比,这篇博客简单介绍下.其实和频率可调的输出基本上是一样的,只需要再加上一个Duty来控制CCR ...

  2. 按键控制输出占空比可调的PWM波

    这里写自定义目录标题 按键的误区 举个例子 代码如下 实验结果 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一个表格 设定内容居中.居左.居右 SmartyPants 创建一个自定义列表 如何 ...

  3. 比较器应用三:占空比可调的PWM波

    本文章产生占空比可调的PWM波主要原理是直流波和三角波通过比较器比较,从而比较器输出端输出PWM波,通过图1来说明. 假设三角波接入比较器的负输入端,直流波接入比较器的正输入端,即当直流波大于三角波时 ...

  4. 占空比输出程序c语言,关于51单片机输出频率和占空比可调的PWM波程序问题

    //------------------------------------------------------------------------------------ //程序功能简介:本程序产 ...

  5. 如何使用定时器产生两路频率可调的PWM波

    输出频率可调的方波(占空比不可调,默认为50%) 使用定时器来产生PWM波大家应该都很熟悉,但是如何使用定时器产生频率可调的PWM波呢?这就需要使用定时器的输出比较翻转模式TIM_OCMode_Tog ...

  6. 如何使用定时器捕获一路PWM波信号的频率和占空比

    本次实验将采用定时器2的通道2产生两路频率和占空比均可调的PWM信号,然后使用定时器3的通道1来捕获其中的一路PWM波的频率和占空比. 1.首先来看下产生PWM波的程序,也就是和上篇博客是一样的,只不 ...

  7. 【专题5: 硬件设计】 之 【61.案例四:简易空气净化器,使用硬件产生PWM波并对马达调速】

    嵌入式工程师成长之路 系列文章 总目录 系列文章总目录 希望本是无所谓有,无所谓无的,这正如脚下的路,其实地上本没有路,走的人多了,也便成了路 原创不易,文章会持续更新,欢迎微信扫码关注公众号 承接 ...

  8. 基于STM32F03RCT的多路频率占空比可调PWM输出

    基于STM32F03RCT的多路频率占空比可调PWM输出 1. 准备 1.1. 硬件 1.2. 软件 2. 基础知识 3. CubeMX配置 3.1. 通用配置 3.2. 定时器配置及初始化代码生成 ...

  9. STM32产生固定频率和占空比可变的PWM

    STM32产生PWM 在笔者的上一个博客<STM32F103C8T6编写简单的程序并烧录到板卡上>中,简单介绍了如何产生一个PWM波,但读者可能对设置PWM过程中修改的参数不是很理解.本篇 ...

最新文章

  1. 掘地三尺,我挖出了这次线上事故的元凶:Java内存泄漏!
  2. 谷歌地球API开发者指南(高级)
  3. Java多线程(五):线程池应该设置多少核心线程数
  4. mysql 小数点后几位不足补0初始化
  5. ospf 实验笔记(二)
  6. JAVA设计模式 - 单例模式
  7. HAWQ技术解析(八) —— 大表分区
  8. html5创建桌面快捷方式,iOS APP创建桌面快捷方式
  9. C++程序设计课程设计报告
  10. 华科计算机学院三好学生,2015-2016年度本科生国奖国励校三好奖学金评选细则(含加分项)...
  11. day 82 Vue学习三之vue组件
  12. 【opencv】selective_search函数
  13. CMDN Club #20 活动预告: 从粉笔网多终端产品快速开发说开去——移动创业产品的架构和项目管理(10月10日)...
  14. 一次项目开发中,收获的经验和教训
  15. 数字的大写字母的乱序整理
  16. Java: Integer比较127, 128
  17. ASP.NET网页间传递参数
  18. ascii码,gbk编码,unicodo码,utf-8码
  19. fm算法详解_Python实现FM算法解析
  20. 百度网盘国际版 Dubox 体验:干净好用,却与国内用户无缘

热门文章

  1. Ubuntu20.04 AX210无线网卡驱动解决方法之一
  2. YDOOK: ANSYS Maxwell 19 教程19:Maxwell 2D Insider Selection 网格划分
  3. 在抖音推荐算法组工作的体验怎么样?
  4. mathtype使用方法
  5. 如何写好一篇CSDN博客——小白入门(自用)
  6. HP — LaserJet 打印机Win10下打印不停止的问题
  7. HMS Core助力《天谕》,打造高性能手游解决方案
  8. 大数据在智慧城市的建设中起到了哪些作用?_光点科技
  9. 在线画ui生成html5,Qunee for HTML5 - 中文 : 添加UI组件
  10. 100天SQL面试刷题 Day004