【Zigbee】基础篇(2) Zigbee控制GPIO端口为输入或输出

大家好,我是皮皮猫吖!

每文一言:如果你觉得现在走的路比较辛苦,那就证明你在走上坡路!


本篇文章:

主要是Zigbee控制GPIO端口为输入模式或输出模式。

正文如下:

一、Zigbee无线模块基本工作电路

CC2530总共有21个引脚,分为三组:

P0组8个引脚
P1组8个引脚
P2组5个引脚

二、学会控制CC2530开发板上所有端口为输入或输出模式

1)如何配置该端口为普通输出端口?
① 管理Zigbee所有IO口处于普通IO还是片上外设:由P0SEL、P1SEL、P2SEL三个寄存器决定的
  • P0SEL和P1SEL都是控制的8个引脚,这16个引脚即可以作为普通io口,也可以作为片上外设
  • P2SEL只能控制P2_0, P2_3, P2_4这三个引脚,因为P2_1, P2_2一般是作为下载程序的,不作为普通IO口

注意: 上述里面当PXSEL对应的某位上是0的时候,表示该引脚为普通io模式,如果当前位为1的时候,表示该引脚为片上外设模式

寄存器P0SELP1SELP2SEL
普通I/O000
片上外设111
② 管理所有IO口(不包括P2_1, P2_2)是处于输入状态还是输出状态的:由P0DIR、P1DIR、P2DIR三个寄存器控制
  • 当P0DIR、P1DIR、P2DIR寄存器的某一位为“0”时,表示该端口为输入状态
  • 当P0DIR、P1DIR、P2DIR寄存中的某一位为“1”时,表示该端口为输出状态
寄存器P0DIRP1DIRP2DIR
输入000
输出111
2)如何配置该端口为普通输入端口?
① 输入怎么配置【设置P0_6为普通io输入模式】:
  • 让P0_6处于普通IO口(非片上外设模式),设置P0SEL的第6位为0
  • 让P0_6处于输入状态(非输出状态),设置P0DIR的第6位为0
  • 还需要让P0_6处于上拉、下拉或者三态中的一种状态
② 管理该端口为输入模式中的上拉、下拉、三态的寄存器是:P0INP、P1INP、P2INP三个寄存器
寄存器P0INPP1INPP2INP(0-4引脚)P2INP(5引脚)P2INP(6引脚)P2INP(7引脚)
上下拉000
三态111
0(P0INP的"0"表示上拉)0(P1INP的"0"表示上拉)0(P2INP的"0"表示为上拉)
1(P0INP的"0"表示下拉)1(P1INP的"0"表示下拉)1(P2INP的"0"表示下拉)

三、练习:读取针帽是否盖上,led灯亮灭

#include <iocc2530.h>
void main(){
 /*
 
 //注意:刚通上电的时候,P0SEL、P1SEL、P2SEL等所有寄存器各位都是 0,
 //默认io口都是上拉电阻,普通io口
 
 //设置P1_0为普通io口,非片上外设口:设置P1SEL的第一位为0
 //设置某一位为0:采用与运算(一个为0,即为0)
  P1SEL &= 0xfe;//1111 1110
 
  //设置某一位为1:采用或运算(一个为1,即为1)
  //设置P1_0为输出口
  P1DIR |= 0x01;//0000 0001
  P1_0 = 0;
  while(1);

 */
 
  //设置P0_4为普通io输出模式
 P0SEL &=0xef;  //1110 1111  第四个引脚为普通io口
 P0DIR |=0x10;  //0001 0000 第四个引脚为输出口

 
 //测试P0_6输入状态
 P0SEL &= 0xbf;  //1011 1111 第六位普通io
 P0DIR &= 0xbf;  //1011 1111 第六位输入
 P0INP &= 0xbf;  //1011 1111 第六位,上拉、下拉模式
 P2INP &= 0xdf;   //1101 1111 让P0_6处于上电阻拉模式
   while(1){
     if(P0_6==1){//检测到高电平
         P0_4 = 0;
     }else{//检测到低电平
         P0_4 = 1;
     }
   }
}

希望本篇文章对大家有所帮助,后续会继续分享Zigbee相关学习知识…

如果文章内容有错误的地方,请在留言处留下你的见解,方便大家共同学习。谢谢!

如有侵权或其他任何问题请联系:QQ1370922071,本文主要用于学习交流,转载请声明!

作者:皮皮猫吖


  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值