LED点灯例程
1. 概述
本文介绍如何使用YoC及GPIO接口,实现LED的闪烁功能。
2. 适用的硬件
本例程可以运行在CB2201开发板上。
3. 应用开发
3.1 应用初始化
应用入口函数为app_main,实现了板级的初始化和LED闪烁。
void main()
{
/* 板级初始化 */
board_yoc_init();
LOGI(TAG, "led blink demo\n");
int gpio_val = 0;
/* LED闪烁 */
while (1) {
gpio_set(PA13, gpio_val);
gpio_val ++;
gpio_val %= 2;
aos_msleep(500);
}
}
3.2 板级初始化
板级初始化的入口为board_yoc_init,主要完成硬件初始化以及OS组件的初始化,由app_main函数调用。
void board_yoc_init(void)
{
/* 初始化console驱动 */
#ifdef CONSOLE_ID
console_init(CONSOLE_ID, 115200, 128);
#else
console_init(0, 115200, 128);
#endif
/* 初始化出厂配置Flash分区 */
nvram_init("factory");
/* 创建CLI任务 */
utask_t *task = utask_new("at&cli", 2 * 1024, QUEUE_MSG_COUNT, AOS_DEFAULT_APP_PRI);
}
3.3 LED灯控制
static void gpio_set(int gpio_id /* 引脚名称 */, int val /* 电平 */)
{
gpio_pin_handle_t handle;
/* 引脚复用 */
drv_pinmux_config(gpio_id, PIN_FUNC_GPIO);
handle = csi_gpio_pin_initialize(gpio_id, NULL);
if (handle == NULL) {
LOGI(TAG, "pin init\n");
return;
}
/* 设置引脚的输出模式 */
csi_gpio_pin_config_mode(handle, GPIO_MODE_PUSH_PULL);
csi_gpio_pin_config_direction(handle, GPIO_DIRECTION_OUTPUT);
/* 设置引脚的输出电平 */
csi_gpio_pin_write(handle, val);
csi_gpio_pin_uninitialize(handle);
}
4. 例程运行
烧写完成后,按复位键重启,LED灯开始闪烁,串口输出如下结果
boot1.1
Tee v2.0.1 Initliaze done, Dec 19 2018 11:44:54
Welcome to CLI...
> [ 0.255946][I][app ]led blink demo