GPIO Input & Output
GPIO Input & Output示例实现了GPIO的普通输入/输出功能。
- 配置为普通输出时,通过程序能控制IO上电平的变化。
- 配置为普通输入时,能通过程序读取IO上电平的高低。
GPIO Input & Output示例的源代码和工程文件位于SDK_Folder\projects\peripheral\gpio\gpio_output_input,其中工程文件在文件夹Keil_5下。
代码理解
示例工程流程图如图 10所示:
- 配GPIO模块输入/输出模式。
#define GPIO_DEFAULT_CONFIG \ { \ .pin = GPIO_PIN_ALL, \ .mode = GPIO_MODE_INPUT, \ .pull = GPIO_PULLDOWN, \ .mux = GPIO_PIN_MUX_GPIO, \ } gpio_init_t gpio_config = GPIO_DEFAULT_CONFIG; gpio_config.mode = GPIO_MODE_OUTPUT; gpio_config.pin = GPIO_PIN_12; hal_gpio_init(GPIO1, &gpio_config);- pin:引脚配置ID,可选择GPIO_PIN_0 ~ GPIO_PIN_15任意组合。
- mode:引脚工作模式,可选择GPIO_MODE_INPUT、GPIO_MODE_OUTPUT、GPIO_MODE_MUX 、GPIO_MODE_IT_RISING、GPIO_MODE_IT_FALLING、GPIO_MODE_IT_HIGH、GPIO_MODE_IT_LOW。
- pull:上下拉电阻配置,可选择GPIO_NOPULL、GPIO_PULLUP、GPIO_PULLDOWN。
- mux:pin_mux配置,参考GR551x Datasheet中的pin_mux配置表,输入/输出时需配置为GPIO_MUX_7。
当需要配置为输入时,只需要修改mode:
gpio_init.mode = GPIO_MODE_INPUT; - 设置输出引脚电平。
hal_gpio_write_pin(GPIO1, GPIO_PIN_12, GPIO_PIN_RESET);参数GPIO_PIN_RESET表示设置为低电平,GPIO_PIN_SET表示设置为高电平
- 读取输入引脚电平。
pin_level = hal_gpio_read_pin(GPIO1, GPIO_PIN_13);pin_level为0表示低电平,为1表示高电平。
测试验证
- 用GProgrammer下载gpio_output_input.bin至开发板。
- 将开发板串口连接至PC端,打开并配置GRUart。
- 在GRUart的Receive Data窗口中将会显示IO口的输入/输出状态信息。