本帖最后由 DebugLab 于 2024-8-18 22:43 编辑
参考例程23.10.15,修改PWMA输出互补带死区PWM,使用OC1和OC1N,但是示波器测量无死区时间,对比例程,没找到问题点,求助大神。使用芯片为8H1K08 TSSOP20封装。
- void PWM_init()
- {
- //左右推挽MOS使用对称死区PWM驱动,使用PWMA的PWM1P和PWM1N
- //预分频数等于PSCR值+1,
- //边沿对齐模式PWM频率= 主频/((PSCR + 1)*(ARR + 1)) duty = CCR / (ARR + 1) 参考23.7.7 1128页 已验证
- //中间对齐模式PWM频率= 主频/((PSCR + 1)*(ARR * 2)) duty = CCR / (ARR) 已验证
-
- P_SW2 |= 0x80;
-
- PWMA_ENO = 0x03; //输出通道使能 1P1N
- PWMA_PS = 0x00; //输出引脚选择切换
-
- PWMA_PSCR = 1000;
- // PWMA_PSCRH = 0x10; //预分频
- // PWMA_PSCRL = 0X00;
- PWMA_DTR = 0x2F; //死区时间
-
- // PWMA_CCER1 = 0x00; //关闭通道OCi,方便配置CCMR
- PWMA_CCMR1 = 0x68; //OC1选择在模式6(PWM模式1),并使能CRR预装载
-
- PWMA_ARR = 800;
- // PWMA_ARRH = 0x08; //自动重装值,溢出值
- // PWMA_ARRL = 0X00;
-
- PWMA_CCR1 = 400;
- // PWMA_CCR1H = 0X04; //比较值
- // PWMA_CCR1L = 0x00;
-
- PWMA_CCER1 = 0x05; //打开通道OC1和OC1N,并配置极性,高电平有效
-
- PWMA_BKR = 0x80; //主输出使能
- PWMA_IER = 0x02; //使能中断
- PWMA_CR1 = 0x01; //使能计时器
- }
复制代码
|