| 
				打卡等级:以坛为家III打卡总天数:680最近打卡:2025-10-31 06:53:59 荣誉版主 
 
	积分1338 
 | 
 
 发表于 2023-5-22 09:21:40
|
显示全部楼层 
| 请教PWMB_SMCR   = 0x60;语句的作用。 应该是PWMB_SMCR   = 0x06;
 
 //========================================================================
 // 函数: void PWMB_config(void)
 // 描述: PPWM配置函数。
 // 参数: noe.
 // 返回: none.
 // 版本: V1.0, 2021-5-10
 // 备注:
 //========================================================================
 void PWMB_config(void)
 {
 P_SW2 |= 0x80;                //SFR enable
 
 PWMB_PSCR = 11;        // 预分频寄存器, 分频 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,
 //                                0xc0 ~(0xc0+n), n=0~31: DTR=(32+n)*8T,   0xE0 ~(0xE0+n), n=0~31: DTR=(32+n)*16T,
 PWMB_CCER1  = 0;
 PWMB_CCER2  = 0;
 PWMB_CR1    = 0;                // 使能计数器, 允许自动重装载寄存器缓冲, 边沿对齐模式, 向上计数,  bit7=1:写自动重装载寄存器缓冲(本周期不会被打扰), =0:直接写自动重装载寄存器本(周期可能会乱掉)
 PWMB_CR2    = 0;
 PWMB_SR1    = 0;
 PWMB_SR2    = 0;
 PWMB_ENO    = 0;        //IO禁止输出PWM,  bit6: ENO8P, bit4: ENO7P,  bit2: ENO5P,  bit0: ENO4P
 PWMB_PS     = 0;
 PWMB_IER    = 0;
 
 PWMB_CCMR1  = 0x31;                // 通道5模式配置, 配置成输入通道, 8个时钟滤波
 //        PWMB_CCER1 |= (0x01+0x02);        // 0x01:允许输入捕获, +0x00:上升沿, +0x02:下降沿
 PWMB_PS    |= 0;                // 选择IO, 0:选择P2.0, 1:选择P1.7, 2:选择P0.0, 3:选择P7.4,
 //        PWMB_IER   |= 0x02;                // 使能中断
 
 PWMB_CCMR2  = 0x31;                // 通道6模式配置, 配置成输入通道, 8个时钟滤波
 //        PWMB_CCER1 |= (0x10+0x20);        // 0x10:允许输入捕获, +0x00:上升沿, +0x20:下降沿
 PWMB_PS    |= (0<<2);        // 0:选择P2.1, 1:选择P5.4, 2:选择P0.1, 3:选择P7.5,
 //        PWMB_IER   |= 0x04;                // 使能中断
 
 PWMB_CCMR3  = 0x31;                // 通道7模式配置, 配置成输入通道, 8个时钟滤波
 //        PWMB_CCER2 |= (0x01+0x02);        // 0x01:允许输入捕获, +0x00:上升沿, +0x02:下降沿
 PWMB_PS    |= (0<<4);        // 选择IO, 0:选择P2.2, 1:选择P3.3, 2:选择P0.2, 3:选择P7.6,
 //        PWMB_IER   |= 0x08;                // 使能中断
 
 PWMB_EGR    = 0x01;                //产生一次更新事件, 清除计数器和预分频计数器, 装载预分频寄存器的值
 PWMB_SMCR   = 0x60;
 PWMB_BKR    = 0x00;                //主输出使能 相当于总开关
 PWMB_CR1   |= 0x01;                // 使能计数器, 允许自动重装载寄存器缓冲, 边沿对齐模式, 向上计数,  bit7=1:写自动重装载寄存器缓冲(本周期不会被打扰), =0:直接写自动重装载寄存器本(周期可能会乱掉)
 
 //        P2n_standard(0x07);        //通道5 6 7输出IO设置为准双向口
 }
 
 考虑到代码运行ok,说明该语句可以删除不用。
 
 
 | 
 |