当前位置: 首页 > news >正文

GD - EmbeddedBuilder_v1.4.1.23782 - PWM官方工程功能记录

文章目录

    • GD - EmbeddedBuilder_v1.4.1.23782 - PWM官方工程功能记录
    • 概述
    • 笔记
    • EmbeddedBuilder_v1.4.1.23782\examples\GD32F3x0\examples\CMP\CMP_pwm_signal_control
    • EmbeddedBuilder_v1.4.1.23782\examples\GD32F3x0\examples\TIMER\TIMER0_dma
    • EmbeddedBuilder_v1.4.1.23782\examples\GD32F3x0\examples\TIMER\TIMER0_dma_burst
    • EmbeddedBuilder_v1.4.1.23782\examples\GD32F3x0\examples\TIMER\TIMER0_pwmout_complementarysignals
    • EmbeddedBuilder_v1.4.1.23782\examples\GD32F3x0\examples\TIMER\TIMER1_exttrigger
    • EmbeddedBuilder_v1.4.1.23782\examples\GD32F3x0\examples\TIMER\TIMER1_pwmout
    • EmbeddedBuilder_v1.4.1.23782\examples\GD32F3x0\examples\TIMER\TIMER2_pwminputcapture
    • EmbeddedBuilder_v1.4.1.23782\examples\GD32F3x0\examples\TIMER\TIMERs_cascadesynchro
    • EmbeddedBuilder_v1.4.1.23782\examples\GD32F3x0\examples\TIMER\TIMERs_parallelsynchro
    • EmbeddedBuilder_v1.4.1.23782\examples\GD32F3x0\examples\TIMER
      • TIMER0_6-steps
      • TIMER0_deadtime_break
      • TIMER1_extclock_count
      • TIMER1_ocactive
      • TIMER1_octoggle
      • TIMER1_singlepulse
    • TIMER2_inputcapture
      • TIMER2_ocinactive
      • TIMER2_timebase
    • 备注
    • END

GD - EmbeddedBuilder_v1.4.1.23782 - PWM官方工程功能记录

概述

将EmbeddedBuilder_v1.4.1.23782自带的demo工程中关于PWM的工程的功能摘出来记录一下。
以后自己工程需要类似PWM功能时,就看一下功能记录,不用从头翻官方例程了。

笔记

EmbeddedBuilder_v1.4.1.23782\examples\GD32F3x0\examples\CMP\CMP_pwm_signal_control

通过图形化配置TIMER0的输出通道(TIMER0_CH0),直接输出PWM.
通过CMP0的输出通道从MCU内部连接到TIMER0 OCREFCLR(output compare reference clear), 用于停止TIMER0_CH0的PWM输出
输出的PWM的波形都一致。
在这里插入图片描述

EmbeddedBuilder_v1.4.1.23782\examples\GD32F3x0\examples\TIMER\TIMER0_dma

通过图形化配置TIMER0的输出通道(TIMER0_CH0),直接输出PWM.
通过TIMER0加入DMA,从内存到设备传数据。
要传送的数据可以自己定义,要传送几种波形,一种波形重复几次, 每种波形的占空比。
在这里插入图片描述
PWM的重复序列是以定义的DMA占空比数据和每个波形的重复次数为一个单元进行重复的。
可以发送一个有自己定义的数组中规定的有意义的PWM波数据组。

EmbeddedBuilder_v1.4.1.23782\examples\GD32F3x0\examples\TIMER\TIMER0_dma_burst

配置TIMER0的全部4路PWM输出。
配置TIMER0通道2的更新(TIMER0_CH2_UP)为DMA, 从内存到设备。
可以配置DMA数组数据(占空比),让4路PWM输出按照自己定义的DMA数组数据输出。
uint32_t timer_chval[8] = {99, 199, 299, 399, 499, 599, 699, 799};
效果:
第1次DMA更新, TIMER0_PWM_CH0 = 99(占空比值), TIMER0_PWM_CH1 = 199(占空比值), TIMER0_PWM_CH2 = 299(占空比值), TIMER0_PWM_CH3 = 399(占空比值);
第2次DMA更新, TIMER0_PWM_CH0 = 499(占空比值), TIMER0_PWM_CH1 = 599(占空比值), TIMER0_PWM_CH2 = 699(占空比值), TIMER0_PWM_CH3 = 799(占空比值);
以后的DMA更新,就是循环 第1次DMA更新, 第2次DMA更新
对于PA8(TIMER0_PWM_CH0)的PWM占空比输出值,就是99, 499的循环波形。
在这里插入图片描述

EmbeddedBuilder_v1.4.1.23782\examples\GD32F3x0\examples\TIMER\TIMER0_pwmout_complementarysignals

配置TIMER0的3路PWM(TIMER_CH0, TIMER_CH1, TIMER_CH2)为双输出(正向,反向)
e.g. TIMER_CH0值 = 1时,TIMER_CH0_ON值 = 0. 等于是TIMER_CH0和TIMER_CH0_ON的值是互补的。
e.g. TIMER_CH0占空比 = 10%时,TIMER_CH0_ON占空比 = 90%. 等于是TIMER_CH0和TIMER_CH0_ON的值是互补的。
在这里插入图片描述

在这里插入图片描述

EmbeddedBuilder_v1.4.1.23782\examples\GD32F3x0\examples\TIMER\TIMER1_exttrigger

