Zigbee零基础教程(二)在模板工程上修改成想要的功能并使用HAL库(HAL库跑马灯为例)


前言

协议栈安装好之后会有官方提供的文档,还有样本代码


一、官方提供文档以及模板目录?

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

在这里插入图片描述

有了HAL库就不需要看寄存器了,直接调用接口即可

二、使用步骤

1.相关点灯的HAL库API

在这里插入图片描述
介绍很详细,英文看不懂怎们办!百度呗!

2.找官方提供的样例模板

SampleApp够用

在这里插入图片描述
复制一份,然后改代码
注意写在osal_start_system(); // No Return from here
前,加while(1)先不进入osal

代码如下(示例):

int main( void )
{
  //。。。。。。。此处以上官方提供的关键代码如下
  WatchDogEnable( WDTIMX );
#endif
  HalLedSet(HAL_LED_ALL,HAL_LED_MODE_ON);
  while(1)
  {
    HalLedSet(HAL_LED_1,HAL_LED_MODE_TOGGLE);
    MicroWait(0xffff);
    HalLedSet(HAL_LED_2,HAL_LED_MODE_TOGGLE);
    MicroWait(0xffff);
    HalLedSet(HAL_LED_3,HAL_LED_MODE_TOGGLE);
    MicroWait(0xffff);
  }
  
  osal_start_system(); // No Return from here

  return 0;  // Shouldn't get here.
} // main()

3.怎么驱动其他GPIO呢四个LED呢,控制风扇继电器呢?

改呗进入板载配置文件!
在这里插入图片描述

代码如下,复制粘贴加个LED4即可(示例):

* 1 - Green */
#define LED1_BV           BV(0)
#define LED1_SBIT         P1_0
#define LED1_DDR          P1DIR
#define LED1_POLARITY     ACTIVE_HIGH

#if defined (HAL_BOARD_CC2530EB_REV17)
  /* 2 - Red */
  #define LED2_BV           BV(4)
  #define LED2_SBIT         P1_4
  #define LED2_DDR          P1DIR
  #define LED2_POLARITY     ACTIVE_HIGH

  /* 3 - Yellow */
  #define LED3_BV           BV(1)
  #define LED3_SBIT         P1_1
  #define LED3_DDR          P1DIR
  #define LED3_POLARITY     ACTIVE_HIGH
    /* 4 - 新加的 */
  #define LED4_BV           BV(1)
  #define LED4_SBIT         设置成想要控制的GPIO//P1_1
  #define LED4_DDR          P1DIR
  #define LED4_POLARITY     ACTIVE_HIGH


//往下找还有这里
                                                               \
  /* Turn on cache prefetch mode */                              \
  PREFETCH_ENABLE();                                             \
                                                                 \
  HAL_TURN_OFF_LED1();                                           \
  LED1_DDR |= LED1_BV;                                           \
  HAL_TURN_OFF_LED2();                                           \
  LED2_DDR |= LED2_BV;                                           \
  HAL_TURN_OFF_LED3();                                           \
  LED3_DDR |= LED3_BV;                                           \
  //新加的复制粘贴改就完了
  HAL_TURN_OFF_LED4();   
  LED4_DDR |= LED4_BV;                              
  
                                                                 \
                                                                 
                                                                 //继续往下找
                                                                 * ----------- LED's ---------- */
                                                                 //继续往下找
                                                              
#if defined (HAL_BOARD_CC2530EB_REV17) && !defined (HAL_PA_LNA) && !defined (HAL_PA_LNA_CC2590)

  #define HAL_TURN_OFF_LED1()       st( LED1_SBIT = LED1_POLARITY (1); )
  #define HAL_TURN_OFF_LED2()       st( LED2_SBIT = LED2_POLARITY (1); )
  #define HAL_TURN_OFF_LED3()       st( LED3_SBIT = LED3_POLARITY (1); )
  #define HAL_TURN_OFF_LED4()       st( LED4_SBIT = LED3_POLARITY (1); )

  #define HAL_TURN_ON_LED1()        st( LED1_SBIT = LED1_POLARITY (0); )
  #define HAL_TURN_ON_LED2()        st( LED2_SBIT = LED2_POLARITY (0); )
  #define HAL_TURN_ON_LED3()        st( LED3_SBIT = LED3_POLARITY (0); )
  #define HAL_TURN_ON_LED4()        st( LED4_SBIT = LED1_POLARITY (0); )
  #define HAL_TOGGLE_LED1()         st( if (LED1_SBIT) { LED1_SBIT = 0; } else { LED1_SBIT = 1;} )
  #define HAL_TOGGLE_LED2()         st( if (LED2_SBIT) { LED2_SBIT = 0; } else { LED2_SBIT = 1;} )
  #define HAL_TOGGLE_LED3()         st( if (LED3_SBIT) { LED3_SBIT = 0; } else { LED3_SBIT = 1;} )
  #define HAL_TOGGLE_LED4()         st( if (LED4_SBIT) { LED4_SBIT = 0; } else { LED4_SBIT = 1;} )

  #define HAL_STATE_LED1()          (LED1_POLARITY (LED1_SBIT))
  #define HAL_STATE_LED2()          (LED2_POLARITY (LED2_SBIT))
  #define HAL_STATE_LED3()          (LED3_POLARITY (LED3_SBIT))
  #define HAL_STATE_LED4()          (LED4_POLARITY (LED4_SBIT))                                                        

编译没有错误
可以控制LED4的GPIO了!!!


现象

跑马灯流水灯都见过,下一篇怎么将样例工程改成自己的工程