芯启元 发表于 2026-6-30 13:30:16

24-高级PWMA-PWMB-PWMC-PWMD-PWME-PWMF输出测试程序,STC32G144K246实验箱演示程序

24-高级PWMA-PWMB-PWMC-PWMD-PWME-PWMF输出测试程序,STC32G144K246实验箱演示程序
主程序main.C代码如下(汇编版本在附件中):



/*---------------------------------------------------------------------*/
/* --- Web: www.STCAI.com ---------------------------------------------*/
/* --- BBS: www.STCAIMCU.com-----------------------------------------*/
/* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序      */
/*---------------------------------------------------------------------*/

/*************功能说明    **************

本例程基于STC32G144K246为主控芯片的实验箱进行编写测试。

使用Keil C251编译器,Memory Model推荐设置XSmall模式,默认定义变量在edata,单时钟存取访问速度快。

edata建议保留1K给堆栈使用,空间不够时可将大数组、不常用变量加xdata关键字定义到xdata空间。

高级 PWMA,PWMB,PWMC,PWMD,PWME,PWMF 每组4个通道都可独立实现PWM输出.

高级 PWMA,PWMC,PWME 每个通道可输出2路互补对称的PWM信号.

PWM周期和占空比可以自定义设置,最高可达65535.

下载时, 选择时钟 48MHz (用户可自行修改频率).

******************************************/

#include "pwm.h"

/****************本地常量声明**************/


/****************本地变量声明**************/


/****************本地函数声明**************/


/***************** 主函数 *********************/
void main(void)
{
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

    P0M1 = 0x00;   P0M0 = 0xff;   //设置为推挽输出
    P4M1 = 0xc0;   P4M0 = 0x02;   //P41设置为推挽输出, P46,P47高阻输入(实验箱与P87,P86相连)
    P6M1 = 0x00;   P6M0 = 0xff;   //设置为推挽输出
    P7M1 = 0x00;   P7M0 = 0xff;   //设置为推挽输出
    P8M1 = 0x00;   P8M0 = 0xff;   //设置为推挽输出
    P9M1 = 0x00;   P9M0 = 0xff;   //设置为推挽输出
    PAM1 = 0x00;   PAM0 = 0xff;   //设置为推挽输出
    PBM1 = 0x00;   PBM0 = 0xff;   //设置为推挽输出

    PWMA_Init();
    PWMB_Init();
    PWMC_Init();
    PWMD_Init();
    PWME_Init();
    PWMF_Init();

    P41 = 0;    //打开LED电源
    EA = 1;   //打开总中断

    while (1);
}


页: [1]
查看完整版本: 24-高级PWMA-PWMB-PWMC-PWMD-PWME-PWMF输出测试程序,STC32G144K246实验箱演示程序