这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 国产MCU » 【CH582M】CH582M的PWM控制器示例1-单独模式

共1条 1/1 1 跳转至

【CH582M】CH582M的PWM控制器示例1-单独模式

专家
2026-09-11 10:59:55     打赏

使用CH582M单片机的PWM控制器,以各自单独的模式的处理代码如下:

#include "CH58x_common.h"
/*********************************************************************
 * @fn      main
 *
 * @brief   主函数
 *
 * @return  none
 */
int main() {
    SetSysClock(CLK_SOURCE_PLL_60MHz);              // 系统时钟频率:60MHz
    /* 配置GPIO */
    GPIOA_ModeCfg(GPIO_Pin_12, GPIO_ModeOut_PP_5mA); // PA12 - PWM4
    GPIOA_ModeCfg(GPIO_Pin_13, GPIO_ModeOut_PP_5mA); // PA13 - PWM5
    GPIOB_ModeCfg(GPIO_Pin_0, GPIO_ModeOut_PP_5mA);  // PB0 - PWM6
    GPIOB_ModeCfg(GPIO_Pin_4, GPIO_ModeOut_PP_5mA);  // PB4 - PWM7
    GPIOB_ModeCfg(GPIO_Pin_6, GPIO_ModeOut_PP_5mA);  // PB6 - PWM8
    GPIOB_ModeCfg(GPIO_Pin_7, GPIO_ModeOut_PP_5mA);  // PB7 - PWM9
    GPIOB_ModeCfg(GPIO_Pin_23, GPIO_ModeOut_PP_5mA); // PB23 - PWM11
    // 时钟分频寄存器(R8_PWM_CLOCK_DIV) 
    PWMX_CLKCfg(60);                                   // PWM的时钟频率 cycle = Fsys/60 = 1MHz,周期1μs
    // 配置控制寄存器(R8_PWM_CONFIG)
    PWMX_CycleCfg(PWMX_Cycle_256);                     // 周期 = 256*cycle,即PWM波的周期为 256 * 1μs = 256μs
    // 不同占空比输出
    PWMX_ACTOUT(CH_PWM4, 2, High_Level, ENABLE);  // 1/128 占空比,对High_Level模式,即高电平为 2μs
    PWMX_ACTOUT(CH_PWM5, 4, High_Level, ENABLE);  // 1/64 占空比,对High_Level模式,即高电平为 4μs
    PWMX_ACTOUT(CH_PWM6, 8, High_Level, ENABLE);  // 1/32 占空比,对High_Level模式,即高电平为 8μs
    PWMX_ACTOUT(CH_PWM7, 16, High_Level, ENABLE);  // 1/16 占空比,对High_Level模式,即高电平为 16μs
    PWMX_ACTOUT(CH_PWM8, 32, High_Level, ENABLE);  // 12.5% 占空比,对High_Level模式,即高电平为 32μs
    PWMX_ACTOUT(CH_PWM9, 64, High_Level, ENABLE);  // 25% 占空比,对High_Level模式,即高电平为 64μs
    PWMX_ACTOUT(CH_PWM11, 128, High_Level, ENABLE); // 50% 占空比,对High_Level模式,即高电平为 128μs
    while(1) {
    }
}

其中没有测试PWM10,是因为PB14已经被WCH-Link使用,不方便做为PWM输出用了。同时为了方便查看,设置PWM的周期为256个PWM时钟计数。PWM时钟由:

PWMX_CLKCfg(60);

配置为系统时钟的1/60,因为系统时钟为60MHz,所以PWM的标准时钟频率为1MHz,则周期为1微妙。各PWM(4,5, 6,7, 8,9, 11)配置为总数为256的计数,所以各控制器输出的PWM波的周期为256 * 1μs = 256μs。

逻辑分析仪测得的波形:

image.png

与预期的数据基本一致,在High_Level模式下,高电平占用的时长为:2、4、8、16、32、64、128 μs。如果配置为Low_Level模式,则应该是低电平占用的时长为:2、4、8、16、32、64、128 μs。





关键词: CH582M     PWM    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]