梁工 发表于 2024-1-14 23:02:34

flashlix 发表于 2024-1-14 20:31
楼主,请问两个问题:
1、在使用高速高级PWM进行捕获时,捕获数值的寄存器的时钟源是按系统时钟计时还是按 ...

1、在使用高速高级PWM进行捕获时,捕获数值的寄存器的时钟源是按PLL时钟。

2、PWMA、PWMB是两组相互独立的PWM,各自操作互不干涉,PWM7/8属于PWMB,PWM1P疏于PWMA,各自为政。

flashlix 发表于 2024-1-15 16:19:30

本帖最后由 flashlix 于 2024-1-15 16:23 编辑

收到,谢谢大师解惑。另外,请问下梁工,STC32G12K128用外部12M无源晶振 ±10ppm作为时钟源,PLL后时钟的精度咋样?有这方面的数据没有呢?

咫尺天涯 发表于 2024-2-25 22:10:59

学习了

sjh007 发表于 2024-11-12 16:44:21

我想问下 stc32能输出20mhz左右的方波信号吗,有实现过的大佬吗。
要求频率可调

神农鼎 发表于 2024-11-12 16:56:55

sjh007 发表于 2024-11-12 16:44
我想问下 stc32能输出20mhz左右的方波信号吗,有实现过的大佬吗。
要求频率可调
...

可以,要工作在 5V, STC32G8K64, 直接工作在 40MHz, 2分频输出时钟

sjh007 发表于 2024-11-12 18:58:41

神农鼎 发表于 2024-11-12 16:56
可以,要工作在 5V, STC32G8K64, 直接工作在 40MHz, 2分频输出时钟

哦,我想问下能不能输出可调占空比的pwm,比如输出20mhz,占空比可以改变寄存器值来控制的

zuodazuo 发表于 2025-6-17 09:44:43

梁工 发表于 2024-1-14 23:02
1、在使用高速高级PWM进行捕获时,捕获数值的寄存器的时钟源是按PLL时钟。

2、PWMA、PWMB是两组相互独立 ...
楼主,请教一下,我用的你的参考程序的配置,测出来的频率,用的还是系统时钟频率来计数的,不是pll的频率来计数的,请问怎么才能用pll的时钟给计数器计数呢?

梁工 发表于 2025-6-17 10:15:05

zuodazuo 发表于 2025-6-17 09:44
楼主,请教一下,我用的你的参考程序的配置,测出来的频率,用的还是系统时钟频率来计数的,不是pll的频率 ...

PLL个PWM时钟,请参考“板凳”楼层的程序。

zuodazuo 发表于 2025-6-17 13:29:12

zhp 发表于 2023-3-14 17:41
STC32G系列单片机的高速PWM可以和CPU工作在不同频率
STC32G12K128系列CPU最高工作频率可达35MHz
STC32G8K64 ...
楼主刚才的问题应该是解决了,144MHz作为计数器的基频,现在问题是,测量低一点的频率,计数器溢出,那么计数器溢出中断怎么配置的?WritePWMA((char)&PWMA_CR1, 0x03); //开始计时,允许计时器溢出更新中断这个配置对吗?中断里面                sta = ReadPWMA((char)&PWMA_SR1);
          if(sta & 0X01)//计时器溢出事件中断
    {
                        jishiyichunum++;
                }这样检测对吗?实测没有效果
我是捕获cc1的周期的,中断程序如下:

/*捕获中断、事件更新中断*/
void PWMA_ISR() interrupt 26
{
                u32 cnt;
                u8 sta;
                sta = ReadPWMA((char)&PWMA_SR1);
          if(sta & 0X01)//计时器溢出事件中断
    {
                        jishiyichunum++;
                }
    if(sta & 0X02)//CC1捕获中断
    {
                        P07 = ~P07;
//                        PWMA_SR1 &=~0X02;
                        cnt = ReadPWMA((char)&PWMA_CCR1H);
                        cnt = (cnt<<8)+ReadPWMA((char)&PWMA_CCR1L)+jishiyichunum*0xffff;//CC1捕获周期宽度
                        zhuce_time_interval =cnt;
                        jishiyichunum = 0;
//                        TIM1CH1_CAPTURE_VAL= cnt;
//                        TIM1CH1_CAPTURE_num++;
    }
                WritePWMA((char)&PWMA_SR1, 0x00);   //清除完成标志
}

页: 1 2 [3]
查看完整版本: 如何测量72MHz以下的外部信号,STC32的144MHz的高速PWM