单片机/MCUwilliam hill官网
直播中

王莉

7年用户 1287经验值
私信 关注
[问答]

EPWM_EnableAcc是控制自动产生10个累加器然后自动关闭PWM输出吗?

EPWM_EnableAcc(EPWM1, 0, 10, EPWM_IFA_ZERO_POINT);
这个是控制自动产生10个累加器然后自动关闭PWM输出吗?
void EPWM1P0_IRQHandler(void)
{
    EPWM_ClearAccInt(EPWM1, 0);
}

试验了一下 貌似又无法实现!

回帖(2)

元办叙

2024-1-15 15:25:34
请参考这个代码
****************************************************************************************/
/* EPWM start output waveform functoin                                                  */
/****************************************************************************************/
// Num,       Number of wavform outputing from PWM pin
// Delay_PWM, After such PWM Period, ADC start to convert
void EPWM_Output(uint8_t Num, uint16_t Delay_PWM)
{
    if (Num == 0) return ;

    EPWM1->CNTCLR = ~0 ;
    EPWM1->IFA[0] = 0 ;
    EPWM1->IFA[0] = 0x80000000 + Num ;            // CH0,interrupt every Num period
    EPWM1->AINTSTS = ~0 ;                         // Clear interrupt flag
    NVIC_ClearPendingIRQ(EPWM1P0_IRQn);

    EPWM1->IFA[2] = 0 ;
    EPWM1->IFA[2] = 0x80000000 + Delay_PWM ;      // CH1,interrupt every Delay_PWM period
    NVIC_ClearPendingIRQ(EPWM1P1_IRQn);

    EPWM1->AINTEN = 5 ;           // Enable PWM intrrupt,Disable output after such number of period
    PDMA_Initial(Data_Num) ;                      // Configure number of data that PDMA transfering

    EPWM_TRIGGER_SYNC_START(EPWM1);               // Active EPWM0 synchronously
}
举报

h1654155275.5614

2024-1-15 18:54:41
EPWM_EnableAcc函数用来开启累加器功能,EPWM_EnableAcc(EPWM1, 0, 10, EPWM_IFA_ZERO_POINT)表示开启EPWM1通道0的累加器功能,设置累加器数量为10,并且在每个累加器的零点触发中断。这段代码并没有关闭PWM输出的功能,它只是开启了累加器功能。

EPWM_ClearAccInt函数是用来清除累加器中断标志的,它的参数中的EPWM1表示清除EPWM1通道的中断标志,0表示清除通道0的中断标志。EPWM_ClearAccInt函数的定义可能放在EPWM1P0_IRQHandler中,所以当累加器中断发生时,EPWM1P0_IRQHandler会被调用来清除中断标志。

根据您的描述,无法确定您的实验问题的具体细节,请提供更多的代码和实验环境信息,以便能够更好地帮助您解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分