使用STC8H2K08U在STCAI-ISP(V6.94E)软件里《STC8H系列-带死区控制的PWM互补对称输出-C》例程中使用“直接下载HEX”后效果如图(直接下载),更改代码后效果如(更改后),频率为24MHZ,测量引脚为P10(黄),P11(红)。移相引脚好像没有配置为什么也有输出呢?PS5(黄),PS6(红)
-
- /*------------------------------------------------------------------*/
- /* --- STC MCU International Limited -------------------------------*/
- /* --- STC 1T Series MCU Demo --------------------------------------*/
- /* --- Fax: 86-0513-55012956,55012947,55012969 ---------------------*/
- /* --- Tel: 86-0513-55012928,55012929,55012966 ---------------------*/
- /* --- Web: www.stcai.com ------------------------------------------*/
- /* --- BBS: www.stcaimcu.com ---------------------------------------*/
- /* If you want to use the program or the program referenced in the */
- /* article, please specify in which data and procedures from STC */
- /*------------------------------------------------------------------*/
-
-
- #define MAIN_Fosc 24000000UL //定义主时钟
-
- #include "STC8Hxxx.h"
-
- /************* 功能说明 **************
-
- 先别修改程序, 直接下载"pwm.hex"测试, 下载时选择主频24MHz.
- 如果启动外部晶振, 请接24MHz的晶振. 如果接12MHz晶振, PWM配置函数要相应修改USBCLK设置.
-
- 使用高速PWM(HSPWM)方式操作PWMAPS5、PWMAPS6.
- PWM时钟选择PLL时钟144MHz, PWM周期为2400个时钟,PWM频率为60KHz.
-
- 例子输出IO:
- PWMAPS6 PWMAPS5
- P1.5 P1.3
-
-
- ******************************************/
-
-
- void PWMA_config(void);
- void GPIO_config(void);
-
-
- /******************** 主函数 **************************/
- void main(void)
- {
- P_SW2 |= 0x80; //SFR enable
-
- GPIO_config();
- PWMA_config();
-
- while (1)
- {
- NOP(8);
- }
- }
-
-
- void delay()
- {
- u16 i;
- for (i=0; i<100; i++);
- }
- void GPIO_config(void)
- {
- P0M0 = 0x00; P0M1 = 0x00;
- P1M0 = 0x2b; P1M1 = 0x00;
- P2M0 = 0x00; P2M1 = 0x00;
- P3M0 = 0x00; P3M1 = 0x00;
- P4M0 = 0x00; P4M1 = 0x00;
- P5M0 = 0x00; P5M1 = 0x00;
- P6M0 = 0x00; P6M1 = 0x00;
- P7M0 = 0x00; P7M1 = 0x00;
-
- }
-
-
- void PWMA_ISR() interrupt 26
- {
- if( PWMA_SR1 & 0X02)
- {
- // P03 = ~P03;
- PWMA_SR1 &=~0X02;
- }
- }
-
- //========================================================================
- // 函数: void PWMA_config(void)
- // 描述: PWM配置函数。
- // 参数: noe.
- // 返回: none.
- // 版本: V1.0, 2022-3-15
- // 备注:
- //========================================================================
- void PWMA_config(void)
- {
- P_SW2 |= 0x80; //SFR enable
-
- PWMA_ENO = 0x01 + 0x02; //输出使能寄存器,P10,P11
- PWMA_ENO = 0XFF;
- PWMA_PS = 0x00; //引脚切换
-
- /**********************************************************
- PWMx_duty = [CCRx/(ARR + 1)]*100
- ***********************************************************/
- PWMA_PSCRH = 0x00; //预分频器高
- PWMA_PSCRL = 0x00; //预分频器低
- PWMA_DTR = 0x00; //死区时间配置 1195页
-
- PWMA_CCMR1 = 0X68; //通道模式配置
- PWMA_CCMR2 = 0X68;
- PWMA_CCMR3 = 0X68;
- PWMA_CCMR4 = 0X68;
-
- PWMA_ARRH = 0X80; //自动重装载寄存器,计数器overflow点
- PWMA_ARRL = 0X00;
-
- PWMA_CCR1H = 0X04; //计数器比较值
- PWMA_CCR1L = 0X00;
- PWMA_CCR2H = 0X02;
- PWMA_CCR2L = 0X00;
- PWMA_CCR3H = 0X01;
- PWMA_CCR3L = 0X00;
- PWMA_CCR4H = 0X01;
- PWMA_CCR4L = 0X00;
-
- PWMA_CCER1 = 0X55; //配置通道输出使能和极性
- PWMA_CCER2 = 0X55;
-
- PWMA_BKR = 0X80; //主输出使能 相当于总开关
- PWMA_IER = 0X02; //使能中断
- PWMA_CR1 = 0X01; //使能计数器
-
- EA = 1;
- while (1);
- }
复制代码
|