我上一篇写了:AC692X独立5路PWM+红外接收。
这次直接AC695X独立输出8路PWM+红外遥控接收。
系统硬件真实的PWM:
PWM0-PWM3:PA5.PA12.PB3.PB5
红外用默认SDK:timer3
PWM1-PWM2:我们可以映射也可以用真实的IO口
大体解题思路就是:利用电机硬件6PWM+2个真实PWM
首先电机硬件PWM:
他是1组H和L其实都可以用,1共是12脚位,最好用他硬件对应的,
因为我发现695的只有3路映射,电机也是。
电机里面有说:
//注意: CH3, CH4, CH5不支持通过 output channel输出
意思就是:CH0-CH2是可以映射的,也就是可以任意IO,不一定要硬件固定的IO。
上代码:
首先系统真实2个PWM:
配置:
JL_TIMER1->CON = 0;
JL_TIMER1->CNT = 0;
JL_TIMER1->PRD = 255;
JL_TIMER1->PWM = 0;
JL_TIMER1>CON =BIT(0)|BIT(3)|BIT(4)|BIT(5)|BIT(8);
JL_PORTA->PU |= BIT(12);
JL_PORTA->PD |= BIT(12);
JL_PORTA->DIR &= ~BIT(12);
JL_TIMER2->CON = 0;
JL_TIMER2->CNT = 0;
JL_TIMER2->PRD = 255;
JL_TIMER2->PWM = 0;
JL_TIMER2->CON =BIT(0)|BIT(3)|BIT(4)|BIT(5)|BIT(8);
JL_PORTB->PU |= BIT(3);
JL_PORTB->PD |= BIT(3);
JL_PORTB->DIR &= ~BIT(3);
调用:JL_TIMER1->PWM和JL_TIMER2->PWM赋值0-255就行.
然后电机6PWM配置:
void mmcpwmch0(uint32_t duty_parm)
{
mcpwm_set_duty(pwm_ch0, pwm_timer0, duty_parm);
}
void mmcpwmch1(uint32_t duty_parm)
{
mcpwm_set_duty(p