- 打卡等级:初来乍到
- 打卡总天数:8
- 最近打卡:2024-09-24 11:06:27
注册会员
- 积分
- 194
|
发表于 2023-11-28 10:45:03
|
显示全部楼层
以下是我上次用到的代码,水平有限,你可以参照一下,
//-------------------------PWM初始化--------------------------------
void PWM_Init()
{
P_SW2 = 0x80; //特殊功能寄存器位于扩展RAM区域
//需先将P_SW2的BIT7设置为1,才可正常读写
PWMA_CCER1 = 0x00; //写CCMRx前必须先清零CCERx以关闭通道
PWMA_CCER2 = 0x00;
PWMA_CCMR2 = 0x60; //通道2为PWM模式1
PWMA_CCMR3 = 0x60; //通道3为PWM模式1
PWMA_CCER1 = 0x10; //配置通道2输出使能和高电平有效
PWMA_CCER2 = 0x04; //配置通道3输出使能和高电平有效
PWMA_PSCRH = 119/256; //系统时钟12分频
PWMA_PSCRL = 119%256; //PWM时钟频率100KHz
PWMA_ARRH = 99/256; //计数100,PWM输出频率1K
PWMA_ARRL = 99%256;
PWMA_BKR = 0x80; //打开PWMA主输出使能
PWMA_CR1 = 0x01; //预装载缓冲,边沿对齐,向上计数。
EA = 1; //开总中断
//PWMA_EGR |= 0x01; //置位UG,产生更新事件,清零各寄存器
//PWMA_EGR |= 0x01;
//PWMA_PS = 0x00;
//PWMB_PS = 0x04; //PWM输出引脚切换
//PWMA_ENO |= 0x14; //打开PWM2P,PWM3P输出
}
/**************************************************
//----------------PWM端口开关函数---------------------
void Red_PWM_ON() {
PWMA_CCMR2 |= 0x60; //转换回PWM1模式
PWMA_CCMR2 &= 0xef;
PWMA_ENO |= 0x04;}
void Red_PWM_OFF() { PWMA_ENO &= 0xfb;}
|
|