2006|1

274

帖子

8

TA的资源

纯净的硅(初级)

楼主
 

第三篇 GPIO的使用 [复制链接]

 

通过上一篇测评,我们知道RVB2601的代码编写是在YOC平台下。对硬件的操作主要集中在YOC平台里的CSI层。

CSI层里和GPIO相关的有两个:GPIOGPIO_PIN。不太清楚这两个的具体区别,但是在头文件中提到这两个模块只能用其中的一个,如下图所示。通过对比两个源文件,可以看出GPIO_PIN模块中调用了很多GPIO模块里的内容,所以我觉得GPIO_PIN模块的功能更复杂一些吧。

 

在例程里,官方使用的GPIO_PIN操作的IO

 

一、输出功能

首先需要对IO进行初始化,初始化部分用到了CSI层的PIN模块,这个模块的主要作用是选择引脚的功能:如作为GPIO用;或者作为外设的引脚,如SPISCLK脚。本例是将引脚设置为GPIO

然后设置GPIO的功能:输入、输出等。

 

板载了一个三色LED,也就是3LED封装到了一起,原理图如下。板上通过跳线帽将PA7,PA25,PA4与三色灯连接在了一起,因此需要配置为输出模式。

 

初始化代码如下:

  1. static csi_gpio_pin_t r;
  2. static csi_gpio_pin_t g;
  3. static csi_gpio_pin_t b;
  4.  
  5. void led_pinmux_init()
  6. {
  7.     csi_pin_set_mux(PA7, PIN_FUNC_GPIO);
  8.     csi_pin_set_mux(PA25, PIN_FUNC_GPIO);
  9.     csi_pin_set_mux(PA4, PIN_FUNC_GPIO);
  10.  
  11.     csi_gpio_pin_init(&r, PA7);
  12.     csi_gpio_pin_dir(&r, GPIO_DIRECTION_OUTPUT);
  13.     csi_gpio_pin_init(&g, PA25);
  14.     csi_gpio_pin_dir(&g, GPIO_DIRECTION_OUTPUT);
  15.     csi_gpio_pin_init(&b, PA4);
  16.     csi_gpio_pin_dir(&b, GPIO_DIRECTION_OUTPUT);
  17.  
  18.     csi_gpio_pin_write(&r, GPIO_PIN_HIGH);
  19.     csi_gpio_pin_write(&g, GPIO_PIN_HIGH);
  20.     csi_gpio_pin_write(&b, GPIO_PIN_HIGH);
  21. }

 

注意,每一个GPIO都要有一个自己的数据结构,csi_gpio_pin_t 

 

二、输入功能

 

输入功能和输出功能的用法相似,代码如下:

  1. static csi_gpio_pin_t key1;
  2. static csi_gpio_pin_t key2;
  3. void key_init()
  4. {
  5.  csi_pin_set_mux(PA11, PIN_FUNC_GPIO);
  6.  csi_pin_set_mux(PA12, PIN_FUNC_GPIO);
  7.  
  8.  csi_gpio_pin_init(&key1, PA11);
  9.  csi_gpio_pin_init(&key2, PA12);
  10.  
  11.  csi_gpio_pin_dir(&key1, GPIO_DIRECTION_INPUT);
  12.  csi_gpio_pin_dir(&key2, GPIO_DIRECTION_INPUT);
  13.  
  14.  csi_gpio_pin_mode(&key1,GPIO_MODE_PULLNONE);
  15.  csi_gpio_pin_mode(&key2,GPIO_MODE_PULLNONE); 
  16. }

 

最新回复

消灭零回复,今天给你补上哈,加油!希望能得奖哦。  详情 回复 发表于 2022-5-4 17:58
点赞 关注
 
 

回复
举报

7047

帖子

11

TA的资源

版主

沙发
 
消灭零回复,今天给你补上哈,加油!希望能得奖哦。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表