OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 11133|回复: 22

nRF51822 AK II BLE 蓝牙4.0 开发板(实验1跑马灯)第一集

[复制链接]

  离线 

49

主题

348

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1199
金钱
1199
注册时间
2012-8-28
在线时间
8 小时
发表于 2013-11-8 10:41:12 | 显示全部楼层 |阅读模式
正点原子公众号
http://item.taobao.com/item.htm?spm=a230r.1.14.15.A0efUu&id=19066213304

刚拿到开发板有2件事要做,了解下外围硬件结构和软件里需要的文件
1 (usb-jtag有3个led灯共阳设计,低电平亮。p0.21red,p0.22green,p0.23blue)带jtag仿真器的那款
    AK板上【key0p0.16,key1p0.17(按下按钮低电平)】5个共阴led灯,高电平亮,led0p0.18,led1p0.19,led2p0.20,led3p0.21,led4p0.22
   

2软件部分:这个51822和51单片机一样,需要启动文件,和声明寄存器地址名字的文件(寄存器对应的地址,就像0x80是P0口)
           arm_startup_nrf51.s(启动文件)
          nrf51.h(对应地址声明寄存器名字文件)
         有了这2个文件就可以建工程了。启动文件需要稍微修改下:
103行;                IMPORT  SystemInit
104行                 IMPORT  __main
105;                LDR     R0, =NRF_POWER_RAMON_ADDRESS
106;                LDR     R2, [R0]
107;                MOVS    R1, #NRF_POWER_RAMON_RAMxON_ONMODE_Msk
108;                ORRS    R2, R2, R1
109;                STR     R2, [R0]
110;                LDR     R0, =SystemInit
111;                BLX     R0
上面用 ; 注释掉了几行(原因是SystemInit是检查编译器32位情况还有bool。这里我们不需要这个,工程越简单越好。)

该单片机跟stm32一样有2个晶振源(真奇怪我程序不启动晶振也照样用,难道真和51单片机一样,本实验只讲跑马灯)

在io口控制的寄存器我们来看下,在nrf51.h文件中
/**
  * @简短的通用输入和输出。 (GPIO)
  */

typedef struct {                                         /*!< GPIO结构                                                  */
  __I  uint32_t  RESERVED0[321];     //保留
  __IO uint32_t  OUT;                                /*!< 写GPIO端口。                                             */
  __IO uint32_t  OUTSET;                          /*!< 设置中的单个位GPIO端口。                                   */
  __IO uint32_t  OUTCLR;                         /*!< 清除个别位GPIO端口。                                */
  __I  uint32_t  IN;                                    /*!< 阅读GPIO端口。                                                 */
  __IO uint32_t  DIR;                                /*!<GPIO引脚的方向。                                             */
  __IO uint32_t  DIRSET;                          /*!<DIR组寄存器。                                              */
  __IO uint32_t  DIRCLR;                          /*!< DIR明确寄存器。                                                  */
  __I  uint32_t  RESERVED1[120];
  __IO uint32_t  IN_CNF[32];                  /*!< 配置GPIO引脚。                                           */
} NRF_GPIO_Type;     //起始地址0x50000000UL

#define NRF_GPIO_BASE                   0x50000000UL 

#define NRF_GPIO                        ((NRF_GPIO_Type           *) NRF_GPIO_BASE) 
以上翻译的nrf51.h在QQ750273008日志->蓝牙->nrf51822模块 

这里我们讲几点关键的:
1第一次用引脚必须对该引脚配置比如p0.16这个按钮
NRF_GPIO->IN_CNF[16]=(0 << 0)//key0
                                   | (0 << 1)
                                   | (3 << 2)//1la
                                   | (4 << 8)
                                   | (3 <<16);

可以看到bit0,bit1,bit(2,3),bit(8,9,10),bit(16,17)
我来讲下 PIN_CNF[n] 这个n代表硬件的引脚0~31用法NRF_GPIO->IN_CNF[16]就是设置p0.16脚

PIN_CNF 是32位寄存器bit31~bit0这里只用部分几个位(妈比的总算看到个用寄存器比较奢侈的单片机了)

bit0      写0为输入,写1为输出(和DIR的寄存器关联也可以设置)

bit1      设置PIN[]的INPUT缓冲(写1断开缓冲,写0连上)

bit(3,2)    设置上下拉13k内置电阻,00无拉,01下拉电阻,10保留,11上拉电阻。

bit(10,9,8)   设置驱动强度000是最弱,我输出用011   我输入用100

bit(17,16)    这是中断用的触发沿(10是上升沿触发,11下降沿触发)


这里就配置好了1个引脚了。32个脚全用要写个函数配置下这32个脚。


2配置好了引脚就可以使用这个引脚了。
NRF_GPIO->OUT=0x0000 0000; //如果这32个脚都配置输出,就代表p0.31到p0.0都是低电平
NRF_GPIO->OUT=0x0000 000f; //表示p0.7到p0.0是高电平,其他都是低电平。


NRF_GPIO->OUTSET= 0x0000 000f; //表示只把 p0.7到p0.0电平拉高,其他脚电平不变(写1有效,写0无效)  
NRF_GPIO->OUTCLR= 0x0000 000f; //表示只把 p0.7到p0.0电平拉低,其他脚电平不变 (写1有效,写0无效)   
num=NRF_GPIO->IN; //表示读出32脚电平的值给变量num 

NRF_GPIO->DIR=0x0000 000f; //表示把 p0.7到p0.0设置输出状态,其他脚设置为输入  

NRF_GPIO->DIRSET= 0x0000 000f; //表示只把 p0.7到p0.0设置输出状态,其他脚不变(写1有效,写0无效)  
NRF_GPIO->DIRCLR= 0x0000 000f; //表示只把 p0.7到p0.0设置输入状态,其他脚不变(写1有效,写0无效) 



以下是我写的例程



void ioinit()
{int i;
/*  //usb-jtag
NRF_GPIO->IN_CNF[21]=(1 << 0)//usb-jtag-red
                     | (1 << 1)
                     | (3 << 2)
                     | (3 << 8)
                     | (0 <<16);
NRF_GPIO->IN_CNF[22]=(1 << 0)//usb-jtag-green
                     | (1 << 1)
                     | (3 << 2)
                     | (3 << 8)
                     | (0 <<16);
NRF_GPIO->IN_CNF[23]=(1 << 0)//usb-jtag-blue
                     | (1 << 1)
                     | (3 << 2)
                     | (3 << 8)
                     | (0 <<16);
*/
 //boards-AK
i=NRF_GPIO->IN;//look
NRF_GPIO->IN_CNF[16]=(0 << 0)//key0
                     | (0 << 1)
                     | (3 << 2)//1la
                     | (4 << 8)
                     | (3 <<16);
NRF_GPIO->IN_CNF[17]=(0 << 0)//key1
                     | (0 << 1)
                     | (3 << 2)//1la
                     | (4 << 8)
                     | (3 <<16);
i=NRF_GPIO->IN;//look:0x00030000  
  NRF_GPIO->IN_CNF[18]=(1 << 0)//led0
                     | (1 << 1)
                     | (0 << 2)
                     | (3 << 8)
                     | (0 <<16);
i=NRF_GPIO->IN;//look  
NRF_GPIO->IN_CNF[19]=(1 << 0)//led1
                     | (1 << 1)
                     | (0 << 2)
                     | (3 << 8)
                     | (0 <<16);
i=NRF_GPIO->IN;//look  
NRF_GPIO->PIN_CNF[20]=(1 << 0)//led2
                     | (1 << 1)
                     | (0 << 2)
                     | (3 << 8)
                     | (0 <<16);
i=NRF_GPIO->IN;//look  
NRF_GPIO->PIN_CNF[21]=(1 << 0)//led3
                     | (1 << 1)
                     | (0 << 2)
                     | (3 << 8)
                     | (0 <<16);
i=NRF_GPIO->IN;//look  
NRF_GPIO->PIN_CNF[22]=(1 << 0)//led4
                     | (1 << 1)
                     | (0 << 2)
                     | (3 << 8)
                     | (0 <<16);
i=NRF_GPIO->IN;//look  
NRF_GPIO->PIN_CNF[0]=(1 << 0)//p0.00
                     | (1 << 1)
                     | (0 << 2)
                     | (3 << 8)
                     | (0 <<16);
i=NRF_GPIO->IN;//look  
NRF_GPIO->PIN_CNF[1]=(1 << 0)//p0.01
                     | (1 << 1)
                     | (0 << 2)
                     | (3 << 8)
                     | (0 <<16);
i=NRF_GPIO->IN;//look  
NRF_GPIO->PIN_CNF[2]=(1 << 0)//p0.02
                     | (0 << 1)
                     | (0 << 2)
                     | (3 << 8)
                     | (0 <<16);
i=NRF_GPIO->IN;//look  
NRF_GPIO->PIN_CNF[3]=(1 << 0)//p0.03
                     | (1 << 1)
                     | (0 << 2)
                     | (3 << 8)
                     | (0 <<16);
i=NRF_GPIO->IN;//look  
NRF_GPIO->PIN_CNF[4]=(1 << 0)//p0.04
                     | (1 << 1)
                     | (0 << 2)
                     | (3 << 8)
                     | (0 <<16);
i=NRF_GPIO->IN;//look  
NRF_GPIO->PIN_CNF[5]=(1 << 0)//p0.05
                     | (1 << 1)
                     | (0 << 2)
                     | (3 << 8)
                     | (0 <<16);
i=NRF_GPIO->IN;//look  
NRF_GPIO->PIN_CNF[6]=(1 << 0)//p0.06
                     | (1 << 1)
                     | (0 << 2)
                     | (3 << 8)
                     | (0 <<16);
i=NRF_GPIO->IN;//look  
NRF_GPIO->OUT=0;
i=NRF_GPIO->IN;//look
NRF_GPIO->OUT=0xffffffff;
i=NRF_GPIO->IN;//look:0x007f007b(.. 0111 1111 .. 0111 1n11 )bit2???
NRF_GPIO->OUT=0;
NRF_GPIO->OUT=0xffffffff;//led01234
NRF_GPIO->OUTSET=3<<16;//key0,key1
i=NRF_GPIO->IN;//look
}

