1. 简介
PWM,脉冲宽度调制,通过对一系列脉冲的宽度进行调制,来等效地获得所需要的波形(含形状和幅值)简单说就是使用数字信号达到一个模拟信号的效果。结合 DMA 可以用于模拟 DAC 的效果。在此处基于上一讲的定时器完成相关操作。
从引脚中我们可以看到支持PWM输出的引脚。例如基于定时器的PA9\PA10\PA11\PB22\:
另外还有专门提供脉宽调制输出通道的引脚,例如PB14\PB7\PB4\PB23\PA13\PA12\PB6\PB0:
2. 新建工程
复制并粘贴上一讲的定时器工程,并重命名为“CH573_05_PWM”。
3. PWM初始化与设置
1) 引入CH57x_pwm.c文件
将“CH57x_pwm.c”设置为参与编译,因为有部分函数需要使用到,如TMR3_PWMCycleCfg()等函数。
2) 初始化
初始化两个PWM引脚,有两种方式,分别为基于定时器的PB22以及PWM通道4的PA12为例
//基于定时器的引脚PWM初始化:PA9\PA10\PA11\PB22
GPIOB_ResetBits(GPIO_Pin_22); // 配置PWM口 PB22
GPIOB_ModeCfg(GPIO_Pin_22, GPIO_ModeOut_PP_5mA);
TMR3_PWMInit(High_Level, PWM_Times_1);
TMR3_PWMCycleCfg(6000); // 周期 100us
//PWM引脚初始化:PB14\PB7\PB4\PB23\PA13\PA12\PB6\PB0:
GPIOA_ModeCfg(GPIO_Pin_12, GPIO_ModeOut_PP_5mA); // PA12 - PWM4
PWMX_CLKCfg(4); // cycle = 4/Fsys
PWMX_CycleCfg(PWMX_Cycle_64); // 周期 = 64*cycle
PWMX_ACTOUT(CH_PWM4, 64 / 4, Low_Level, ENABLE); // 25% 占空比
3) 使用
设定一个占空比,并不断变化,呈递增递减的方式模拟呼吸灯变化,例如:
int main()
{
SetSysClock(CLK_SOURCE_PLL_60MHz);
LED_init();//LED初始化
//基于定时器的引脚PWM初始化:PA9\PA10\PA11\PB22
GPIOB_ResetBits(GPIO_Pin_22); // 配置PWM口 PB22
GPIOB_ModeCfg(GPIO_Pin_22, GPIO_ModeOut_PP_5mA);
TMR3_PWMInit(High_Level, PWM_Times_1);
TMR3_PWMCycleCfg(6000); // 周期 100us
//PWM引脚初始化:PB14\PB7\PB4\PB23\PA13\PA12\PB6\PB0:
GPIOA_ModeCfg(GPIO_Pin_12, GPIO_ModeOut_PP_5mA); // PA12 - PWM4
PWMX_CLKCfg(4); // cycle = 4/Fsys
PWMX_CycleCfg(PWMX_Cycle_64); // 周期 = 64*cycle
PWMX_ACTOUT(CH_PWM4, 64 / 4, Low_Level, ENABLE); // 25% 占空比
uint16_t i=0;
while(1)
{
//呼吸灯1
for(i=0;i<6000;i+=20)
{
TMR3_Disable();
TMR3_PWMActDataWidth(i); //修改占空比必须暂时关闭定时器
TMR3_Enable();
DelayMs(2);
}
for(i=6000;i>0;i-=20)
{
TMR3_Disable();
TMR3_PWMActDataWidth(i); // 修改占空比必须暂时关闭定时器
TMR3_Enable();
DelayMs(2);
}
//呼吸灯2
for(i=1;i<64;i++)
{
PWMX_ACTOUT(CH_PWM4, 64 / i, Low_Level, ENABLE);
DelayMs(5);
}
for(i=64;i>1;i--)
{
PWMX_ACTOUT(CH_PWM4, 64 / i, Low_Level, ENABLE);
DelayMs(5);
}
}
}
4. 编译烧录运行
编译烧录运行后,用杜邦线分别连接PA8(板载LED引脚)与PB22、PA8与PA12,可以看到两种不同的PWM呼吸灯效果变化。
————————————————
版权声明:本文为CSDN博主「IOT趣制作」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43351158/article/details/131141484
|