一起学nRF51xx 1 - GPIO

一起学nRF51xx 1 -  GPIO

张十三

 

前言

一起学nRF51xx 1 - GPIO_第1张图片

上图是以这32个GPIO引脚中的GPIO 0为例介绍GPIO的结构。每一个GPIO口有对应的一个PIN_CNF寄存器。通过该寄存器可以配置以下参数:

 

方向

驱动能力

上拉、下拉

引脚电平检测

是否使能输入缓冲

模拟输入(特定的引脚)

 

nRF51系列芯片最多拥有32个GPIO口,像我们常用的型号QFXX芯片,一般是31个GPIO口,而WLCSP封装的CEXX,有32个GPIO口。nRF51只有一个PORT口,GPIO 0-GPIO 32(31)用P0.0---P0.32(31)表示。

       

关于以上功能的详细说明请参考PIN_CNF[n]寄存器的介绍。本节将与大家一起基于nRF51的SDK里面有库函数,实现GPIO的基本操作,并点亮LED。

 

示例详解

基于硬件平台: nrf51822ek_tm开发板,因没有足够时间去设计开发析以及,本人在淘宝上淘买了现成可用的开发板。

 

一起学nRF51xx 1 - GPIO_第2张图片

 

本示例所用的最小系统板原理图:

一起学nRF51xx 1 - GPIO_第3张图片

一起学nRF51xx 1 - GPIO_第4张图片

 

    1. 工程创建:
      1. 打开KEIL,新建一个空工程:Project->New uVision Project

一起学nRF51xx 1 - GPIO_第5张图片

工程名为nrfxx-gpio确认后按下图选择芯片为nrf51822_xxAA->ok

一起学nRF51xx 1 - GPIO_第6张图片

在弹出的对话框中勾选CMSIS中的CORE;Device中的Startup(后面有nrf51 Series字样的);在nrf_device中勾选nrf_delay和nrf_gpio.

 

一起学nRF51xx 1 - GPIO_第7张图片

一起学nRF51xx 1 - GPIO_第8张图片

OK之后工程自动生成如下代码:

一起学nRF51xx 1 - GPIO_第9张图片

新建一个空白文档,保存为main.c,并加入工程中:

一起学nRF51xx 1 - GPIO_第10张图片

一起学nRF51xx 1 - GPIO_第11张图片

一起学nRF51xx 1 - GPIO_第12张图片

 

 

    1. 工程代码
      1. OK之后在man.c中加入如下代码:

一起学nRF51xx 1 - GPIO_第13张图片

配置工程,选择使用MicroLIB库,可以减小程序体积:

一起学nRF51xx 1 - GPIO_第14张图片

加入NRF51定义,并选择化等级3,可以减小程序体积,但仿真运行时可能会出现与代码顺序不一致现象:

 

一起学nRF51xx 1 - GPIO_第15张图片

调试工具选择J-LINK,并将接口设置为SW口勾选下载程序后自动复位及运行:

 

一起学nRF51xx 1 - GPIO_第16张图片

一起学nRF51xx 1 - GPIO_第17张图片

一起学nRF51xx 1 - GPIO_第18张图片

    1. 编译工程,:

一起学nRF51xx 1 - GPIO_第19张图片

下载载运行,可以看到蓝色LED在闪烁(亮500ms 灭500ms )对应的波形如下所示:

一起学nRF51xx 1 - GPIO_第20张图片

通过上面的例子,有没有发现用keil-mdk工具对nrf51xx进行开发是不是也非常简单呢。KEIL的Pack包中可以下载现成的官方工具,开发起来相当简单,当然也可以直接在官方的SDK例程中时行修改:

一起学nRF51xx 1 - GPIO_第21张图片

OK,本期实验完成!下期见!同时如果大家有什么疑问或是有想了解的其它内容,也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,会有不定期技术干货推出!!

文中源码资料下载,在公众号里给十三发消息:

下载|一起学nRF51xx 1

一起学nRF51xx 1 - GPIO_第22张图片

 

 

关注十三公众号

 

 

你可能感兴趣的:(nrf5x,nrf51822,gpio)