0 ~ 10V调光电路图
复制/粘贴到8路
注:D2二极管的选择
#include "dis_pwm.h"
int pwm_out1=50;
int pwm_out2=100;
int pwm_out3=150;
int pwm_out4=200;
int pwm_out5=250;
int pwm_out6=300;
int pwm_out7=350;
int pwm_out8=1000;
void PWM_Init()
{
P_SW2 |= 0x80; //使能访问XFR
PWMA_PSCR = 0x0000; //预分频寄存器,不分频
PWMA_DTR = 0; //死区时间配置
PWMA_ARR = 1000; //自动重装载寄存器,控制PWM周期
PWMA_CCER1 = 0;
PWMA_CCER2 = 0;
PWMA_SR1 = 0;
PWMA_SR2 = 0;
PWMA_ENO = 0; //IO输出使能
PWMA_PS = 0;
PWMA_IER = 0; //中断使能寄存器位
PWMB_PSCR = 0x0000; // 预分频寄存器
PWMB_DTR = 0; // 死区时间配置
PWMB_ARR = 1000; // 自动重装载寄存器, 控制PWM周期
PWMB_CCER1 = 0;
PWMB_CCER2 = 0;
PWMB_SR1 = 0;
PWMB_SR2 = 0;
PWMB_ENO = 0; // IO输出允许
PWMB_PS = 0;
PWMB_IER = 0;
/* PWM1 -- P10 */
PWMA_CCMR1 = 0x68; // 通道模式配置, PWM模式1, 预装载允许
PWMA_CCR1 = pwm_out1; // 比较值, 控制占空比(高电平时钟数)
PWMA_CCER1 |= 0x01; // 开启比较输出, 高电平有效
PWMA_PS |= 0; // 选择IO
PWMA_ENO |= 0x01; // IO输出允许
// PWMA_IER |= 0x02; // 使能中断
/* PWM2 -- P12 */
PWMA_CCMR2 = 0x68; // 通道模式配置, PWM模式1, 预装载允许
PWMA_CCR2 = pwm_out2; // 比较值, 控制占空比(高电平时钟数)
PWMA_CCER1 |= 0x10; // 开启比较输出, 高电平有效
PWMA_PS |= (0<<2); // 选择IO
PWMA_ENO |= 0x04; // IO输出允许
// PWMA_IER |= 0x04; // 使能中断
/* PWM3 -- P14 */
PWMA_CCMR3 = 0x68; // 通道模式配置, PWM模式1, 预装载允许
PWMA_CCR3 = pwm_out3; // 比较值, 控制占空比(高电平时钟数)
PWMA_CCER2 |= 0x01; // 开启比较输出, 高电平有效
PWMA_PS |= (0<<4); // 选择IO
PWMA_ENO |= 0x10; // IO输出允许
// PWMA_IER |= 0x08; // 使能中断
/* PWM4 -- P16 */
PWMA_CCMR4 = 0x68; // 通道模式配置, PWM模式1, 预装载允许
PWMA_CCR4 = pwm_out4; // 比较值, 控制占空比(高电平时钟数)
PWMA_CCER2 |= 0x10; // 开启比较输出, 高电平有效
PWMA_PS |= (0<<6); // 选择IO
PWMA_ENO |= 0x40; // IO输出允许
// PWMA_IER |= 0x10; // 使能中断
/* PWM5 -- P17 */
PWMB_CCMR1 = 0x68; // 通道模式配置, PWM模式1, 预装载允许
PWMB_CCR5 = pwm_out5; // 比较值, 控制占空比(高电平时钟数)
PWMB_CCER1 |= 0x01; // 开启比较输出, 高电平有效
PWMB_PS |= 1; // 选择IO
PWMB_ENO |= 0x01; // IO输出允许
// PWMB_IER |= 0x02; // 使能中断
/* PWM6 -- P54 */
PWMB_CCMR2 = 0x68; // 通道模式配置, PWM模式1, 预装载允许
PWMB_CCR6 = pwm_out6; // 比较值, 控制占空比(高电平时钟数)
PWMB_CCER1 |= 0x10; // 开启比较输出, 高电平有效
PWMB_PS |= (1<<2); // 选择IO
PWMB_ENO |= 0x04; // IO输出允许
// PWMB_IER |= 0x04; // 使能中断
/* PWM7 -- P33 */
PWMB_CCMR3 = 0x68; // 通道模式配置, PWM模式1, 预装载允许
PWMB_CCR7 = pwm_out7; // 比较值, 控制占空比(高电平时钟数)
PWMB_CCER2 |= 0x01; // 开启比较输出, 高电平有效
PWMB_PS |= (1<<4); // 选择IO
PWMB_ENO |= 0x10; // IO输出允许
// PWMB_IER |= 0x08; // 使能中断
/* PWM8 -- P34 */
PWMB_CCMR4 = 0x68; // 通道模式配置, PWM模式1, 预装载允许
PWMB_CCR8 = pwm_out8; // 比较值, 控制占空比(高电平时钟数)
PWMB_CCER2 |= 0x10; // 开启比较输出, 高电平有效
PWMB_PS |= (1<<6); // 选择IO
PWMB_ENO |= 0x40; // IO输出允许
// PWMB_IER |= 0x10; // 使能中断
PWMA_BKR = 0x80; // 主输出使能 相当于总开关
PWMA_CR1 = 0x81; // 使能计数器, 允许自动重装载寄存器缓冲
PWMA_EGR = 0x01; //产生一次更新事件
// PWMA_ISR_En = PWMB_IER; //设置标志允许通道5~8中断处理
PWMB_EGR = 0x01; //产生一次更新事件
PWMB_BKR = 0x80; // 主输出使能 相当于总开关
PWMB_CR1 = 0x81; // 使能计数器, 允许自动重装载寄存器缓冲
// PWMB_ISR_En = PWMB_IER; //设置标志允许通道5~8中断处理
}