0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通过定时器1通道1(PA8)产生PWM控制LED灯

CHANBAEK 来源:CSDN-借过风景 作者:CSDN-借过风景 2023-01-31 14:29 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

简介

CH32V103系列是以青稞V3A处理器为核心的32位通用MCU,该处理器是基于RISC-V开源指令集设计。 片上集成了时钟安全机制、多级电源管理、通用DMA控制器。 此系列具有1路USB2.0主机/设备接口、多通道12位ADC转换模块、多通道TouchKey、多组定时器、多路IIC/USART/SPI接口等丰富的外设资源。

本章教程使用定时器1通道1(PA8),通过PA8引脚产生PWM控制LED。 灯LED1的亮度。

1、PWM简介及相关函数介绍

脉冲宽度调制(PWM)是一种模拟控制方式,其是利用微处理器的数字输出对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。 CH32V103的高级定时器TIM1和通用定时器TIM2/3/4均可产生PWM输出。

PWM输出模式是定时器的基本功能之一。 PWM输出模式最常见的是使用重装值确定PWM频率,使用捕获比较寄存器确定占空比的方法。 将OCxM域(比较捕获通道x模式设置域)中置110b或者111b使用PWM模式1或者模式2,置OCxPE位(比较捕获寄存器x预装载使能位)使能预装载寄存器,最后置ARPE 位(自动重装预装使能位)使能预装载寄存器的自动重装载。 在发生一个更新事件时,预装载寄存器的值才能被送到影子寄存器,所以在核心计数器开始计数之前,需要置UG位(更新事件产生位)来初始化所有寄存器。 在PWM模式下,核心计数器和比较捕获寄存器一直在进行比较,根据CMS(中央对齐模式选择)位,定时器能够输出边沿对齐或者中央对齐的PWM信号

边沿对齐:使用边沿对齐时,核心计数器增计数或者减计数,在PWM模式1的情景下,在核心计数器的值大于比较捕获寄存器时,OCxREF上升为高; 当核心计数器的值小于比较捕获寄存器时,OCxREF下降为低。

中央对齐:使用中央对齐模式时,核心计数器运行在增计数和减计数交替进行的模式下,OCxREF在核心计数器和比较捕获寄存器的值一致时进行上升和下降的跳变。 但比较标志在三种中央对齐模式下,置位的时机有所不同。 在使用中央对齐模式时,最好在启动核心计数器之前产生一个软件更新标志 (置UG位)。

关于PWM输出具体信息,可参考CH32V103应用手册。 本章教程通过定时器1通道1产生PWM控制LED,其程序所用库函数在定时器中断教程中均已介绍,在此不再赘述。

2、硬件设计

本章教程通过定时器1通道1(PA8)产生PWM控制LED灯,其中,定时器为CH32V103内部资源,无需进行硬件设计,只需进行LED连接即可,LED与GPIO引脚连接方式如下:

LED1与PA8连接。

3、软件设计

本章教程主要通过定时器产生PWM输出控制LED灯,其中,led.c文件与led.h文件前面GPIO教程中已讲解,在此不再介绍,本章主要介绍pwm.h文件、pwm.c文件以及main.c文件,具体程序如下:

pwm.h文件

poYBAGPYtMiAVGrrAAAkSuk8sqY210.png

pwm.c文件

poYBAGPYtMiAGpuqAAH0vAPqajc737.png

main.c文件

pYYBAGPYtMeAIApNAAB_xY8se-k137.png

main.c文件主要包含相关函数的初始化以及while循环函数,在while循环中,将pwmval这个值设置为PWM比较值,也就是通过pwmval来控制PWM的占空比,然后控制 pwmval的值从0变到300,然后又从300变到0,如此循环,因此 LED0 的亮度也会跟着从暗变到亮,然后又从亮变到暗。 TIM_SetCompare1用于修改占空比。

4、下载验证

