⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
3个帖子/ 0新
最后一篇
Jagath52.
离线
最后一次露面:1个月1周前
加入:2020-07-06 10:40
用PWM驾驶GPIO

你好,

我正在使用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.

设备:
im_dialog.
离线
最后一次露面:1个月1周前
加入:2016-12-06 22:25
嗨Jagath,

嗨Jagath,

由于仅P1_1和P1_6可以在设备处于休眠模式时提供PWM输出,因为当您使用任何其他GPIO作为PWM输出时,必须将PWM配置结构中的PWM_Active_in_sleep变量设置为false,如下所示:

/ *配置PWM功能* / .pwm = {.port = timer1_pwm_port,.pin = timer1_pwm_pin,/ * *当设置为true时,Timer1将在P1_1引脚上保持PWM脉冲,*在睡眠模式期间P1_6引脚上的Timer2上的PWM脉冲。* /.pwm_active_in_sleep = false,

此致
im_dialog.

Jagath52.
离线
最后一次露面:1个月1周前
加入:2020-07-06 10:40
谢谢

谢谢