听说学会了点灯就学会了一切2333

1.看原理图

我的是绿色板子,观察原理图。LED0对应IO12LED1对应IO12.

2.看手册

我看了一会,发现这个芯片有个很牛逼的东西现场可编程 IO 阵列 (Field programmable IO Array),他可以自由映射内部的255个功能到外部48个io!真的强

但是这个芯片的缺憾是通用GPIO只有8个,从FUNC_GPIO0FUNC_GPIO7,但是~他还有更强的32个高速GPIO # 3.coding

  1. 功能映射

    因为有FPIOA的存在,所以我们需要先将io映射到想要的功能:

    /* 绿色板子IO12-->LED0 IO13-->LED1 */
    fpioa_set_function(12, FUNC_GPIO1);
    fpioa_set_function(13, FUNC_GPIO2);
  2. 初始化GPIO

    gpio_init();/* 初始化gpio */
  3. 设置GPIO模式

    这里的1就是对应了FUNC_GPIO1

    /* typedef enum _gpio_drive_mode
    {
    GPIO_DM_INPUT,
    GPIO_DM_INPUT_PULL_DOWN,
    GPIO_DM_INPUT_PULL_UP,
    GPIO_DM_OUTPUT,
    } gpio_drive_mode_t; */
    gpio_set_drive_mode(1, GPIO_DM_OUTPUT);
  4. 设置状态 这里没有什么好说的,HIGH对应1LOW对应0

    gpio_pin_value_t value1= GPIO_PV_HIGH, value2= GPIO_PV_LOW;
    gpio_set_pin(1, value1);
  5. 完整程序 这里的sleep函数是sdk中自带的,这个自带的sleep有三种,完全满足我们的一般要求。

    #include "fpioa.h"
    #include "gpio.h"
    #include <stdio.h>
    #include <unistd.h>


    int main(void) {
    /* 老板子io 11 12 是led */
    fpioa_set_function(12, FUNC_GPIO1);
    fpioa_set_function(13, FUNC_GPIO2);

    gpio_init();/* 初始化gpio */
    gpio_set_drive_mode(1, GPIO_DM_OUTPUT);
    gpio_set_drive_mode(2, GPIO_DM_OUTPUT);
    gpio_pin_value_t value1= GPIO_PV_HIGH, value2= GPIO_PV_LOW;
    gpio_set_pin(1, value1);
    gpio_set_pin(2, value2);
    while (1) {
    sleep(1);
    gpio_set_pin(1, value1= !value1);
    gpio_set_pin(2, value2= !value2);
    }
    return 0;
    }

4.编译运行

➜  build cmake .. -DPROJ=gpio_led && make
➜ build python3 isp.py -p /dev/ttyUSB0 -b 115200 gpio_led.bin

上电即可看到现象咯。