本帖最后由 pidnews 于 2020-7-29 16:48 编辑
NUC029LAN,在NUC029xAN_BSPv3.00.003的PWM基础上修改,那个代码只有PWMA的,在板子上试过正常,但改成PWMB的后,运行发现PWM_ConfigOutputChannel后,发现SystemCoreClock从50M变成了25M多,查PWMB运行调用了SystemCoreClockUpdate();而PWMA不会调用这个,这个bsp是不是有bug
代码如下:在PWM_ConfigOutputChannel设置断点,停下来的时候SystemCoreClock是50M, 运行完PWM_ConfigOutputChannel,SystemCoreClock就变了;PWM_ConfigOutputChannel是BSP里面的库函数,我就不贴了,另外这个是在BSP samplecode基础上改的,注释没改
void PWM_Init(void)
{
/* Enable PWM module clock */
CLK_EnableModuleClock(PWM01_MODULE);
CLK_EnableModuleClock(PWM23_MODULE);
CLK_EnableModuleClock(PWM45_MODULE);
/* Select PWM module clock source */
CLK_SetModuleClock(PWM01_MODULE, CLK_CLKSEL1_PWM01_S_HCLK, 0);
CLK_SetModuleClock(PWM23_MODULE, CLK_CLKSEL1_PWM23_S_HCLK, 0);
CLK_SetModuleClock(PWM45_MODULE, CLK_CLKSEL2_PWM45_S_HCLK, 0);
/* Reset PWMA channel0~channel3 */
SYS_ResetModule(PWM03_RST);
SYS_ResetModule(PWM47_RST);
SYS->P2_MFP &= ~SYS_MFP_P20_Msk;
SYS->P2_MFP |= SYS_MFP_P20_PWM0;
SYS->P2_MFP &= ~SYS_MFP_P21_Msk;
SYS->P2_MFP |= SYS_MFP_P21_PWM1;
SYS->P2_MFP &= ~SYS_MFP_P22_Msk;
SYS->P2_MFP |= SYS_MFP_P22_PWM2;
SYS->P2_MFP &= ~SYS_MFP_P23_Msk;
SYS->P2_MFP |= SYS_MFP_P23_PWM3;
SYS->P2_MFP &= ~SYS_MFP_P24_Msk;
SYS->P2_MFP |= SYS_MFP_P24_PWM4;
PWM_ConfigOutputChannel(PWMB, PWM_CH0, 52000, 47);
PWM_EnableOutput(PWMB, BIT0);
PWM_Start(PWMB, BIT0);
}
|