金牌会员
- 积分
- 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无效) |
|