- 打卡等级:偶尔看看III
- 打卡总天数:50
- 最近打卡:2025-04-30 22:59:03
超级版主
- 积分
- 12073
|
发表于 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:直接写自动重装载寄存器本(周期可能会乱掉)
}
|
|