我刚刚开始学习 8H系列单片机 ,看手册看的晕头转向 尝试自己写了这么一段代码 意图输出一个简单的PWM。 目前的状况是 可以在预设的3个引脚上输出3路PWMA。但是想输出第四路 既P1.6的 PWM4P 却无法输出(已检查P.16口正常工作 )。 并且 在程序中 直接写入3个寄存器尝试更改PWM频率 以此改变 RGB灯的颜色 失败。 请各位大佬帮忙看看问题到底出在哪里 谢谢了。
写入寄存器操作如下:
PWMA_CCR1=1200;
PWMA_CCR2=0;
PWMA_CCR3=0;
delay_ms(5000);
PWMA_CCR1=0;
PWMA_CCR2=0;
PWMA_CCR3=0;
PWM设置代码如下
// PWM初始化
void PWMA_config(void) {
// 扩展寄存器访问使能
P_SW2 |= 0x80;
// 配置全局参数
PWMA_PSCR = 0x0000; // 预分频寄存器, 分频 Fck_cnt = Fck_psc/(PSCR[15:0]+1)
PWMA_DTR = 24; // 死区时间配置
PWMA_ARRH = HIGHBYTE(2400); // 自动重装载寄存器, 控制PWM周期
PWMA_ARRL = LOWBYTE(2400);
// 清除状态寄存器
PWMA_SR1 = 0;
PWMA_SR2 = 0;
// 初始化通道配置
PWMA_CCMR1 = 0x68; // 设置通道1和通道2为PWM模式,并开启预装载功能
PWMA_CCMR2 = 0x68; // 设置通道3为PWM模式,并开启预装载功能
PWMA_CCMR3 = 0x68; // 设置通道4为PWM模式,并开启预装载功能
// 设置初始占空比
PWMA_CCR1 = 0; // PWM1 占空比
PWMA_CCR2 = 0; // PWM2 占空比
PWMA_CCR3 = 0; // PWM3 占空比
PWMA_CCR4 = 0; // PWM4 占空比
// 使能通道输出并设置极性(高电平有效)
PWMA_CCER1 = 0x55; // 使能通道1和通道2输出,高电平有效
PWMA_CCER2 = 0x55; // 使能通道3和通道4输出,高电平有效
// 设置PWM输出引脚选择
PWMA_PS = 0x00; // 默认引脚配置,选择P1.x引脚
// 使能PWM输出引脚
PWMA_ENO |= 0x15; // 仅仅使能 P1.0 P1.2 P1.4 PWMP输出
// 使能主输出
PWMA_BKR = 0x80;
// 开始计时
PWMA_CR1 |= 0x81; // 使能计数器,允许自动重装载寄存器缓冲,边沿对齐模式,向上计数
// 产生一次更新事件
PWMA_EGR = 0x01;
}