将编译好的程序下载到开发板并复位,可以看到开发板LED1开始不停由暗变亮,再由亮变暗。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    243

    文章

    24447

    浏览量

    687613
  • mcu
    mcu
    +关注

    关注

    147

    文章

    18637

    浏览量

    387748
  • PWM
    PWM
    +关注

    关注

    116

    文章

    5847

    浏览量

    223880
  • 定时器
    +关注

    关注

    23

    文章

    3361

    浏览量

    121781
  • CH32V103
    +关注

    关注

    1

    文章

    13

    浏览量

    1381
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    定时器3的2通道改为定时器11通道输出怎么不行呢?

    定时器3的2通道改为定时器11通道输出怎么不行呢?以下是修改前后的代码~~修改前://
    发表于 08-10 23:54

    利用定时器产生PWM

    摘要利用定时器产生PWM波。然后利用32的外部中断和定时器来测量32输出的波形 硬件:STM32F103C8T6核心板、示波器、串口调试助手
    发表于 08-16 08:37

    STM32的定时器功能

    上一次学习的是利用定时器4,CH2通道产生PWM波来控制LED
    发表于 08-18 07:10

    高级控制和通用定时器通道引脚分布

    目录选择TIM5CH21、GPIO配置输出2、定时器配置3、调用函数使用初次易错点:使用pwm输出是首先要看,那个引脚使用可以使用pwm输出。高级控制和通用
    发表于 09-16 06:40

    如何使用资源定时器高级定时器

    (SYSTICK)高级定时器11.实现功能控制PA8(TIM1CH1PWM 输出对应频率至蜂鸣器引脚BUZ。2.初始化配置////////
    发表于 01-14 08:11

    如何通过定时器产生PWM控制LED实现呼吸的效果?

    如何通过定时器产生PWM控制LED实现呼吸的效果
    发表于 01-25 07:22

    基于GD32F310开发板的定时器产生PWM实现呼吸

    定时器PWM介绍高级定时器:(TIMER0)高级定时器(TIMER0)是四通道定时器,支持输入
    发表于 09-30 11:01

    CH32V103基础教程8-PWM输出

    本章教程使用定时器1通道1PA8),通过PA8引脚
    发表于 04-14 16:16

    如何利用stm32的高级定时器产生PWM

    用stm32的高级定时器TIM1和TIM8产生PWM,需要注意: 1.都有TIM
    发表于 10-24 15:48 7233次阅读
    如何利用stm32的高级<b class='flag-5'>定时器</b><b class='flag-5'>产生</b><b class='flag-5'>PWM</b>

    STM32-通用定时器-PWM输出

    捕获、输出比较、PWM输出、单脉冲模式输出等。STM32的定时器除了TIM6和TIM7(基本定时器)之外,其他的定时器都可以产生
    发表于 11-26 15:36 23次下载
    STM32-通用<b class='flag-5'>定时器</b>-<b class='flag-5'>PWM</b>输出

    STM8学习笔记---定时器输出7路PWM

    。其中定时器1有4个通道定时器2有3个通道。现在让定时器1
    发表于 11-26 16:06 9次下载
    STM<b class='flag-5'>8</b>学习笔记---<b class='flag-5'>定时器</b>输出7路<b class='flag-5'>PWM</b>波

    ZigBee无线传感——CC2530单片机定时器1PWM输出

    定时器1(16位)时1是一个独立的16位定时器,支持典型的定时/计数功能,比如输入捕获,输出比
    发表于 11-29 18:51 4次下载
    ZigBee无线传感——CC2530单片机<b class='flag-5'>定时器</b><b class='flag-5'>1PWM</b>输出

    STM32F103C8T6定时器TIM4通道1、2输出PWM

    STM32F103C8T6定时器TIM4通道1、2输出PWM这美妙的波形,真好,我他喵的终于把你弄出来了。STM32F103C
    发表于 12-02 18:21 72次下载
    STM32F103C<b class='flag-5'>8</b>T6<b class='flag-5'>定时器</b>TIM4<b class='flag-5'>通道</b><b class='flag-5'>1</b>、2输出<b class='flag-5'>PWM</b>

    STM32F103 PA8不能输出PWM波问题

    ,但是PA8就不能正常输出PWM波了。怀疑是串口功能和定时器功能有冲突,查看串口初始化代码,只用到了PA9和PA10,没有发现有改动
    发表于 12-02 19:36 19次下载
    STM32F103 <b class='flag-5'>PA8</b>不能输出<b class='flag-5'>PWM</b>波问题

    如何利用定时器产生PWM

    然后利用32的外部中断和定时器来测量32输出的波形硬件:STM32F103C8T6核心板、示波器、串口调试助手所用到的的引脚为PA8PA0。
    的头像 发表于 08-16 09:09 4858次阅读