当前位置: 首页 > 工具软件 > Pmw > 使用案例 >

杰里之. 输出 3 路 PMW【篇】

姬和歌
2023-12-01

user_pwm_init(IO_PORTA_14,100 ,0,1);
user_pwm_init(IO_PORTA_05,200 ,1,0);
user_pwm_init(IO_PORTA_07,150 ,2,1);

#define PWM_FRE 3000
void user_pwm_init(u32 port,u16 pwm_wide,u32 pwn_chl,bool output)
{
#if 1
log_info(“mio pwm init -> pwn_chl : %d\n”, pwn_chl);
switch (pwn_chl)
{
case 0:
if(output){
SFR(JL_IOMC->IOMC3, 0, 3, 0); //输出到 OUTPUT 0
// IO 选择输出 OUTPUT 信号
gpio_set_pull_up(port, 1);
gpio_set_pull_down(port, 1);
gpio_set_direction(port, 0);
gpio_set_die(port, 0);
}else{
gpio_set_direction(port, 0);
gpio_set_die(port, 1);
SFR(JL_IOMC->IOMC0, 16, 1, 1); //输出到 PWM 默认 IO
}
JL_PWM->TMR0_PR = sys_clock_get() / PWM_FRE;
JL_PWM->CH0_CMP = (sys_clock_get() / PWM_FRE) * pwm_wide / 255; //pwm_var 范围
在 0-255
JL_PWM->TMR0_CON = BIT(5);
break;
case 1:
if(output){
gpio_set_pull_up(port, 1);
gpio_set_pull_down(port, 1);
gpio_set_direction(port, 0);
SFR(JL_IOMC->IOMC3, 0, 3, 1);
gpio_set_die(port, 0);
}else{
版权所有,侵权必究
地址:深圳市南山区艺园路 202 号马家龙文体中心B 座 4F
电话:0755-26499936 传真:0755-86540096
网站:www.zh-jieli.com
10
gpio_set_direction(port, 0);
gpio_set_die(port, 1);
SFR(JL_IOMC->IOMC0, 17, 1, 1);
}
JL_PWM->TMR1_PR = sys_clock_get() / PWM_FRE;
JL_PWM->CH1_CMP = (sys_clock_get() / PWM_FRE) * pwm_wide / 255; //pwm_var 范围在
0-255
JL_PWM->TMR1_CON = BIT(5);
break;
case 2:
if(output){
gpio_set_pull_up(port, 1);
gpio_set_pull_down(port, 1);
gpio_set_direction(port, 0);
SFR(JL_IOMC->IOMC3, 3, 3, 0);
gpio_set_die(port, 1);
}else{
gpio_set_direction(port, 0);
gpio_set_die(port, 1);
SFR(JL_IOMC->IOMC0, 18, 1, 1);
}
JL_PWM->TMR2_PR = sys_clock_get() / PWM_FRE;
JL_PWM->CH2_CMP = (sys_clock_get() / PWM_FRE) * pwm_wide / 255; //pwm_var 范围在
0-255
JL_PWM->TMR2_CON = BIT(5);
break;
case 3:
if(output){
gpio_set_pull_up(port, 1);
gpio_set_pull_down(port, 1);
gpio_set_direction(port, 0);
SFR(JL_IOMC->IOMC3, 3, 3, 1);
gpio_set_die(port, 1);
}else{
gpio_set_direction(port, 0);
gpio_set_die(port, 1);
SFR(JL_IOMC->IOMC0, 19, 1, 1);
}
JL_PWM->TMR3_PR = sys_clock_get() / PWM_FRE;
JL_PWM->CH3_CMP = (sys_clock_get() / PWM_FRE) * pwm_wide / 255; //pwm_var 范围在
0-255
JL_PWM->TMR3_CON = BIT(5);
break;

 类似资料: