你好,
我正在使用DA14695 USB开发套件,WIRA SDK版WIRA_10.440.8.6。
我想使用GPIO,例如PWM计时器,带有Timer3和Timer4,但没有得到输出。
在计时器示例的帮助下,我能够使用定时器和Timer2的P1_1和P1_6,但我想使用P0_17和P0_18作为PWM。
我修改了计时器示例
(在此睡眠模式下设置为PM_Mode_Active模式)
#define timer1_pwm_port hw_gpio_port_0.
#define timer1_pwm_pin hw_gpio_pin_18
静态void prvsetuphardware(void)
{
/ * init硬件* /
PM_SYSTEM_INIT(PERIPH_INIT);
/ *在处理任何GPIO引脚之前启用COM电源域* /
hw_sys_pd_com_enable();
/ * PWM功能* /
hw_gpio_set_pin_function(timer1_pwm_port,timer1_pwm_pin,hw_gpio_mode_output,hw_gpio_func_tim3_pwm);
hw_gpio_pad_latch_enable(timer1_pwm_port,timer1_pwm_pin);
hw_gpio_pad_latch_disable(timer1_pwm_port,timer1_pwm_pin);
/ *配置所有GPIO引脚后禁用COM电源域* /
hw_sys_pd_com_disable();
}
void _timer_init(hw_timer_id ID)
{
timer_config cfg = {
.clk_src = hw_timer_clk_src_ext,
.prescaler = 31,
.mode = hw_timer_mode_timer,
/ *在捕获模式下配置计时器* /
.timer = {
.direction = hw_timer_dir_up,
.reload_val = 0,
.free_run = true,
},
/ *配置PWM功能* /
.pwm = {
.port = timer1_pwm_port,
.pin = timer1_pwm_pin,
.pwm_active_in_sleep = true,
.frequency = 64999,
.duty_cycle = 32500,
},
};
hw_timer_init(id,&cfg);
hw_timer_register_int(id,_timer_overflow_cb);
}
void prvtimerstask(void * pvparameters)
{
printf(“*** timer3演示*** \ n \ r”);
_timer_init(hw_timer3);
hw_timer_enable(hw_timer3);
为了 (;;) {
}
}
是定时器配置是否正确或任何需要添加的东西。
每个GPIO都可以用作PWM或仅特定的GPIO。
如何使用GPIO P0_17作为PWM计时器。
谢谢
Jagath.
嗨Jagath,
由于仅P1_1和P1_6可以在设备处于休眠模式时提供PWM输出,因为当您使用任何其他GPIO作为PWM输出时,必须将PWM配置结构中的PWM_Active_in_sleep变量设置为false,如下所示:
此致
im_dialog.
谢谢