3.1.1 GPIO的使用
/*****************************************************************************
*
* File Name : main.c
*
* Description: main
*
* Copyright (c) 2014 Winner Micro Electronic Design Co., Ltd.
* All rights reserved.
*
* Author : dave
*
* Date : 2014-6-14
*****************************************************************************/
#include "wm_include.h"
// PA0 中断回调函数
static void demo_gpio_isr_callback(void *context)
{
// 或者PA0中断标准位
u16 ret = tls_get_gpio_irq_status(WM_IO_PA_00);
if(ret)
{
// 清除中断标准位
tls_clr_gpio_irq_status(WM_IO_PA_00);
// 打印函数名称所在行及名称
printf("--->:%d %s\r\n", __LINE__, __func__);
}
}
void UserMain(void)
{
printf("\n user task \n");
// 配置PA0输入模式,浮空
tls_gpio_cfg(WM_IO_PA_00, WM_GPIO_DIR_INPUT, WM_GPIO_ATTR_FLOATING);
// 为PA0注册回调函数
tls_gpio_isr_register(WM_IO_PA_00, demo_gpio_isr_callback, NULL);
// PA0中断使能,上升沿触发中断
tls_gpio_irq_enable(WM_IO_PA_00, WM_GPIO_IRQ_TRIG_RISING_EDGE);
// 配置PB0 输出模式,默认内部上拉
tls_gpio_cfg(WM_IO_PB_00, WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_PULLHIGH);
bool val = 0;
while(1)
{
// 读取PA0电平状态
val = tls_gpio_read(WM_IO_PA_00);
// 将读取到的电平状态写到PB0
tls_gpio_write(WM_IO_PB_00, val);
// 延时 1 ticks
tls_os_time_delay(1);
}
#if DEMO_CONSOLE
CreateDemoTask();
#endif
//用户自己的task
}
使用某个io时首先需要设置tls_gpio_cfg(gpio_pin, WM_GPIO_DIR_INPUT, WM_GPIO_ATTR_FLOATING);
,第一个参数是管脚号,第二个是作为输入或输出方式,第三个是io的属性