1.1 zigbee基础(点亮LED灯)

最近想起来重新学习zigbee,比起半年前现在的资料好的多。葱点亮led灯开始把。

  首先看led的电路图

通用I/O口,阅读cc2530 datasheet 7.3节

(1)可知(The registers PxSEL, where x is the port number 0–2, are used to configure each pin in a port as either ageneral-purpose I/O pin or as a peripheral I/O signal. By default, after a reset, all digital input/output pins  are configured as general-purpose input pins.寄存器PxSEL,其中x 为端口的标号0~2,用来设置端口的每个引脚为通用I/O 或者是外部设备I/O 信号。作为缺省的情况,每当复位之后,所有的数字输入/输出引脚都设置为通用输入引脚。)。

默认的是通用I/o 模式  PxSEL 保持默认值

(2)To change the direction of a port pin, at any time, the registers PxDIR are used to set each port pin to be either an input or an output. Thus by setting the appropriate bit within PxDIR to 1, the corresponding pin  becomes an output在任何时候,要改变一个端口引脚的方向,就使用寄存器PxDIR 来设置每个端口引脚为输入或输出。因此只要设置PxDIR 中的指定位为1,其对应的引脚口就被设置为输出了。

需要配置 PxDIR 寄存器  PxDIR |=0×01;

(3)  默认情况下是上拉的

总而言之,

由于 CC2530 0寄存器初始化时默认是:

PxSEL =0×00;

PxDIR =0×00;

PxINP =0X00;

所以IO口初始化我们可以简化初始化指令:

P0DIR |= 0×03; //P0_0,P0_1定义为输出

P1DIR |= 0×10; //P1_4定义为输出

#include 
#define LED1 P0_0  //宏定义LED1 为P0_0
#define LED2 P0_1   
#define LED3 P1_4
void IO_Init(void)
{
  P0DIR |=0x03;  // 设置P0_0P0_1为输出
  P1DIR |=0x10;  //设置P1_4 为输出
    LED1=0;      //初始化LED1.2.3灯
    LED2=0;
    LED3=0;
}
void main(void)
{
   IO_Init();  //  初始化
    LED1=1;     //点亮LED1
    LED2=1;    //点亮LED2
    LED3=0;     //灭掉LED3
    while(1);  
  
}


注意事项:  每个厂商的底板不一样,要根据自己的电路图写程序。  哪个脚对应哪个灯不要弄混,我刚刚就犯了这个错误。

效果图:LED 1,2 亮。 LED 3 灭

你可能感兴趣的:(zigbee)