|
1、文档中是否有错误(标红处);2、单独测试PWMA 、PWMB (TI1/5上升沿外部触发)均正常,就是PMWB触发PWMA(既:“用外部信号同步的触发两个 PWM”)A无法工作,B正常
PWM初始化程序如下
//配置高速PWM时钟源
CLKSEL = 0xC0; //第一步:选择 PLL 输出时钟,选择 PLL 的 144M 作为 PLL 的输出时钟1100,0000
USBCLK |= 0x20; //第二步:设置分频/2
USBCLK |= 0x80; //第三步:使能 PLL 倍频
delay();
HSCLKDIV = 0; //第四步:HSPWM/HSSPI 时钟 源不分频
delay();
//配置高速PWMA
HSPWMA_CFG = 0x07; //使能 PWMA 相关寄存器异步访问功能
WritePWMA((char)&PWMA_CCMR2, 0x70); //OC2REF 输出 PWM2(CNT<CCR 时输出有效电平 1)
WritePWMA((char)&PWMA_CCER1, 0x50); // 使能 CC2/CC2N 上的输出功能
WritePWMA((char)&PWMA_ENO, 0x04); // 使能 PWM 信号输出到端口
WritePWMA((char)&PWMA_BKR, 0x80); // 使能主输
WritePWMA((char)&PWMA_CCR2H, PWM_Circle>>8); // 设置输出 PWM 的占空比
WritePWMA((char)&PWMA_CCR2L, PWM_Circle);
WritePWMA((char)&PWMA_ARRH, PWM_Circle>>8); // 设置输 出 PWM 的周期
WritePWMA((char)&PWMA_ARRL, PWM_Circle);
WritePWMA((char)&PWMA_CR1, 0x84); //1000 0101 溢出产生更新事件,并产生中断,UIF置1 CEN=0,
WritePWMA((char)&PWMA_IER, 0x00); //关PWMA中断
//配置高速PWMB
HSPWMB_CFG = 0x07; //使能 PWMB 相关寄存器异步访问功能,允许中断
WritePWMB((char)&PWMB_CCMR2, 0x70); //OC6REF 输出 PWM6(CNT<CCR 时输出有效电平 1)
WritePWMB((char)&PWMB_CCER1, 0x50); // 使能 CC6 上的输出功能
WritePWMB((char)&PWMB_ENO, 0x04); // 使能 PWM 信号输出到端口
WritePWMB((char)&PWMB_BKR, 0x80); // 使能主输
WritePWMB((char)&PWMB_CCR6H, PWM_Circle>>8); // 设置输出 PWM 的占空比
WritePWMB((char)&PWMB_CCR6L, PWM_Circle);
WritePWMB((char)&PWMB_ARRH, PWM_Circle>>8); // 设置输 出 PWM 的周期
WritePWMB((char)&PWMB_ARRL, PWM_Circle);
WritePWMB((char)&PWMB_CR1, 0x84); //1000 0101 溢出产生更新事件,并产生中断,UIF置1 CEN=0,
WritePWMB((char)&PWMB_IER, 0x01); //开PWMB中断
//用外部信号(TI5上升沿)同步触发PWMA\PWMB
WritePWMB((char)&PWMB_CR2, 0x10); //配置 PWMB_CR2 寄存器的 MMS=001 0001 0000
WritePWMB((char)&PWMB_SMCR,0xc6); //配置 PWMB_SMCR 寄存器的 TS =100 X100 XXXX
//配置 PWMB_SMCR 寄存器的 SMS=110 XXXX X110
//配置 PWMB_SMCR 寄存器的 MSM=1 1XXX XXXX
//所以 0xc6 1100 0110
WritePWMA((char)&PWMA_SMCR,0x26); //配置 PWMA_SMCR 寄存器的 TS =010 X010 XXXX
//配置 PWMA_SMCR 寄存器的 SMS=110 XXXX X110
//所以 0x26 0010 0110
|
-
|