OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4227|回复: 7

NRF51822 GPIO问题

[复制链接]

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2017-6-8 16:47:40 | 显示全部楼层 |阅读模式
5金钱
最近调试NRF51822遇到一个怪问题
我的GPIO  用到 4~7  11~20

而 4~7这几个管脚 没有输出【跟上面一样的配置】 用 nrf_gpio_cfg_output

测试的时候 一起调用的, 其他管脚都没问题

怀疑是ADC搞鬼? ADC 用了AN6 ,  但是不初始化ADC 也不行

这个芯片最近采用, 有些还不太了解, 在此求助各位! 谢谢!



最佳答案

查看完整内容[请看2#楼]

估计肯定没人知道原因!!! 我tmd 把 pin脚当IO 配置去了, 应该是 0/1/2/3 见过我这么粗心的吗!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
 楼主| 发表于 2017-6-8 16:47:41 | 显示全部楼层
估计肯定没人知道原因!!!

我tmd 把 pin脚当IO 配置去了, 应该是 0/1/2/3

见过我这么粗心的吗!
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
 楼主| 发表于 2017-6-8 16:49:18 | 显示全部楼层
补充: 拿示波器看波形, 全部是低电平,没有输出

如果设置为输入, 测量也是低电平, 但是读入的确是高电平,  有点奇怪


电路测量都是通的, 后面芯片都拆了,只是测量管脚
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
 楼主| 发表于 2017-6-9 15:41:36 | 显示全部楼层
没人了解吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2017-6-9 21:19:11 | 显示全部楼层
帮顶
回复

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1633
金钱
1633
注册时间
2012-8-28
在线时间
71 小时
发表于 2018-2-7 09:13:45 | 显示全部楼层
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无效)
回复

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1633
金钱
1633
注册时间
2012-8-28
在线时间
71 小时
发表于 2018-2-7 09:13:57 | 显示全部楼层
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无效)
QQ750273008有好的资料记得发给我哦。。。
回复

使用道具 举报

4

主题

11

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2018-1-17
在线时间
9 小时
发表于 2018-2-7 17:11:45 | 显示全部楼层
我自己画的板子 不管置高置低 测的得电压都是一点几伏 不知道怎么回事
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 03:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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