泰凌微 TLSR8258 PWM

本文详细介绍了B85单板上PWM硬件配置、寄存器操作、时钟设置、周期和占空比调整,以及确保MCU运行状态下PWM输出的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概要

PWM 相关的硬件配置很简单,基本都是直接操作寄存器来实现。操作寄存器的 API ⼤都定义在 pwm.h 中,B85 共 12 路 PWM,分别为 PWM0 ~ PWM5 和 PWM0_N ~ PWM5_N,软件上只设置 6 路 PWM0 ~ PWM5,另外 6 路 PWM0_N ~ PWM5_N 是对应 PWM 的波形取反

整体架构流程

PWM ID 和管脚
在这里插入图片描述
使⽤ void gpio_set_func(GPIO_PinTypeDef pin, GPIO_FuncTypeDef func) 来设置对应管脚的 PWM 功能;
⽐如要使⽤ PA2 作为 PWM0 来⽤:
gpio_set_func(GPIO_PA2, AS_PWM0);

PWM 时钟
使⽤ API void pwm_set_clk(int system_clock_hz, int pwm_clk) 来设置 PWM 的 clock。
如果想要 PWM 时钟为 8M,可按如下设置,不管系统时钟如何变化(CLOCK_SYS_CLOCK_HZ 为 16000000、24000000 或 32000000),PWM clock 都是 8M。
pwm_set_clk(CLOCK_SYS_CLOCK_HZ, 8000000);

PWM 周期(cycle)和占空⽐(duty)
void pwm_set_cycle_and_duty(pwm_id id, unsigned short cycle_tick, unsigned short cmp_tick)
⽐如当前的 pwm clock 为 8MHz,需要设置 PWM 周期为 1ms、占空⽐为 50% 的 PWM0 ⼀个 frame ⽅法为:
pwm_set_cycle_and_duty(PWM0_ID, 8000, 4000);

PWM 开启和停⽌
void pwm_start(pwm_id id) ;
void pwm_stop(pwm_id id) ;

技术名词解释

如下设置了一个周期为1K占空比为50%,从PB3引脚输出的PWM波形

gpio_set_func(GPIO_PB3, AS_PWM0_N);
pwm_set_clk(CLOCK_SYS_CLOCK_HZ, 8000000);//8M时钟
pwm_set_cycle_and_duty(PWM0_ID, 8000, 4000);//1k周期,占空比为50%
pwm_start(PWM0_ID);

在这里插入图片描述

技术细节

提示:输出pwm期间一定要保证MCU不会进入睡眠模式,否则PWM会停止输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值