cjtdz 发表于 2024-4-2 17:51:05

为什么观测不到PWM波形

本帖最后由 cjtdz 于 2024-4-2 17:52 编辑

网上买的STC32单片机实验板,写入”布丁橘长的084-高级PWM定时器-互补输出和死区插入-PWM1P,PWM1N互补输出“十六进制文件后,为什么在STC32G12K128芯片的P1.0/P1.1脚上,用示波器观察不到PWM波形?
原文:
//        @布丁橘长 2023/03/03
//        PWMA互补输出示例,PWM1P、PWM1N(P1.0、P1.1)输出一组互补对称波形,周期200us,占空比50%
//        实验开发板:STC32G12K128屠龙刀三.1 主频@12MHz

#include <STC32G.H>
#include "config.h"

#define PWM_PSC                 (12-1)                //12分频,时钟周期1us
#define PWM_PERIOD         200                                //周期200us
#define PWM_DUTY    100                                //占空100us

void PWMA_Config(void);                                //PWMA初始化设置函数

void main(void)
{
        EAXFR = 1;                                                                         // 使能访问 XFR
        CKCON = 0x00;                                                         // 设置外部数据总线速度为最快
        WTST = 0x00;                                                                // 设置程序代码等待参数,等待时间为0个时钟,CPU执行程序速度最快

        P0M1 = 0x00;P0M0 = 0x00;                //设置P0口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
        P1M1 = 0x00;P1M0 = 0x00;                //设置P1口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
        P2M1 = 0x00;P2M0 = 0x00;                //设置P2口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
        P3M1 = 0x00;P3M0 = 0x00;                //设置P3口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
        P4M1 = 0x00;P4M0 = 0x00;                //设置P4口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
        P5M1 = 0x00;P5M0 = 0x00;                //设置P5口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
        P6M1 = 0x00;P6M0 = 0x00;                //设置P6口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
        P7M1 = 0x00;P7M0 = 0x00;                //设置P7口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
       
        PWMA_Config();                                                        //PWMA初始化设置
       
        while (1);
}
void PWMA_Config(void)
{
        PWMA_PSCRH = (u16)(PWM_PSC >> 8);
        PWMA_PSCRL = (u16)(PWM_PSC);                                 //预分频
       
        PWMA_CCER1 = 0x00;                                                                         // 写 CCMRx 前必须先清零 CCERx 关闭通道
        PWMA_CCMR1 = 0x60;                                                                         // 设置 CC1 CC1N为 PWMA 输出模式,PWM模式1
        PWMA_CCER1 = 0x05;                                                                         // 使能 CC1 CC1N通道
       
        PWMA_CCR1H = (u16)(PWM_DUTY>> 8);                // 设置初始占空
        PWMA_CCR1L = (u16)(PWM_DUTY);
       
        PWMA_ARRH = (u16)(PWM_PERIOD >> 8); // 设置PWM周期
        PWMA_ARRL = (u16)(PWM_PERIOD);
       
        PWMA_ENO = 0x03;                                                                                 // 使能 PWM1P PWM1N端口输出
        PWMA_BKR = 0x80;                                                                                // 使能主输出
       
        PWMA_CR1 = 0x01;                                                                                 // 启动PWMA定时器
}

wan123456 发表于 2024-4-2 20:59:55

先用官方例程试试…

cjtdz 发表于 2024-4-2 22:13:03

wan123456 发表于 2024-4-2 20:59
先用官方例程试试…

就是没动啊

wan123456 发表于 2024-4-3 10:32:02

没有动的话就比对下手册…一个型号的才可以…

AI-32位8051 发表于 2024-4-3 15:28:46

STC32G-高级PWM范例程序大礼包来啦!建议先用官网范例程序测试




【新提醒】STC32G-高级PWM范例程序下载 - BLDC/144MHz时钟源PWM/45路PWM+3路CCP/7组不同周期的PWM/DAC - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区https://www.stcaimcu.com/forum.p ... 1778&extra=page%3D1


cjtdz 发表于 2024-4-3 16:19:25

搞好了,是写入到文件搞错了
页: [1]
查看完整版本: 为什么观测不到PWM波形