完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
最近调试NRF51822遇到一个怪问题
我的GPIO 用到 4~7 11~20 而 4~7这几个管脚 没有输出【跟上面一样的配置】 用 nrf_gpio_cfg_output 测试的时候 一起调用的, 其他管脚都没问题 怀疑是ADC搞鬼? ADC 用了AN6 , 但是不初始化ADC 也不行 这个芯片最近采用, 有些还不太了解, 在此求助各位! 谢谢! |
|
相关推荐
7个回答
|
|
|
|
|
|
补充: 拿示波器看波形, 全部是低电平,没有输出
如果设置为输入, 测量也是低电平, 但是读入的确是高电平, 有点奇怪 电路测量都是通的, 后面芯片都拆了,只是测量管脚 |
|
|
|
没人了解吗?
|
|
|
|
|
|
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无效)
|
|
|
|
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无效) |
|
|
|
我自己画的板子 不管置高置低 测的得电压都是一点几伏 不知道怎么回事
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2571 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2366 浏览 5 评论
3214 浏览 3 评论
2840 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2793 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
672浏览 1评论
910浏览 0评论
1031浏览 0评论
674浏览 0评论
502浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 22:48 , Processed in 1.478470 second(s), Total 88, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号