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

这篇具有很好参考价值的文章主要介绍了产生频率或者占空比可调的PWM波【汇编语言】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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所示;(把图仔细理解来便可以进行下一步了

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

图1.1  PWM定时器控制器组件

    1.2定时器寄存器配置输出

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

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

 图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波,那需要在所对应的位上配置好,主要有定时器的启动/停止,确定是否手动更新,是否输出反转,是否自动重装等 操作。

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

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

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

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

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

 三、程序编程

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

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

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

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

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

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

 该为学习嵌入式汇编语言的学习,对于了解更加底层的寄存器编写程序能够让我们更加了解整个系统的工作机理从而更好的编写程序,也为之后其他学习打好基础。文章来源地址https://www.toymoban.com/news/detail-492067.html

到了这里,关于产生频率或者占空比可调的PWM波【汇编语言】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA:生成占空比可调的PWM波

    目标 :FPGA的时钟为50MHZ,生成20KHZ的占空比位50%的PWM波 设需要计数器计到 x 后清零,求出x: x /50_000_000 = 1/20_000 设计文件 使用FPGA生成一个占空比为70%的PWM波 注:可以通过调节 PWM_num 的大小,进而实现不同占空比的PWM波 最后生成的70%占空比的PWM波形如下:

    2024年02月13日
    浏览(49)
  • STM32 HAL 检测PWM频率/占空比

    配置的系统时钟是100M,Timer的时钟也是100M Timer 的频率为:100M 分频 1000 = 0.1MHz 也就是定时器 每10us 计一个数 打开TIM4_CH2引脚中断 在 main.c 中开启中断 TIM4_CH2引脚中断回调 占空比%: TempPIpre *100 / TempPIpul 周期T: TempPIpul * 10us 频率f: 1 / T

    2024年02月13日
    浏览(42)
  • stm32输入捕获测频率&PWM模式测频率占空比

    本文章转自B站江科大自化协    1,输入捕获测频率 接线图  目录结构 IC.h IC.c pwm.c PWM.h      main.c 编译下载出结果   2.PWM模式测频率占空比 接线图同上 目录结构同上 IC.c  IC.h main.c 编译下载测试     PS:测h   

    2024年02月15日
    浏览(37)
  • 输入捕获模式测频率&PWM输入模式(PWMI)测占空比

    输出比较: 比较电路输入的CNT、CCR大小关系 ,在通道引脚输出高低电平 N/fc得到标准频率的时长,也就是待测频率的周期 测频法代码实现:修改对射式红外传感器计次(上升沿计次)、定时器外部时钟(1s中断)  测频法:定时器中断,并记录捕获次数;测周法:捕获中断

    2024年02月19日
    浏览(42)
  • STM32笔记——定时器输入捕获功能(测量PWM的频率和占空比)

    目录 一、概述 二、输入捕获功能 2.1 输入捕获简介 2.2 输入捕获通道  三、输入捕获功能测量PWM波的频率和占空比 3.1 测量频率的方法 3.2 测量过程         主要介绍通用定时器的输入捕获功能,输入信号由GPIO口进入输入捕获通道,之后输入部分对相应的TIx输入信号采样,并

    2024年02月06日
    浏览(85)
  • STM32实现PWM输出频率1kHz占空比50%的方波和呼吸灯

    板子:野火指南者 芯片:STM32f103VET6 PWM通道:TIM3的通道1和通道3 GPIO:PA6和PB0 本文主要讲需要怎么做,简要讲解原理,提供全部代码,有利于快速上手。 打开STM32f103VET6的芯片数据手册,打开目录Pinouts and pindescriptions——High-density STM32F103xC/D/E pin definitions,如图所示。 这里选

    2024年02月05日
    浏览(52)
  • STM32F407单一定时器输出4路不同频率及占空比的PWM波

    程序效果演示 STM32单一定时器输出四路不同频率及占空比的PWM波 一、程序思路 因为定时器只有一个CNT计数器所以只能有一个输出频率,若要实现多路不同频率波形,只能通过在当前CNT计数器的基础上不断累加自身CCR寄存器的值来触发中断在中断中翻转波形的方式,此时中断

    2024年02月05日
    浏览(61)
  • STM32学习笔记(六)丨TIM定时器及其应用(输入捕获丨测量PWM波形的频率和占空比)

    ​  本次课程采用单片机型号为STM32F103C8T6。 ​  课程链接:江科大自化协 STM32入门教程   往期笔记链接:   STM32学习笔记(一)丨建立工程丨GPIO 通用输入输出   STM32学习笔记(二)丨STM32程序调试丨OLED的使用   STM32学习笔记(三)丨中断系统丨EXTI外部中断

    2023年04月19日
    浏览(56)
  • 基于HAL库的STM32单定时器多路输入捕获测量PWM的频率和占空比实现(状态机方式实现)

    目录  写在前面 先回顾下定时器的单路捕获PWM 多路捕获PWM的频率和占空比(状态机实现) 我的思路: 状态图 配置 给出示例代码 测试效果         先有了这篇文章实现了单定时器的多通道测量频率,以外部时钟的方式可测量任意频率的方波),奈何不能多路测试PWM波的频率,

    2024年02月12日
    浏览(51)
  • 普中STM32-PZ6806L开发板(HAL库函数实现-TIM5 设置 PWM input, 获取频率跟占空比)

    连线 APIs 创建项目 参考 普中STM32-PZ6806L开发板(HAL库函数实现-PWM呼吸灯), 使用同一个GPIO口PC7产生PWM,然后PA0引脚进行捕获 初始化TIM5 CH1 合并通道, 选项为PWM输入到CH1, 这里其实就是合并1和2通道使一个采集上升沿一个采集下降沿 主从模式开启, 先启动会等待另外一个同步启动

    2024年02月19日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包