Zigbee零基础教程(二)在模板工程上修改成想要的功能并使用HAL库(HAL库跑马灯为例)
Zigbee零基础教程(二)在模板工程上修改成想要的功能并使用HAL库(HAL库跑马灯为例)
前言
协议栈安装好之后会有官方提供的文档,还有样本代码
一、官方提供文档以及模板目录?


有了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了!!!
现象
跑马灯流水灯都见过,下一篇怎么将样例工程改成自己的工程