K210裸机开发(二)GPIOHS

一、简介

 使用Standalone SDK开发K210,开发环境配置参考K210裸机开发(〇)简介及准备,本文不再重复;
 本文使用Standalone SDK控制K210的GPIO点灯;

二、参考手册内容

1、数据类型

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;

typedef enum _gpio_pin_value
{
    GPIO_PV_LOW,
    GPIO_PV_HIGH
} gpio_pin_value_t;

typedef enum _gpio_pin_edge
{
    GPIO_PE_NONE,
    GPIO_PE_FALLING,
    GPIO_PE_RISING,
    GPIO_PE_BOTH,
    GPIO_PE_LOW,
    GPIO_PE_HIGH = 8,
} gpio_pin_edge_t;

2、函数

void gpiohs_set_drive_mode(uint8_t pin, gpio_drive_mode_t mode)  //驱动模式
void gpiohs_set_pin(uint8_t pin, gpio_pin_value_t value)         //设置电平 
gpio_pin_value_t gpiohs_get_pin(uint8_t pin)					 //读取电平
void gpiohs_set_pin_edge(uint8_t pin, gpio_pin_edge_t edge)		 //中断触发模式
void gpiohs_irq_register(uint8_t pin, uint32_t priority			 //中断回调函数
                       , plic_irq_callback_t callback, void *ctx)
void gpiohs_irq_unregister(uint8_t pin);						 //注销中断

三、测试代码

#include <stdio.h>
#include <unistd.h>
#include <stdbool.h>
#include "fpioa.h"
#include "gpio.h"
#include "gpiohs.h"
#include "sysctl.h"

bool value = 0;

void irq_gpiohs2(void *ctx)
{
    printf("Irq_gpiohs2\n");
    value=!value;
}

int main()
{
    printf("GPIOHS TEST\n");
    fpioa_set_function(13, FUNC_GPIOHS3);
    gpiohs_set_drive_mode(3, GPIO_DM_OUTPUT);
    gpiohs_set_pin(3, GPIO_PV_HIGH);
    plic_init();
    fpioa_set_function(11, FUNC_GPIOHS2);
    gpiohs_set_drive_mode(2, GPIO_DM_INPUT_PULL_UP);
    gpiohs_set_pin_edge(2, GPIO_PE_FALLING);
    gpiohs_irq_register(2, 1, irq_gpiohs2, NULL);
    sysctl_enable_irq();
    while (1)
    {
        gpiohs_set_pin(3, value);
    }
    return 1;
}

四、现象

 当11号脚电平下跳时串口打印"Irq_gpiohs2",13号脚电平翻转;

五、总结

 1、GPIOHS可以配置成上拉下拉,以及中断触发模式;
 2、注意IO口(11,13)和GPIO管脚(2,3)的区别;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值