使用8H8K64U的PWM生成方波后,请问停止控制如何保持每次停止都在低电平
本帖最后由 i_zw 于 2024-9-1 20:28 编辑通过PWM产生了需要的频率1.14M Hz。
void PWM_init()
{
P_SW2 |= 0x80;
PWMA_PS=0x10; //select PWMA3Pin P:P24,N:P25 -useP24
PWMA_CCER2 = 0x00; // before update CCMRx ,reset CCERx to close PWMA/B channel, clear
PWMA_CCMR3 = 0x60; //set PWMA channel,mode 1
PWMA_CCER2 = 0x01; //config PWMA channel enable OUT,PWMA3P ,
PWMA_CCR3 = 14;//PWM_DUTY; // occupation count
PWMA_ARR = 28;//PWM_PERIOD; // period count
PWMA_ENO = 0x10; //ennabe OUT.PWMA3P
PWMA_BKR = 0x80; //enable main OUT
PWMA_CR1 = 0x01; //start counter
}
只是又遇到一个问题,用PWM产生的方波频率,在定时timer中通过PWMA_CR1 =0x00和0x01 启动和停止后,不确定是停止在高电平还是低电平,请问这个有方法控制吗
定时启停代码
if(longtime<500)
{
longtime++;
}else
{
longtime=0;
if(PWMA_CR1&0x01==0x01)
PWMA_CR1=0x00;
else
PWMA_CR1=0x01;
P24=0; //没有作用,应该是PWMA_CR1赋值后,PWM 没有立即停止
}
通过设置 PWMA_ENO 进行开关,PWMA_ENO设置关闭后就可以使用IO口方式设置高低电平了。 乘风飞扬 发表于 2024-9-2 12:19
通过设置 PWMA_ENO 进行开关,PWMA_ENO设置关闭后就可以使用IO口方式设置高低电平了。 ...
谢谢,我试一下{:biggrin:} wnagming 发表于 2024-9-1 21:40
可以试试设置PWMA_CR1之前,将占空比设置为0或最大
谢谢
页:
[1]