| 
				打卡等级:以坛为家I打卡总天数:216最近打卡:2025-10-31 11:24:48   超级版主 
 
	积分14622 
 | 
 
 发表于 2023-5-22 22:34:42
|
显示全部楼层 
| 哪里的例子?我的例子没有操作SMCR寄存器:
 void PWMB_config(void)
 {
 P_SW2 |= 0x80;                //SFR enable
 
 PWMB_CCER1  = 0;
 PWMB_CCER2  = 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_ISR_En = 0;
 
 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_CCMR1   = 0x01;        // CC1配置为输入模式, 且映射到TI1FP1上
 PWMB_CCER1  |= 0x01;        // 配置捕获极性为CC1的上升沿, 使能捕获, 0x01:上升沿, 0x03:下降沿
 PWMB_CCMR2   = 0x02;        // CC2配置为输入模式, 且映射到TI1FP2上
 PWMB_CCER1  |= 0x30;        // 配置捕获极性为CC2的下降沿, 使能捕获, 0x10:上升沿, 0x30:下降沿
 PWMB_PS     |= 0;                // 选择IO, 0:选择P2.0, 1:选择P1.7, 2:选择P0.0, 3:选择P7.4,
 PWMB_ISR_En |= 0x02;        // 使能CC1中断
 PWMB_ISR_En |= 0x04;        // 使能CC2中断
 P2n_standard(Pin0);                // P2.0设置为准双向口
 P20 = 1;
 
 PWMB_CCMR3   = 0x01;        // CC3配置为输入模式, 且映射到TI3FP3上
 PWMB_CCER2  |= 0x01;        // 配置捕获极性为CC3的上升沿, 使能捕获, 0x01:上升沿, 0x03:下降沿
 PWMB_CCMR4   = 0x02;        // CC2配置为输入模式, 且映射到TI3FP4上
 PWMB_CCER2  |= 0x30;        // 配置捕获极性为CC4的下降沿, 使能捕获, 0x10:上升沿, 0x30:下降沿
 PWMB_PS     |= (0<<4);        // 选择IO, 0:选择P2.2, 1:选择P3.3, 2:选择P0.2, 3:选择P7.6,
 PWMB_ISR_En |= 0x08;        // 使能CC3中断
 PWMB_ISR_En |= 0x10;        // 使能CC4中断
 P2n_standard(Pin2);                // P2.2设置为准双向口
 P22 = 1;
 
 PWMB_IER  = PWMB_ISR_En;        //设置标志允许通道1~4中断处理
 PWMB_CR1 |= 0x01;                // 使能计数器, 允许自动重装载寄存器缓冲, 边沿对齐模式, 向上计数,  bit7=1:写自动重装载寄存器缓冲(本周期不会被打扰), =0:直接写自动重装载寄存器本(周期可能会乱掉)
 }
 
 | 
 |