|
|
@@ -17,14 +17,13 @@
|
|
|
#include <rtthread.h>
|
|
|
#include <rtdevice.h>
|
|
|
|
|
|
-/* LED PIN脚编号,查看驱动文件drv_gpio.c确定 */
|
|
|
-#define LED_PIN_NUM 57
|
|
|
-#define PWM_DEV_NAME "pwm3"
|
|
|
-#define PWM_DEV_CHANNEL 4
|
|
|
+#define LED_PIN_NUM 57 /* LED PIN脚编号,查看驱动文件drv_gpio.c确定 */
|
|
|
+#define PWM_DEV_NAME "pwm3" /* PWM设备名称 */
|
|
|
+#define PWM_DEV_CHANNEL 4 /* PWM通道 */
|
|
|
|
|
|
-struct rt_device_pwm *pwm_dev;
|
|
|
+struct rt_device_pwm *pwm_dev; /* PWM设备句柄 */
|
|
|
|
|
|
-static void pwm_led_entry(void *parameter)
|
|
|
+static int pwm_led_sample(int argc, char *argv[])
|
|
|
{
|
|
|
rt_uint32_t period, pulse, dir;
|
|
|
|
|
|
@@ -32,6 +31,24 @@ static void pwm_led_entry(void *parameter)
|
|
|
dir = 1; /* PWM脉冲宽度值的增减方向 */
|
|
|
pulse = 0; /* PWM脉冲宽度值,单位为纳秒ns */
|
|
|
|
|
|
+ /* 设置LED引脚脚模式为输出 */
|
|
|
+ rt_pin_mode(LED_PIN_NUM, PIN_MODE_OUTPUT);
|
|
|
+ /* 拉高LED引脚 */
|
|
|
+ rt_pin_write(LED_PIN_NUM, PIN_HIGH);
|
|
|
+
|
|
|
+ /* 查找设备 */
|
|
|
+ pwm_dev = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME);
|
|
|
+ if (pwm_dev == RT_NULL)
|
|
|
+ {
|
|
|
+ rt_kprintf("pwm sample run failed! can't find %s device!\n", PWM_DEV_NAME);
|
|
|
+ return RT_ERROR;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* 设置PWM周期和脉冲宽度默认值 */
|
|
|
+ rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, pulse);
|
|
|
+ /* 使能设备 */
|
|
|
+ rt_pwm_enable(pwm_dev, PWM_DEV_CHANNEL);
|
|
|
+
|
|
|
while (1)
|
|
|
{
|
|
|
rt_thread_mdelay(50);
|
|
|
@@ -56,39 +73,5 @@ static void pwm_led_entry(void *parameter)
|
|
|
rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, pulse);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-static int pwm_led_sample(int argc, char *argv[])
|
|
|
-{
|
|
|
- rt_thread_t tid;
|
|
|
-
|
|
|
- /* 设置LED引脚脚模式为输出 */
|
|
|
- rt_pin_mode(LED_PIN_NUM, PIN_MODE_OUTPUT);
|
|
|
- /* 拉高LED引脚 */
|
|
|
- rt_pin_write(LED_PIN_NUM, PIN_HIGH);
|
|
|
-
|
|
|
- /* 查找设备 */
|
|
|
- pwm_dev = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME);
|
|
|
- if (pwm_dev == RT_NULL)
|
|
|
- {
|
|
|
- rt_kprintf("pwm sample run failed! can't find %s device!\n", PWM_DEV_NAME);
|
|
|
- return RT_ERROR;
|
|
|
- }
|
|
|
-
|
|
|
- /* 使能设备 */
|
|
|
- rt_pwm_enable(pwm_dev, PWM_DEV_CHANNEL);
|
|
|
-
|
|
|
- tid = rt_thread_create("pwm",
|
|
|
- pwm_led_entry,
|
|
|
- RT_NULL,
|
|
|
- 512,
|
|
|
- RT_THREAD_PRIORITY_MAX / 3,
|
|
|
- 20);
|
|
|
- if (tid != RT_NULL)
|
|
|
- {
|
|
|
- rt_thread_startup(tid);
|
|
|
- }
|
|
|
-
|
|
|
- return RT_EOK;
|
|
|
-}
|
|
|
/* 导出到 msh 命令列表中 */
|
|
|
-MSH_CMD_EXPORT(pwm_led_sample, pwm sample);
|
|
|
+MSH_CMD_EXPORT(pwm_led_sample, pwm sample);
|