//delay
void nrf_delay_ms(uint32_t volatile number_of_ms)
{
    int i;
  while(number_of_ms != 0)
    {
        number_of_ms--;
        while(i<1000)
{
          ++i;
        }
        i=0;
    }
}
我硬件仿真了以下,结过和我想的差不多,除了P0.02这个脚,复位状态居然会拉低电平,和其他脚不一样,虽然也能当普通io脚用,我查了下这个脚可能复用了AD。
51822有1个AD,可以在p0.6~p0.0这7个脚之间轮询取值。51822坑爹的资料,到现在也没翻译的参考手册。

大家去看个文件nrf51_bitfields.h这个文件详细介绍了各个寄存器的设置值及偏移位。(哪个寄存器哪个bit位设置什么值,代表什么意思。)
你可以把这些库文件加到你的工程里看看(虽然用只需要两个文件)。我觉得想真正了解设备工作状态流程的还是寄存器开发,用库开发你仿真时都跳到这文件,跳到那文件,跳的眼花。如果你英语好的话,可能你会习惯。我英语从小学就没及格过,一直用谷歌翻译,好累啊,希望后来学的朋友没我这么辛苦。51822用寄存器操作的我好像到现在还没看到这样的人。要是有就留个QQ哈。一起学习
下面几集会陆续播出,我自学的慢,大家别见怪,我很懒的。。。。。

bleclass.rar

665.63 KB, 下载次数: 1333

QQ750273008有好的资料记得发给我哦。。。
回复

使用道具 举报

  离线 

49

主题

348

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1199
金钱
1199
注册时间
2012-8-28
在线时间
8 小时
 楼主| 发表于 2013-11-8 10:45:40 | 显示全部楼层
本帖最后由 750273008 于 2017-11-16 14:52 编辑

