找回密码
 立即注册
查看: 55|回复: 2

STC8H4K32TL是不能用组合PWM么

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:158
  • 最近打卡:2026-04-28 06:55:25
已绑定手机

35

主题

124

回帖

371

积分

中级会员

积分
371
发表于 2026-3-21 23:50:33 | 显示全部楼层 |阅读模式
  1. #include        "STC8Hxxx.h"
  2. #include         "intrins.h"                                                                            // Keil 内部函数头文件
  3. #define MAIN_Fosc                11059200L                                                        // 定义主时钟
  4. #define PWM1_1      0x00                                                                        // P:P1.0  N:P1.1
  5. #define PWM3_1      0x00                                                                        // P:P1.4  N:P1.5
  6. u16 PWM_PERIOD = 0;                                                                                        // PWM周期
  7. // PWMA配置--充电PWM
  8. void PWMA_config(void)
  9. {
  10.     PWMA_PSCRH = 0x00;
  11.     PWMA_PSCRL = 0x00;          // 预分频=1
  12.     PWM_PERIOD = 74;           // 周期160 → 24MHz/160 = 150kHz
  13.     PWMA_CCER1 = 0x00;
  14.     PWMA_CCER2 = 0x00;
  15.     PWMA_CCMR1X = 0x00;         // PWM1模式
  16.     PWMA_CCMR1  = 0x60;
  17.     PWMA_CCMR3X = 0x01;         // 组合PWM2模式
  18.     PWMA_CCMR3  = 0x50;
  19.     PWMA_CCMR4X = 0x00;         // PWM1模式
  20.     PWMA_CCMR4  = 0x60;
  21.     PWMA_CCER1 = 0x55;
  22.     PWMA_CCER2 = 0x55;
  23.     PWMA_ARRH = (u8)(PWM_PERIOD >> 8);
  24.     PWMA_ARRL = (u8)PWM_PERIOD;
  25.     PWMA_ENO = 0x00;
  26.     PWMA_ENO |= ENO1P;
  27.     PWMA_ENO |= ENO3P;
  28.     PWMA_PS = 0x00;
  29.     PWMA_PS |= PWM1_1;          // P1.0/P1.1
  30.     PWMA_PS |= PWM3_1;          // P1.4/P1.5
  31.         PWMB_BKR = 0;               // 关
  32.     PWMA_CR1 = 0x01;                         // 向上计数,开始计时
  33. }
  34. // PWMA转接函数
  35. void PWMA_SetDuty(u8 duty1,u8 duty2, u8 deadtime)
  36. {
  37.     PWMA_CCR1H = (u8)(duty1 >> 8);
  38.     PWMA_CCR1L = (u8)(duty1);
  39.    
  40.     PWMA_CCR3H = (u8)((deadtime) >> 8);
  41.     PWMA_CCR3L = (u8)((deadtime));
  42.     PWMA_CCR4H = (u8)((deadtime + duty2) >> 8);
  43.     PWMA_CCR4L = (u8) (deadtime + duty2);
  44.         PWMA_BKR = 0x80;                          // 使能主输出
  45. }
  46. void IO_Init(void)
  47. {
  48.         P1M0 = (P1M0 & ~0xea) | 0x11; P1M1 = (P1M1 & ~0x11) | 0xea;      P1IE &= ~0xfb;
  49.     P5M0 &= ~0x10; P5M1 |= 0x10;     P5IE &= ~0x10;
  50.     P3M0 = 0x14; P3M1 = 0xeb;     P3IE &= ~0xb7;
  51. }
  52. // 主函数
  53. void main(void)
  54. {       
  55.         P_SW2 |= 0x80;                                                                                                                                                                // SFR enable
  56.         IRCDB = 0x10;                                                // 内部高速时钟起振等待稳定的时钟数 低于33Mhz 默认值0x10       
  57.         IAP_TPS = 11;                                                // 根据晶振值设置 40Mhz 就是写入40 30Mhz写入30  22.1184Mhz 就是写入22
  58.     //EA = 1;
  59.    
  60.     IO_Init();
  61.     PWMA_config();
  62.     // 主循环
  63.         while(1)
  64.         {
  65.         PWMA_SetDuty(15,12,2);
  66.     }
  67. }
复制代码
同样的程序 我烧录在AI8H2K32U-LQFP32上,观测P10 14引脚 是可以观测到波形的

但是烧录在STC8H4K32TL0LQFP32上 观测这两个引脚的时候 观测不到 P14的PWM输出 只有高电平 然后P10是出了PWM的 频率 占空比都对的上

所需波形如图所示 黄色P10 蓝色P14

截图202603212349529149.jpg
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:674
  • 最近打卡:2026-05-08 09:06:14
已绑定手机

52

主题

2618

回帖

9119

积分

论坛元老

积分
9119
发表于 2026-3-23 00:17:35 | 显示全部楼层
8系列单片机支持硬件移相组合模式的暂时只有这两个系列
截图202603230017253657.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:158
  • 最近打卡:2026-04-28 06:55:25
已绑定手机

35

主题

124

回帖

371

积分

中级会员

积分
371
发表于 2026-3-23 10:19:15 | 显示全部楼层
乘风*** 发表于 2026-3-23 00:17
8系列单片机支持硬件移相组合模式的暂时只有这两个系列

原来在最底下 没看到
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-5-9 05:41 , Processed in 0.162757 second(s), 61 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表