快速入门


3.1.1 GPIO的使用

<pre><code class="language-c">/***************************************************************************** * * 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("---&gt;:%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 }</code></pre> <p>使用某个io时首先需要设置<code>tls_gpio_cfg(gpio_pin, WM_GPIO_DIR_INPUT, WM_GPIO_ATTR_FLOATING);</code>,第一个参数是管脚号,第二个是作为输入或输出方式,第三个是io的属性</p>

页面列表

ITEM_HTML