1.MDK5软件安装、软件破解                                                                                      //搭建平台
2.CPU型号(pack installer、help、welcome、www网址下载PDF文件)           //建立支持的cpu
3.project、New uVision Project、文件位置、程序名、保存、选择CPU型号   //开始准备编程
4.Manage Run、Cmsis:core(打钩)、Device:start up,rcc,gpio(打钩)                //提取操作的库函数
5.RESOLVE(按键)                                                                                                       //进行默认化
6.options for target、target:8Mhz,Use micro LIB                                            //平台环境设置
7.OUTPUT:输出文件位置,创建HEX文件                                                               //平台环境设置
8.C/C++定义(STM32F40XX,USE_STDPERIPH_DRIVER)、Debug            //平台环境设置     语法和仿真器设置
9.新建main.c文件保存,添加到Target里                                                                // 主程序文本建立
10. 在main.c文件中写:

#include "stm32f4xx_conf.h"

int main(void)
{

  GPIO_InitTypeDef  GPIO_InitStructure;
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_Init(GPIOD, &GPIO_InitStructure);

  while(1){
                GPIO_SetBits(GPIOD,GPIO_Pin_12|GPIO_Pin_13);
//                Delay(0x7FFFFF);
                GPIO_ResetBits(GPIOD,GPIO_Pin_12|GPIO_Pin_13);
//                Delay(0x7FFFFF);
       
        }
}



keil 5跟以前的版本使用上有些区别,大家参考下吧。
QQ750273008有好的资料记得发给我哦。。。
回复 支持 反对

使用道具 举报

  离线 

0

主题

1

帖子

0

精华

新手上路

Rank: 1

积分
21
金钱
21
注册时间
2013-11-8
在线时间
0 小时
发表于 2013-11-8 18:44:10 | 显示全部楼层
楼主你好,我也是今天才刚碰这块板子,专门来搞蓝牙4.0的,有空交流一下
回复 支持 反对

使用道具 举报

  离线 

1

主题

12

帖子

0

精华

新手上路

Rank: 1

积分
36
金钱
36
注册时间
2013-10-28
在线时间
0 小时
发表于 2013-11-8 20:28:24 | 显示全部楼层
顶起!
有问题多交流。
回复 支持 反对

使用道具 举报

  在线 

482

主题

8万

帖子

30

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
117247
金钱
117247
注册时间
2010-12-1
在线时间
900 小时
发表于 2013-11-8 23:06:16 | 显示全部楼层
cool。
回复 支持 反对

使用道具 举报

  离线 

0

主题

9

帖子

0

精华

新手上路

Rank: 1

积分
29
金钱
29
注册时间
2013-4-19
在线时间
0 小时
发表于 2013-11-9 21:51:03 | 显示全部楼层
板子不错啊,哈哈
回复 支持 反对

使用道具 举报

  离线 

1

主题

12

帖子

0

精华

新手上路

Rank: 1

积分
36
金钱
36
注册时间
2013-10-28
在线时间
0 小时
发表于 2013-11-26 18:15:09 | 显示全部楼层
建立工程那个帖子在哪啊?
回复 支持 反对

使用道具 举报

  离线 

20

主题

64

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2012-10-23
在线时间
9 小时
发表于 2014-7-29 23:00:19 | 显示全部楼层
楼主好,我写的按键怎么没反应,能不能帮忙看下,主要程序如下:
[C] 纯文本查看 复制代码
#define	KEY		16

void KEY_Init(void)
{
	NRF_GPIO->DIR &= ~(1 << KEY);		//Direction of GPIO pins:0->input;1->output
	NRF_GPIO->PIN_CNF[KEY] = (0 << 0) | (0 << 1) | (3 << 2) | (7 << 8) | (3 << 16);
}

int main(void)
{
	KEY_Init();
	LED_Init();
	while (1)
	{
		if (NRF_GPIO->IN & (~(1 << KEY)))
		{
			NRF_GPIO->OUT = 0xffffffff;
		}
		else
		{
			NRF_GPIO->OUT = 0x00000000;
		}
	}
}

回复 支持 反对

使用道具 举报

  离线 

20

主题

64

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2012-10-23
在线时间
9 小时
发表于 2014-7-29 23:05:01 | 显示全部楼层
  我好像2b了,已经搞定,判断换成这样就可以了,不糗。
