最近刚做完一个DA14580的项目,对这个芯片的使用也是有了一些心得,现在打算写出来,分享给大家。从最简单的GPIO开始吧,打算一天写一篇,大家有问题可以留言或者评论,互相交流。
1.首先是GPIO引脚的定义,默认是在periph_setup.h这个文件里,引脚的定义如下,指定PORT和pin,
 //定义一个LED引脚,port为2,pin为5
 #define LED_PORT             GPIO_PORT_2
 #define LED_PIN                 GPIO_PIN_5
 //定义一个KEY引脚,port为2,pin为4
 #define KEY_PORT             GPIO_PORT_2
 #define KEY_PIN                 GPIO_PIN_4
2.然后是GPIO引脚的初始化,引脚的初始化是在periph_setup.c里,格式如下
 GPIO_ConfigurePin( LED_PORT, LED_PIN, OUTPUT, PID_GPIO, false );
 GPIO_ConfigurePin( KEY_PORT, KEY_PIN, INPUT, PID_GPIO, false );
 GPIO_ConfigurePin里一共有四个参数,前两个是port和pin,第三个是指定IO口的输入输出方向,DA1458x的IO口输入输出方向一共有四种,悬空输入,上拉输入,下拉输入,输出(应该是push-pull),不知道为什么没有open drain输出,写软件I2C时不是很方便,以后的帖子里我会说DA1458x软件I2C的实现方法。这里LED就初始化为OUTPUT,KEY初始化为INPUT。
 typedef enum {
     INPUT = 0,
     INPUT_PULLUP = 0x100,
     INPUT_PULLDOWN = 0x200,
     OUTPUT = 0x300,
 } GPIO_PUPD;
 最后一个参数是ture或者false,当输入输出方向为输出时,选择IO默认初始化之后的电平,比如为true时,初始化后,IO口就会输出高电平。
 3.GPIO输入输出方向为输出时的使用
 点亮一个LED
 GPIO_SetActive(LED_PORT, LED_PIN);
 熄灭LED
 GPIO_SetInactive(LED_PORT, LED_PIN);
 4.GPIO输入输出方向为输入时的使用
 用GPIO_GetPinStatus()来获取指定port和pin的IO的当前输入电平
 if(GPIO_GetPinStatus(KEY_PORT, KEY_PIN) == 0)
 {
      delay();     //加个延时防抖
      if(GPIO_GetPinStatus(KEY_PORT, KEY_PIN) == 0)
     {
           //operation
     }
 }
 5.IO口的使用就这些内容吧,需要注意一点的是如果DA1458x定义了睡眠,如下,
 /*Sleep modes*/
 #define CFG_EXT_SLEEP
 那么当你想要保持输出电平时,就需要先disable睡眠
 app_disable_sleep();
 这样输出电平才可以保持,不然的话当DA1458x已进入睡眠,IO口就会被释放掉,输出电平就没了。
 可以用如下程序恢复睡眠
 app_set_extended_sleep();

关于GPIO的部分就写到这里,以后发现不对或者不足的地方,我会及时更新。

DA1458x使用之第一篇——GPIO相关推荐

  1. s3c2440 ARM9 裸机驱动第一篇-GPIO驱动(汇编)

    一 开发环境: 1.ubuntu 2.JZ2440开发板 二 硬件部分 JZ2440开发板上将GPF4-7四个引脚外接LED,从电路图可以得知,IO口为低电平时LED灯亮. 查询s3c2440 数据数 ...

  2. 单片机学习:第一篇 基于Python的树莓派语音助手

    title: 单片机学习:第一篇 基于Python的树莓派语音助手 tags: 树莓派,python,语音助手,百度AIP 目录 一.pyaudio录音 二.语音识别 三.与图灵机器人对话 四.语音合 ...

  3. 属于窄带噪声的是热噪声_时钟201系列: 非相位噪声的情况 (第一篇)

    欢迎来到Silicon Labs(亦称"芯科科技")的新系列博客文章"时钟201"的第一篇内容-非相位噪声的情况-第一部分.我们之前的系列博文"时钟1 ...

  4. linux的自定义input,Linux Input子系统之第一篇(input_dev/input_handle/input_handler)

    Input子系统是linux kernel中与部分外围器件驱动联系比较紧密的模块,常用于Sensor,TP(touch panel),power key等器件的驱动.这类模块有个共同特点:字符设备,且 ...

  5. 第一篇文章,做个纪念

    第一篇文章,做个纪念,这个blog好吗?拭目以待! 转载于:https://blog.51cto.com/197536/88241

  6. 《Ansible权威指南 》一 第一篇 Part 1 基础入门篇

    本节书摘来自华章出版社<Ansible权威指南 >一书中的第1章,第1.1节,李松涛 魏 巍 甘 捷 著更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第一篇 ...

  7. 研究生第一篇科研论文常犯问题总结

    ↑ 点击蓝字 关注视学算法 作者丨喻海良,中南大学教授,博士生导师 来源|http://blog.sciencenet.cn/blog-117889-1018759.html 极市导读 本文作者为中南 ...

  8. Webpack系列-第一篇基础杂记

    系列文章 Webpack系列-第一篇基础杂记 Webpack系列-第二篇插件机制杂记 Webpack系列-第三篇流程杂记 前言 公司的前端项目基本都是用Webpack来做工程化的,而Webpack虽然 ...

  9. 蒟蒻的第一篇博客CF1041C Coffee Break(二分+贪心+set)

    CF1041C Coffee Break(二分+贪心+set) 描述 Recently Monocarp got a job. His working day lasts exactly mm min ...

最新文章

  1. 解决SecureCRT中文乱码
  2. PostgreSQL 批量权限 管理方法
  3. 彻底理解HashMap及LinkedHashMap
  4. python调换字符串顺序_python实现指定字符串交换
  5. regex 正则表达式_使用正则表达式(Regex)删除HTML标签
  6. win7下搭建小程序服务器,技术开发人员告诉你微信小程序怎么做
  7. 算术移位的规则及逻辑移动的规则
  8. 测试学python路线_小蜗分享:Python测试开发全套学习路线
  9. php bc gmp,php中ipv6转纯数字和反转
  10. git获取特定的commit
  11. mysql更新语句使用order by
  12. java 加载imageview_如何在Android中通过URL加载ImageView? [关闭]
  13. 【读书笔记】名创优品的101个新零售细节-张桓.杨永朋,品质和供应链是核心竞争力
  14. Centos无法卸载时处理办法
  15. 「音视频直播技术」Android下H264解码
  16. excel冻结窗口_excel中使用快捷方式锁定单元格,冻结某些单元格、公式或单元格...
  17. 误删除数据恢复 plsql
  18. 知识图谱问答 | (3) 关系分类概述
  19. OpenCV OAK-D-S2相机测试
  20. linux ifcfg-eth0文件丢失,Linux备份ifcfg-eth0文件致使的网络故障问题

热门文章

  1. 成都旅游住宿购物交通攻略617
  2. 升级版Python学习教程:SQLAlchemy太庞大,不妨试试这位小清新-Peewee
  3. gpu z linux版本,GPU-Z 2.13.0发布,可检测到假冒的NVIDIA 显卡
  4. Windows10电脑底部任务栏无响应解决方法
  5. JAVA-List排序-Collections.sort()-对象数组(集合)根据某一属性排序
  6. 小春日记 - 基金初识
  7. IC China CEF两展联动,半导体产业大国崛起酝酿电子产业升级大幕
  8. 哪个线上打印平台属于24小时营业的打印店?
  9. Spark中,RDD概述(五大属性,弹性介绍,5个特性)
  10. k8s配置Controller Manager出错