baigezy 发表于 2024-11-28 13:56:33

DebugLab 发表于 2024-11-28 11:13
高速PWM以16bit高级PWM为基础,支持使用PLL时钟源,寄存器异步访问,其他与16bit高级PWM相同
...

异步访问就不能开启PWM中断,是吧?

王昱顺 发表于 2024-11-28 15:05:19

baigezy 发表于 2024-11-28 13:55
请问一下,高速PWM不能开启PWM中断?谢谢

可以开启的,不过太高速的情况可能会出现中断间隔太短而反复进入中断,进而无法执行其他任务,谨慎开启

baigezy 发表于 2024-11-28 15:27:32

王昱顺 发表于 2024-11-28 15:05
可以开启的,不过太高速的情况可能会出现中断间隔太短而反复进入中断,进而无法执行其他任务,谨慎开启 ...

谢谢,还有个问题,高速PWM那些寄存器必须异步读写,那些不需要异步读写呢?

baigezy 发表于 2024-11-28 15:33:42

王昱顺 发表于 2024-11-28 15:05
可以开启的,不过太高速的情况可能会出现中断间隔太短而反复进入中断,进而无法执行其他任务,谨慎开启 ...

void PWM_init()
{
        PWMA_PS =0x01;
        CLKSEL |=0xC0;   //内部输出PLL时钟144M,并且作为IO端口的工作时钟源
        HSCLKDIV = 0x00;
        HPLLCR =0xFF;        //使能PLL功能,最高频率输出
        HSCLKDIV =0;        //不分频
        HSPWMA_CFG = 0x03;        //使能异步控制模式,异步模式下使能PWM中断;       
        WritePWMA((char)&PWMA_CCER1,0X00);
        WritePWMA((char)&PWMA_CCMR1,0X00);
        WritePWMA((char)&PWMA_CCMR1,0X60);
        WritePWMA((char)&PWMA_CCER1,0X01);
        WritePWMA((char)&PWMA_ENO,0X01);
        WritePWMA((char)&PWMA_CCR1H,512>>8);
        WritePWMA((char)&PWMA_CCR1L,512);
        WritePWMA((char)&PWMA_ARRH,1023>>8);//频率141khz
        WritePWMA((char)&PWMA_ARRL,1023);                //10位精度
        WritePWMA((char)&PWMA_DTR,0);//死区
        WritePWMA((char)&PWMA_BKR,0X80);
        WritePWMA((char)&PWMA_CR1,0X01);
        WritePWMA((char)&PWMA_ENO,0xff);
}
麻烦你给看看,还有那些寄存器没有设定,我在屠龙刀上跑的,没有PWM输出

王昱顺 发表于 2024-11-28 15:34:33

baigezy 发表于 2024-11-28 15:27
谢谢,还有个问题,高速PWM那些寄存器必须异步读写,那些不需要异步读写呢? ...

PWMx_PS不用异步读写,因为不属于PWM部分。
其他的都需要使用异步读写,不然两边的时钟速度不一致无法通讯

王昱顺 发表于 2024-11-28 15:47:38

本帖最后由 王昱顺 于 2024-11-28 15:48 编辑

baigezy 发表于 2024-11-28 15:33
void PWM_init()
{
      PWMA_PS =0x01;

您好,你的PLL部分是有一点问题的

32G并没有PLLCR寄存器

以下是范例程序提供的切换时钟

并且,请在配置的开头加入
EAXFR = 1; //扩展寄存器(XFR)访问使能否则会无法访问拓展寄存器的配置,进而导致无法生效

PWM部分并没有很大的问题,请先修改PLL部分以确保时钟正常,欢迎继续讨论

baigezy 发表于 2024-11-28 16:18:01

王昱顺 发表于 2024-11-28 15:47
您好,你的PLL部分是有一点问题的

32G并没有PLLCR寄存器


按照你的指导,已经正常了,谢谢

stream1118 发表于 2025-1-4 11:44:10

王昱顺 发表于 2024-11-28 15:05
可以开启的,不过太高速的情况可能会出现中断间隔太短而反复进入中断,进而无法执行其他任务,谨慎开启 ...

你好,STC8051U单片机使用高速高级PWMA,是不是就不能使用PWMA中断了?我这边中断允许位也都已经打开了,中断标志位也已经置位,但就是进不了中断

王昱顺 发表于 2025-1-4 11:46:32

stream1118 发表于 2025-1-4 11:44
你好,STC8051U单片机使用高速高级PWMA,是不是就不能使用PWMA中断了?我这边中断允许位也都已经打开了, ...

可以使用
具体注意配置这个寄存器:


stream1118 发表于 2025-1-4 11:58:46

王昱顺 发表于 2025-1-4 11:46
可以使用
具体注意配置这个寄存器:

{:OK:}就是这个没有打开,感谢{:baoquan:}
页: 1 [2]
查看完整版本: 32G数据手册上PLL144M高速PWM相关说明太少,请大虾能不能详细讲解一下[已解决]