[C] 纯文本查看 复制代码
if ((NRF_GPIO->IN & (1 << KEY)) == (1 << KEY))

回复 支持 反对

使用道具 举报

  离线 

0

主题

7

帖子

0

精华

新手上路

Rank: 1

积分
34
金钱
34
注册时间
2014-1-14
在线时间
2 小时
发表于 2014-9-3 17:10:17 | 显示全部楼层
谢谢原子,很好的学习参考,能多写几个模块就好了,关键是BLE部分
回复 支持 反对

使用道具 举报

  离线 

0

主题

1

帖子

0

精华

新手上路

Rank: 1

积分
21
金钱
21
注册时间
2014-12-9
在线时间
0 小时
发表于 2014-12-9 10:58:36 | 显示全部楼层
大赞!00000000000
回复 支持 反对

使用道具 举报

  离线 

2

主题

10

帖子

0

精华

新手上路

Rank: 1

积分
48
金钱
48
注册时间
2014-8-11
在线时间
3 小时
发表于 2014-12-9 23:14:31 | 显示全部楼层
回复【2楼】750273008:
---------------------------------
请问楼主,我是飞思卡尔智能车赛参赛者,今年电磁组要用到无线通信实现两部车的信息通信,就传输速度、传输距离和可靠性24L01和蓝牙哪个更好,或者楼主能否推荐一款无线模块?
回复 支持 反对

使用道具 举报

  离线 

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2015-1-19
在线时间
0 小时
发表于 2015-5-29 22:36:34 | 显示全部楼层
蓝牙有办法加密吗?小白来问。。
回复 支持 反对

使用道具 举报

  离线 

13

主题

489

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1123
金钱
1123
注册时间
2012-8-4
在线时间
222 小时
发表于 2015-5-30 00:00:07 | 显示全部楼层
回复【13楼】cxran2wms:
---------------------------------
蓝牙通信  本来就加密的  你还要加密一次吗?
nrf51822蓝牙4.0手环开发板: 淘宝小店
回复 支持 反对

使用道具 举报

  离线 

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2015-1-19
在线时间
0 小时
发表于 2015-6-1 15:57:36 | 显示全部楼层
回复【14楼】muniao:
---------------------------------
嗯。我想不让别人看到我的数据。可以吗?
回复 支持 反对

使用道具 举报

  离线 

0

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2015-6-25
在线时间
0 小时
发表于 2015-6-25 17:17:57 | 显示全部楼层
代理NORDIC蓝牙4.0芯片NRF51822
联系人:刘工
QQ:1330504646
手机:13714153746
NRF51822是一款为超低功耗无线应用(ULP wirelesss applications)打造的多协议单芯片解决方案。
它整合了Nordic一流的无线传送器,同时支持Bluetooth(R) low energy 和专用的2.4GHz协议栈。
基本情况是:
2.4GHZ多协议无线射频
32位ARM Cortex M0 处理器
128位AES硬件加密处理器
256kB flash / 16kB RAM
可编程外设接口PPI
全功能数字接口: SPI / I2C / UART
10位ADC
可编程的输出功率: +4dBm to -20dBm
应用开发和协议堆栈完全独立
与NRF24L系列完全兼容
与NRF51xxx系列管脚兼容
全局独立电源管理
工作电压范围(1.8 V ~ 3.6 V)
回复 支持 反对

使用道具 举报

  离线 

1

主题

116

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
284
金钱
284
注册时间
2015-3-7
在线时间
27 小时
发表于 2016-3-8 15:33:13 | 显示全部楼层
LZ我想问下,NRF51822的8种驱动模式怎么理解?
为人莫作千年计,三十河东四十西,莫欺少年穷。
回复 支持 反对

使用道具 举报

  离线 

0

主题

1

帖子

0

精华

新手上路

Rank: 1

积分
10
金钱
10
注册时间
2016-5-23
在线时间
1 小时
发表于 2016-5-23 22:01:43 | 显示全部楼层
请问这款芯片的IO能够在不改变配置的情况下既能输出又能输入吗?
回复 支持 反对

