- 打卡等级:初来乍到
- 打卡总天数:6
- 最近打卡:2025-06-24 16:01:54
注册会员
- 积分
- 81
|
代码如下
//测试工作频率为11.0592MHz
#include "stc32g.h" //头文件见下载软件
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;
//////////////PWM////////////
void PWMInit();
u8 PWMH;u8 PWML;
void main()
{
EAXFR = 1; //使能访问XFR
CKCON = 0x00; //设置外部数据总线速度为最快
WTST = 0x00; //设置程序代码等待参数, //赋值为0可将CPU执行程序的速度设置为最快
P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00;
/////////////////PWM//////////
PWMInit();
while (1)
{ }
}
void PWMInit()
{
PWMH=0x01;
PWML=0x40;
PWMA_CCER1 = 0x00; //写 CCMRx 前必须先清零 CCxE 关闭通道
PWMA_CCER2 = 0x00;
PWMA_CCMR1 = 0x60; //通道模式配置
PWMA_CCMR2 = 0x60;
PWMA_CCMR3 = 0x60;
PWMA_CCMR4 = 0x60;
PWMA_CCER1 = 0x55; //配置通道输出使能和极性
PWMA_CCER2 = 0x55;
PWMA_CCMR1 |= 0x08; //开启PWMA_CCRx预转载功能(需要CCxE=1才可写)
PWMA_CCMR2 |= 0x08;
PWMA_CCMR3 |= 0x08;
PWMA_CCMR4 |= 0x08;
PWMA_CCR1H = PWMH; //设置占空比时间
PWMA_CCR1L = PWML;
PWMA_CCR2H = PWMH; //设置占空比时间
PWMA_CCR2L = PWML;
PWMA_CCR3H = PWMH; //设置占空比时间
PWMA_CCR3L = PWML;
PWMA_CCR4H = PWMH; //设置占空比时间
PWMA_CCR4L = PWML;
PWMA_ARRH = 0x02; //设置周期时间
PWMA_ARRL = 0x00;
PWMA_ENO = 0xFF;
PWMA_PS = 0xD5; //高级 PWM 通道输出脚选择位 Key 4P_4,3P_2,2P_2,2N_2,1P_2,1N_2 11 01 01 01 D5
PWMA_BKR = 0x80; //使能主输出
PWMA_CR1 |= 0x81; //使能ARR预装载,开始计时
PWMB_CCER1 = 0x00; //写 CCMRx 前必须先清零 CCxE 关闭通道
PWMB_CCER2 = 0x00; //写 CCMRx 前必须先清零 CCxE 关闭通道
PWMB_CCMR1 = 0x60; //通道模式配置
PWMB_CCMR2 = 0x60;
PWMB_CCMR3 = 0x60;
PWMB_CCMR4 = 0x60;
PWMB_CCER1 = 0x55; //配置通道输出使能和极性
PWMB_CCER2 = 0x55; //配置通道输出使能和极性
PWMB_CCMR1 |= 0x08; //开启PWMA_CCRx预转载功能(需要CCxE=1才可写)
PWMB_CCMR2 |= 0x08;
PWMB_CCMR3 |= 0x08;
PWMB_CCMR4 |= 0x08;
PWMB_CCR5H = PWMH; //设置占空比时间
PWMB_CCR5L = PWML;
PWMB_CCR6H = PWMH; //设置占空比时间
PWMB_CCR6L = PWML;
PWMB_CCR7H = PWMH; //设置占空比时间
PWMB_CCR7L = PWML;
PWMB_CCR8H = PWMH; //设置占空比时间
PWMB_CCR8L = PWML;
PWMB_ARRH = 0x02; //设置周期时间
PWMB_ARRL = 0x00;
PWMB_ENO = 0xFF;
PWMB_PS = 0xDA; //高级 PWM 通道输出脚选择位 8_4,7_2,6_3,5_3 11011010 DA
PWMB_BKR = 0x80; //使能主输出
PWMB_CR1 |= 0x81; //使能ARR预装载,开始计时
}
问题是供电电压是12V,PWM控制MOS管调节电压,所有P通道电压是9V,所有N通道输出电压是5V,我想P通道和N通道输出电压一样,请问程序哪里有问题?
MCU的P通道脚电压3.114V
N通道脚电压1.877V
|
|