| 
 
金牌会员  
 
	积分1648金钱1648 注册时间2012-8-28在线时间73 小时 | 
 
 发表于 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无效) | 
 |