|
本帖最后由 大表嫂 于 2023-5-23 16:46 编辑
【虚心请教】这个代码写的有问题吗?当我用示波器观察波形的时候,有锯齿,而且当给波形放大到1us的时候,有抖动,请问这是什么问题呢? 代码如下:
#include "STC8H.h"
typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;
#define PWM_PSC (120-1) //12分频
#define PWM_PERIOD 2000 //周期20毫秒
#define PWM_DUTY_0 100 //占空比2.5%
void main(void)
{
P_SW2 |= 0X80; //扩展寄存器(XFR)访问使能
P1M0 = 0xff; P1M1 = 0x00;
PWMA_CCER1 = 0x00; // 写 CCMRx 前必须先清零 CCERx 关闭通道
PWMA_CCMR1 = 0x60; // 设置 CC1 为 PWMA 输出模式
PWMA_CCER1 = 0x01; // 使能 CC1 CC2通道
PWMA_CCR1H = (u16)(PWM_DUTY_0 >> 8); // 设置占空比时间 占空比2.5%
PWMA_CCR1L = (u16)(PWM_DUTY_0);
PWMA_PSCRH = (u16)(PWM_PSC >> 8);
PWMA_PSCRL = (u16)(PWM_PSC); //119+1=120预分频
PWMA_ARRH = (u16)(PWM_PERIOD >> 8); // 设置PWM周期
PWMA_ARRL = (u16)(PWM_PERIOD);
PWMA_ENO = 0x01; // 使能 PWM1P 端口输出
PWMA_BKR = 0x80; // 使能主输出
PWMA_CR1 = 0x01; // 启动PWM定时器
while(1)
{
}
}
|
|