使用道具 举报

  离线 

5

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2016-5-16
在线时间
12 小时
发表于 2017-11-14 12:17:02 | 显示全部楼层
NRF_GPIO->IN_CNF[16]=(0 << 0)//key0
                                   | (0 << 1)
                                   | (3 << 2)//1la
                                   | (4 << 8)
                                   | (3 <<16);

请问以上语句是什么意思?
回复 支持 反对

使用道具 举报

  离线 

5

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2016-5-16
在线时间
12 小时
发表于 2017-11-14 14:54:20 | 显示全部楼层
哦!明白了。
原来是PIN_CNF[16]寄存器各位的值。为什么不能直接写在这样:
  PIN_CNF[16]=0X0003040C;
回复 支持 反对

使用道具 举报

  离线 

49

主题

348

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1199
金钱
1199
注册时间
2012-8-28
在线时间
8 小时
 楼主| 发表于 6 天前 | 显示全部楼层
xiachime 发表于 2017-11-14 14:54
哦!明白了。
原来是PIN_CNF[16]寄存器各位的值。为什么不能直接写在这样:
  PIN_CNF[16]=0X0003040C;

移位你们都看的吃力,直接赋值岂不是更看不懂。
QQ750273008有好的资料记得发给我哦。。。
回复 支持 反对

使用道具 举报

  离线 

49

主题

348

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1199
金钱
1199
注册时间
2012-8-28
在线时间
8 小时
 楼主| 发表于 6 天前 | 显示全部楼层
本帖最后由 750273008 于 2017-11-16 15:06 编辑
xiachime 发表于 2017-11-14 12:17
NRF_GPIO->IN_CNF[16]=(0

/**
  * @简述通用的输入和输出。 (GPIO)
  */


typedef struct {                                         /*!< GPIO结构                                                  */
  __I  uint32_t  RESERVED0[321];     //保留位
  __IO uint32_t  OUT;                                /*!< 引脚输出值。                                            */
  __IO uint32_t  OUTSET;                          /*!< 置位某个引脚。                                         */
  __IO uint32_t  OUTCLR;                         /*!< 复位某个引脚。                                         */
  __I  uint32_t  IN;                                    /*!< 获取GPIO引脚点平。                                  */
  __IO uint32_t  DIR;                                /*!<GPIO引脚的方向。       写1为输出 0为输入  */
  __IO uint32_t  DIRSET;                          /*!<DIR方向置位存器。        置1为输出              */
  __IO uint32_t  DIRCLR;                          /*!<DIR方向复位寄存器。    置1为输入              */
  __I  uint32_t  RESERVED1[120];
  __IO uint32_t  PIN_CNF[32];                  /*!< 配置GPIO引脚。                                           */
} NRF_GPIO_Type;     //起始地址0x50000000UL

#define NRF_GPIO_BASE                   0x50000000UL    //基地址

#define NRF_GPIO                        ((NRF_GPIO_Type  *) NRF_GPIO_BASE)//开辟空间
//在0x50000000UL 的地址上建立 NRF_GPIO_Type的结构体  定义为  NRF_GPIO
以上翻译的nrf51.h在QQ750273008日志->蓝牙->nrf51822模块

这里我们讲几点关键的:
1第一次用引脚必须对该引脚配置 :比如p0.16这个按钮
NRF_GPIO->PIN_CNF[16]=    (0 << 0)             //引脚方向 0为输入, 1为输出
                                   | (0 << 1)  //写1断开缓冲,写0连上
                                   | (3 << 2)  //13k内置电阻,00无拉,01下拉电阻,10保留,11上拉电阻。
                                   | (4 << 8)  //设置驱动强度000是最弱,我输出用011   我输入用100
                                   | (3 <<16); //10是上升沿触发,11下降沿触发

QQ750273008有好的资料记得发给我哦。。。
回复 支持 反对

使用道具 举报

  离线 

5

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2016-5-16
在线时间
12 小时
发表于 5 天前 | 显示全部楼层
谢谢!
回复 支持 反对

使用道具 举报

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

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2017-11-22 01:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */