TT12-MCU/applications/led_blink_sample.c
murmur e52c58d659 iwdt --ok
led --ok
2023-04-27 17:29:44 +08:00

88 lines
2.3 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright (c) 2006-2022, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2018-09-25 misonyo first edition.
*/
/*
* 程序清单这是一个通过PIN脚控制LED亮灭的使用例程
* 例程导出了 led_sample 命令到控制终端
* 命令调用格式led_sample 41
* 命令解释命令第二个参数是要使用的PIN脚编号为空则使用例程默认的引脚编号。
* 程序功能程序创建一个led线程线程每隔1000ms改变PIN脚状态达到控制led灯
* 亮灭的效果。
*/
#include <rtthread.h>
#include <rtdevice.h>
#include <stdlib.h>
#include <board.h>
#define LOG_TAG "heartbeat" // 该 模 块 对 应 的 标 签。 不 定 义 时, 默 认NO_TAG
#define LOG_LVL LOG_LVL_DBG // 该 模 块 对 应 的 日 志 输 出 级 别。 不 定 义 时, 默 认: 调 试级 别
#include <ulog.h> // 必 须 在 LOG_TAG 与 LOG_LVL 下 面
/* PIN脚编号查看驱动文件drv_gpio.c确定 */
#define LED_PIN_NUM GET_PIN(E,3)
static int pin_num;
static void led_entry(void *parameter)
{
/* 设置PIN脚模式为输出 */
rt_pin_mode(pin_num, PIN_MODE_OUTPUT);
while (1)
{
/* 拉低PIN脚 */
rt_pin_write(pin_num, PIN_LOW);
/* 延时1ms省电 */
rt_thread_mdelay(1);//去掉延时共用print替换
// rt_kprintf("Heartbeat.\n");
/* 拉高PIN脚 */
rt_pin_write(pin_num, PIN_HIGH);
rt_thread_mdelay(1000);
}
}
int led_sample(int argc, char *argv[])
{
rt_thread_t tid;
rt_err_t ret = RT_EOK;
/* 判断命令行参数是否给定了PIN脚编号 */
if (argc == 2)
{
pin_num = atoi(argv[1]);
}
else
{
pin_num = LED_PIN_NUM;
}
tid = rt_thread_create("led",
led_entry,
RT_NULL,
512,
RT_THREAD_PRIORITY_MAX / 3,
20);
if (tid != RT_NULL)
{
rt_thread_startup(tid);
}
else
{
ret = RT_ERROR;
}
return ret;
}
/* 导出到 msh 命令列表中 */
MSH_CMD_EXPORT(led_sample, led sample);
/* 导出到自动初始化 */
//INIT_COMPONENT_EXPORT(led_sample);