|
#include "stc32g.h"
#include "STC32G_UART.h"
#include "STC32G_NVIC.h"
#include "STC32G_Switch.h"
////////////////////////////////////////////////////
u16 nDuty=500;
unsigned int f=2000 ; //设置周期值
unsigned long lcount=0;
sbit x=P2^6;
/************* 本地函数声明 **************/
void UART_config(void);
void PWMA_config(void);
/**********************************************/
void main(void)
{
WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
EAXSFR(); //扩展SFR(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
UART_config();
PWMA_config();
while (1)
{
}//while(1)
}
//========================================================================
// 函数: void PWMA_config(void)
// 描述: PPWM配置函数。
// 参数: noe.
// 返回: none.
// 版本: V1.0, 2021-5-10
// 备注:
//========================================================================
void PWMA_config(void)
{
u8 ccer1;
u8 ccer2;
u8 ps;
u8 eno;
u8 PWMA_ISR_En=0;
P_SW2 |= 0x80; //SFR enable
PWMA_ENO = 0; // IO输出禁止
PWMA_IER = 0; // 禁止中断
PWMA_SR1 = 0; // 清除状态
PWMA_SR2 = 0; // 清除状态
ccer1 = 0;
ccer2 = 0;
ps = 0;
eno = 0;
PWMA_ISR_En = 0;
PWMA_PSCRH = 0; // 预分频寄存器, 分频 Fck_cnt = Fck_psc/(PSCR[15:0}+1), 边沿对齐PWM频率 = SYSclk/((PSCR+1)*(AAR+1)), 中央对齐PWM频率 = SYSclk/((PSCR+1)*(AAR+1)*2).
PWMA_PSCRL = 0;
f=2000 ;
PWMA_ARRH = (u8)(f >> 8); //设置周期时间
PWMA_ARRL = (u8)f;
//nDuty=0.1*f;
nDuty=0.9*f;
PWMA_CCR4H = (u8)(nDuty >> 8);
PWMA_CCR4L = (u8)(nDuty );
PWMA_CCMR4 = (3<<4); // 通道1模式配置, 禁止预装载. 0: 无输出, 1:匹配时输出高, 2:匹配时输出低, 3:匹配时输出翻转.
ccer2 |= 0x10; // 开启比较输出, 高电平有效
ps |= (1<<6); // 选择IO, 0:选择P1.6 P1.7, 1:选择P2.6 P2.7, 2:选择P6.6 P6.7, 3:选择P3.3 P3.4
eno |= 0x40; // IO输出允许, bit7: ENO4N, bit6: ENO4P, bit5: ENO3N, bit4: ENO3P, bit3: ENO2N, bit2: ENO2P, bit1: ENO1N, bit0: ENO1P
PWMA_ISR_En|= 0x10; // 使能中断
PWMA_CCER1 = ccer1; // 捕获/比较使能寄存器1
PWMA_CCER2 = ccer2; // 捕获/比较使能寄存器2
PWMA_PS = ps; // 选择IO
PWMA_IER = PWMA_ISR_En; //设置允许通道1~4中断处理
PWMA_EGR = 0x01; //产生一次更新事件, 清除计数器和预分频计数器, 装载预分频寄存器的值
PWMA_BKR = 0x80; //主输出使能 相当于总开关
PWMA_CR1 = 0x01; // 使能计数器, 允许自动重装载寄存器缓冲, 边沿对齐模式, 向上计数, bit7=1:写自动重装载寄存器缓冲(本周期不会被打扰), =0:直接写自动重装载寄存器本(周期可能会乱掉)
PWMA_ENO = eno; // 允许IO输出
}
上面这个是我根据梁工的代码改了一下,P26接动器,发现占空比0.1和0.9电机转速差不多,没有调频率来的明显,请问问题出在那里。 |
|