CH59X/CH58X/CH57X PWM使用

发布时间 2023-09-26 15:22:54作者: 小舟从此逝_1

以CH582M为例:

CH582M有4+8组PWM这里的4路26位PWM(定时器提供),8路系统PWM(8位)

 先看系统提供的PWM:

下列截图根据例程进行测试的

注:如需要使用PWM11则需要通过isp工具关闭外部引脚功能复位功能

 接下来修改不同占空比不同翻转极性:

占空比计算:64/x/64

 接下来看定时器产生的PWM:

以通过DMA配置输出为例

例程上使用的循环模式先看循环模式

    GPIOB_ModeCfg(GPIO_Pin_11, GPIO_ModeOut_PP_5mA);
    GPIOPinRemap(ENABLE, RB_PIN_TMR2);

    PRINT("TMR2 DMA PWM\n");
    TMR2_PWMCycleCfg(60 * 2000); // 周期 2000us  主频是60Mhz 每秒震荡60M次 震荡60次为1微秒
    for(i=0; i<50; i++)
    {
      PwmBuf[i]=2400*i;
    }
    for(i=50; i<100; i++)
    {
      PwmBuf[i]=2400*(100-i);
    }

    TMR2_PWMInit(Low_Level, PWM_Times_16);
    TMR2_DMACfg(ENABLE, (uint16_t)(uint32_t)&PwmBuf[0], (uint16_t)(uint32_t)&PwmBuf[100], Mode_LOOP);
    TMR2_PWMEnable();
    TMR2_Enable();
    /* 开启计数溢出中断,计满100个周期进入中断 */
    TMR2_ClearITFlag(TMR1_2_IT_DMA_END);
    TMR2_ITCfg(ENABLE, TMR1_2_IT_DMA_END);
    PFIC_EnableIRQ(TMR2_IRQn);

__INTERRUPT
__HIGH_CODE
void TMR2_IRQHandler(void)
{
    if(TMR2_GetITFlag(TMR0_3_IT_CYC_END))
    {
        TMR2_ClearITFlag(TMR0_3_IT_CYC_END);
        /* 计数器计满,硬件自动清零,重新开始计数 */
        /* 用户可自行添加需要的处理 */
    }
    if(TMR2_GetITFlag(TMR1_2_IT_DMA_END))
    {
        TMR2_ClearITFlag(TMR1_2_IT_DMA_END);
        PRINT("DMA end\n");
        /* DMA 结束 */
        /* 用户可自行添加需要的处理 */
    }
}

 接下看单次模式;单次模式除了需要将本处进行修改还需要对中断函数进行修改

TMR2_DMACfg(ENABLE, (uint16_t)(uint32_t)&PwmBuf[0], (uint16_t)(uint32_t)&PwmBuf[100], Mode_Single);

__INTERRUPT
__HIGH_CODE
void TMR2_IRQHandler(void)
{
    if(TMR2_GetITFlag(TMR0_3_IT_CYC_END))
    {
        TMR2_ClearITFlag(TMR0_3_IT_CYC_END);
        /* 计数器计满,硬件自动清零,重新开始计数 */
        /* 用户可自行添加需要的处理 */
    }
    if(TMR2_GetITFlag(TMR1_2_IT_DMA_END))
    {
        TMR2_DMACfg(ENABLE, (uint16_t)(uint32_t)&TestBuf[0], (uint16_t)(uint32_t)&TestBuf[100], Mode_Single);
        TMR2_ClearITFlag(TMR1_2_IT_DMA_END);
        PRINT("DMA end\n");
        PFIC_DisableIRQ(TMR2_IRQn);
        TMR2_ITCfg(DISABLE,TMR1_2_IT_DMA_END);
        /* DMA 结束 */
        /* 用户可自行添加需要的处理 */
    }
}

PWM如下:

个人学习分享;如有问题请指正

转载请保留出处;