找回密码
 立即注册
查看: 494|回复: 8

系统主频是24MHz,怎么调整pwm的赫兹是1Hz

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-02-12 11:31:19
已绑定手机

7

主题

10

回帖

81

积分

注册会员

积分
81
发表于 2024-11-26 17:41:44 | 显示全部楼层 |阅读模式
STC8A8K64D芯片设置15bit的pwm,
主频是24MHz,现在需要将P6.3引脚的pwm初始化成1Hz频率,50%占空比,
请问如下这个代码**位置需要怎么计算获取,我没看到手册里面描述的计算公式

void PWM15_config(void) {
    PWM15_InitTypeDef PWM15_InitStructure;

    PWM15_InitStructure.PWM_Enable    = ENABLE;
    PWM15_InitStructure.PWM_Period    = **;   
    PWM15_InitStructure.PWM_Clock_Sel = PWM_CLK_SYS;
    PWM15_InitStructure.PWM_Clock_PS  = **;;
    PWM15_InitStructure.PWM_CInt      = DISABLE;
    PWM15_InitStructure.PWM_Counter   = ENABLE;
    PWM15_Init(&PWM15_InitStructure);


    PWM15Duty(PWM15_3, **/2, **); // 50% 占空比
    PWMChannelCtrl(PWM15_3, ENABLE, PWM15_SW_P2, 0, DISABLE, DISABLE, DISABLE);
}


手册里面看到PWM计算公式,

手册里面看到PWM计算公式,
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-11-26 20:34:46 | 显示全部楼层
截图202411262022473179.jpg

截图202411262024395468.jpg

截图202411262025151592.jpg

截图202411262025499969.jpg

SELT2=0,分母最大值仍然不够24M
所以只能SELT2=1
截图202411262028472788.jpg

定时器配置为0x10000-24000,溢出频率1000Hz
[PWMCH,PWMCL]+1=1000
[PWMCH,PWMCL]=999

截图202411262031399653.jpg

PWMCH=0x03

PWMCL=0xE7

截图202411262032341129.jpg

截图202411262033334756.jpg

截图202411262034164395.jpg

T2H=0x5D
T2L=0xC0
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:213
  • 最近打卡:2025-04-23 20:59:03
已绑定手机

36

主题

560

回帖

1885

积分

荣誉版主

积分
1885
发表于 2024-11-26 21:13:26 | 显示全部楼层
本帖最后由 Yim_Hom 于 2024-11-26 21:22 编辑

15位PWM说的是2的15次方,所以计数最大32767,最大预分频系数PS全写1再去加1也只有16分频,单纯24M的系统时钟去分频再计数,到不了1Hz。所以楼上是正解,但是很有可能双串口的情况下,共用定时器2,所以定时器方式你可能也用不了。怎么办呢?
我最初也被这个问题困扰过,想办法把定时器2腾出来就去干PWM这个事,要不就是把24降一半到12M或者11.0592M,12M/16/32767,频率能到21至23之间,然后假装21Hz就是1Hz,用比例去换算。
当然,也可以换成STC8H的16位。15位到16位多了1位,但分频值却可以在1-65535之间去选,这样至少比8A8K的15+1范围大了去了。24M以60000分频,分出来就是400。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:375
  • 最近打卡:2025-04-26 15:51:33
已绑定手机

27

主题

301

回帖

822

积分

高级会员

积分
822
发表于 2024-11-26 21:36:37 | 显示全部楼层
1HZ  上定时器
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-11-26 22:01:25 | 显示全部楼层
选择定时器2溢出率做PWM时钟。
定时器2工作于1T,  则PWM最低频率为:24000000/65536/32768=0.011176Hz。
定时器2工作于12T,则PWM最低频率为:24000000/12/65536/32768=0.0009313Hz。
你要1Hz,可以这样:定时器2工作于1T模式溢出率为24000000/2400=10000Hz,PWM周期为10000,就是1Hz。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:123
  • 最近打卡:2025-04-19 16:12:35
已绑定手机

60

主题

777

回帖

4001

积分

论坛元老

自定义头衔

积分
4001
发表于 2024-11-27 00:08:17 | 显示全部楼层
梁*** 发表于 2024-11-26 22:01
选择定时器2溢出率做PWM时钟。
定时器2工作于1T,  则PWM最低频率为:24000000/65536/32768=0.011176Hz。
...

赞!学到了,居然还有这个功能

溢出一次,PWM计数器才增加1

那如果PWM最低频率0.0009313Hz

岂不是每1073秒,PWM才完成一个周期

点评

那是  详情 回复 发表于 2024-11-27 08:16
联系我请点击左下角的【回复】按钮,否则我收不到消息提
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-11-27 08:16:02 | 显示全部楼层
VC*** 发表于 2024-11-27 00:08
赞!学到了,居然还有这个功能

溢出一次,PWM计数器才增加1

那是
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-29 08:28:25
已绑定手机

17

主题

446

回帖

1173

积分

金牌会员

积分
1173
发表于 2024-11-27 09:52:14 | 显示全部楼层
软件模拟省事些
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1835

积分

金牌会员

积分
1835
发表于 2024-11-27 10:01:53 | 显示全部楼层
50%占空比是不是固定?
PWM分辨率要多少位?
1Hz是很慢的
随便用个定时器来软件模拟就行
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 02:25 , Processed in 0.120321 second(s), 106 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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