用pin来触发定时器的PWM, 实验用的是TIMER1_CH0来触发TIMER1_CH2上的PWM输出。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

EmbeddedBuilder_v1.4.1.23782\examples\GD32F3x0\examples\TIMER\TIMER1_pwmout

将TIMER1的3个通道(TIMER1_CH1,TIMER1_CH2,TIMER1_CH3)都配置成PWM, 其输出不同占空比。

EmbeddedBuilder_v1.4.1.23782\examples\GD32F3x0\examples\TIMER\TIMER2_pwminputcapture

用TIMER2捕获输入的PWM波形的频率和占空比,并用串口输出。
在这里插入图片描述
在这里插入图片描述

EmbeddedBuilder_v1.4.1.23782\examples\GD32F3x0\examples\TIMER\TIMERs_cascadesynchro

用TIMER1 => TIMER2 => TIMER0串联成一个更大的定时器。
这要没有图形化配置,很难用代码配置成功(主要是不知道配置的对不对)。

EmbeddedBuilder_v1.4.1.23782\examples\GD32F3x0\examples\TIMER\TIMERs_parallelsynchro

用TIMER14作为TIMER2和TIMER0的时钟的并联输入,让TIMER2和TIMER0输出PWM.

EmbeddedBuilder_v1.4.1.23782\examples\GD32F3x0\examples\TIMER

因为PWM全部使用定时器完成的,想再看看官方的TIMER例程都讲了啥。
TIMER例程中有一些是专门将PWM的例程,上面都看过啥干嘛的了。将剩下的例程功能记录如下:

TIMER0_6-steps

配置了TIMER0的3个通道的正相和反相(共6个pin)和TIMER0_BREAKIN(死区时间相关)
在这里插入图片描述
通道的触发模式为定时器模式
在这里插入图片描述
在中断回调(timer0_irq_parameter.commutation_handle)来操作3对通道的输出。

TIMER0_deadtime_break

在波形(正向输出通道和对应的互补输出通道)变化时,加入死区时间。

TIMER1_extclock_count

对TIMER1的通道输入进行沿计数

TIMER1_ocactive

TIMER1的3个通道输出波形,3个通道的波形有相对延迟时间。
在这里插入图片描述

TIMER1_octoggle

不用PWM模式,也能输出PWM波
在这里插入图片描述

TIMER1_singlepulse

用按键触发一个单脉冲输出
按键所在的输入通道和单脉冲的输出通道,都是TIMER1本身的通道,不能是任意pin.
在这里插入图片描述

TIMER2_inputcapture

TIMER2的输入捕获。
通过 timer2_irq_parameter.channelx_capture_handle 的回调测量捕获波形的高电平脉宽,从而能算出被捕获波形的频率。

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

TIMER2_ocinactive

TIMER2的输出变化侦测,可以知道什么时候输出通道的电平发生变化(到达比较值)
在timer2_irq_parameter.channelx_compare_handle回调中写自己的判断逻辑。

"Clock source"的实际值都是一样的,都是CK_TIMERX, e.g. 108MHZ
如果"Clock source"是disable, 分频时的单位是MHZ.
如果"Clock source"是internal clock, 分频是的单位是HZ.
在这里插入图片描述
在这里插入图片描述
对于定时器的比较模式,有点概念了。
官方文档上有说明
在这里插入图片描述

TIMER2_timebase

用TIMER2产生一个1秒钟的时基(tick), 那么在这个1s的tick回调(timer2_irq_parameter.update_handle)中,就可以做事情了。
如果让一个TIMER来做扩展时基,配置时,只需要指定时钟源为内部时钟。其他都不选或者都是disable.
在这里插入图片描述
如果有自己的回调要执行,才需要配置对应的系统中断。
否则不用生成系统中断
在这里插入图片描述

在这里插入图片描述

备注

看EmbeddedBuilder_v1.4.1.23782的官方工程实现,如果想将实验都做了,需要6通道的示波器…

官方PWM的demo, 演示的比较简单。只演示了这些知识点的启动,然后就让用户自己用示波器去看输出波形。
至于何时启动/停止/动态改变占空比这些实际应用中要用到的动作,一点没说。

END


http://www.mrgr.cn/news/17081.html

相关文章:

  • vscode写markdown(引入html及css语法)
  • 滑模控制2021年12月8日
  • 【MySQL数据库管理问答题】第14章 使用 MySQL InnoDB 集群实现高可用性
  • Driver.js——实现页面引导
  • 深度学习速通系列:Bert模型vs大型语言模型(LLM)
  • 团队比赛时如何给小组记分?
  • 并发编程之CountDownLatchSemaphore原理与应用
  • 算法数学加油站:一元高斯分布(正态分布)Python精美科研绘图(PDF、CDF、PPF、ECDF曲线;QQ图)
  • Git 使用指南 --- 版本管理
  • 【荒原之梦考研数学】考研没有人支持,怎么办?
  • python pyqt statusBar 完整的操作方法详细说明和代码举例
  • 编译原理概述
  • 八皇后问题代码实现(java,递归)
  • ubuntu通过smba访问华为设备
  • 【面试经验】腾讯面试题:在QQ增加电商购物场景,拼多多、京东、淘宝怎么选
  • 13:DCDC电源模块的布局
  • linux环境下安装配置go环境
  • 嵌入式笔试准备
  • JAVA 检查儿童身高是否达标
  • 热力学系统平衡态