haiger 发表于 2023-7-5 20:20:27

STC32的PWMA模块怎么关闭?

STC32的PWMA模块怎么关闭?

要么打不开,打开了就无法关闭,请问是什么原因?
代码:

PWMA_PS = 0xaa;//1~4通道输出引脚转到P6口
    //P6.0P6.1
    PWMA_CCER1 = 0x00;                        //写CCMRx前必须先清零CCERx关闭通道
    PWMA_CCMR1 = 0x60;                        //设置CC1为PWMA输出模式
    PWMA_CCER1 = 0x05;                        //使能CC1通道
   
    PWMA_CCR1H =0x00;                           //设置占空比时间
    PWMA_CCR1L =0x31;
    PWMA_ARRH = 0x00;                           //设置周期时间频率约302.5KHz
    PWMA_ARRL = 0x62;
   
    PWMA_ENO = 0x03;                            //使能PWM1P和PWM1N端口输出
    PWMA_BKR = 0x80;                            //使能主输出
    PWMA_CR1 = 0x01;                            //开始计时

乘风飞扬 发表于 2023-7-5 22:55:14

PWMA_ENO寄存器,将对应通道输出使能置0,就能停止输出PWM信号。
然后就可以通过IO口方式输出高低电平。

haiger 发表于 2023-7-6 11:26:16

乘风飞扬 发表于 2023-7-5 22:55
PWMA_ENO寄存器,将对应通道输出使能置0,就能停止输出PWM信号。
然后就可以通过IO口方式输出高低电平。 ...

单独运行的话可以正常控制开关,放到项目中就控制不了,应该是被其他程序影响了{:sweat:}

乘风飞扬 发表于 2023-7-6 19:13:05

haiger 发表于 2023-7-6 11:26
单独运行的话可以正常控制开关,放到项目中就控制不了,应该是被其他程序影响了 ...

只要寄存器正常进行设置就可以进行开关。
需要注意PWM寄存器是扩展寄存器,扩展寄存器开关(P_SW2的bit7)要开启情况下才能进行设置。

haiger 发表于 2023-7-7 11:17:53

乘风飞扬 发表于 2023-7-6 19:13
只要寄存器正常进行设置就可以进行开关。
需要注意PWM寄存器是扩展寄存器,扩展寄存器开关(P_SW2的bit7) ...

你对这个单片机够了解的{:4_174:}
确实是由于P_SW2寄存器配置错误造成的,部分代码沿用了STC8G系列的,STC32G的文档没有仔细去看。后来排查中发现是ADC转换那里的问题,8G系列的范例里有配置P_SW2寄存器,而32G不需要
页: [1]
查看完整版本: STC32的PWMA模块怎么关闭?