张平 发表于 2023-7-30 11:26:30

关于PWM6输出脚不能切换请教

本帖最后由 张平 于 2023-7-30 11:27 编辑

想把PWM6切换到P0.1输出,PWMB_PS   = 0X02;       这里随便怎么切换都是在P2.1输出,麻烦问一下是我哪里没有设置对吗?


{
      P_SW2 |= 0x80;                //SFR enable   

      PWMB_PSCR = 0x0000;      // 预分频寄存器, 分频 Fck_cnt = Fck_psc/(PSCR[15:0}+1), 边沿对齐PWM频率 = SYSclk/((PSCR+1)*(AAR+1)), 中央对齐PWM频率 = SYSclk/((PSCR+1)*(AAR+1)*2).
      PWMB_DTR= 0;                // 死区时间配置,   n=0~127: DTR= n T,   0x80 ~(0x80+n), n=0~63: DTR=(64+n)*2T,
                                                // 对PWMB没有意义0xc0 ~(0xc0+n), n=0~31: DTR=(32+n)*8T,   0xE0 ~(0xE0+n), n=0~31: DTR=(32+n)*16T,
      PWMB_ARR = 2400;      // 自动重装载寄存器,控制PWM周期
      PWMB_CCER1= 0;
      PWMB_CCER2= 0;
      PWMB_SR1    = 0;
      PWMB_SR2    = 0;
      PWMB_ENO    = 0;                // IO输出允许,bit6: ENO8P, bit4: ENO7P,bit2: ENO6P,bit0: ENO5P
      PWMB_PS   = 0;
      PWMB_IER    = 0;

      PWMB_CCMR2= 0x68;                        // 通道模式配置, PWM模式1, 预装载允许
      PWMB_CCR2   = 800;                        // 比较值, 控制占空比(高电平时钟数)
      PWMB_CCER1 |= 0x10;                        // 开启比较输出, 高电平有效
      PWMB_PS   = 0X02;                              // 0:选择P2.1, 1:选择P5.4, 2:选择P0.1, 3:选择P7.5,
      PWMB_ENO   |= 0x04;                       // IO输出允许,bit6: ENO8P, bit4: ENO7P,bit2: ENO6P,bit0: ENO5P
//      PWMB_IER   |= 0x04;               // 使能中断

      PWMB_EGR    = 0x01;                        //产生一次更新事件, 清除计数器和预分频计数器, 装载预分频寄存器的值
      PWMB_BKR    = 0x80;                        // 主输出使能 相当于总开关
      PWMB_CR1    = 0x81;                        // 使能计数器, 允许自动重装载寄存器缓冲, 边沿对齐模式, 向上计数,bit7=1:写自动重装载寄存器缓冲(本周期不会被打扰), =0:直接写自动重装载寄存器本(周期可能会乱掉)
}               

张平 发表于 2023-7-30 12:40:07

搞定,改成 PWMB_PS    |= (1<<3);就可以了

manzunzu 发表于 2024-8-3 08:31:12

我刚好在找这个,谢谢分享
页: [1]
查看完整版本: 关于PWM6输出脚不能切换请教