2024年5月4日发(作者:)

按键中断方式控制LED亮灭

任务要求:

通过ZigBee模块上的SW1键,以中断方式控制LED1的亮灭。

任务实施:

已知ZigBee模块上的SW1键连接到CC2530的P1.2端口。

1.打开SimpleApp工程。

2.修改按键配置。

将SW1键配置为Z-Stack协议栈中的SW6按键。在hal_board_cfg.h文件中(在

HALTargetCC2530EBConfig目录下),把P1.2作为按键输入端口进行配置。

3.修改OnBoard.c文件。

OnBoard.c文件在ZMain目录下。

将按键中断禁止改为允许。

4.打开hal_key.c文件。

hal_key.c文件在HAL/Target/Drivers目录下,查看并修改中断配置。

5.修改HalKeyPoll()函数。

HalKeyPoll()函数在HALTargetCC2530EBDrivershal_key.c文件中。

我们的模块没有用到操纵杆,所以把相关代码进行注释。

6. 添加中断服务函数。

在HALTargetCC2530EBDrivershal_key.c文件中添加HAL_ISR_FUNCTION函数,依照

HAL_ISR_FUNCTION( halKeyPort0Isr, P0INT_VECTOR )函数编写。

增加HAL_KEY_CPU_PORT_1_IF的定义。

7.查看halProcessKeyInterrupt函数。

halProcessKeyInterrupt函数在HALTargetCC2530EBDrivershal_key.c文件中。

8.修改zb_HandleKeys()函数。

在zb_HandleKeys( uint8 shift, uint8 keys )函数中添加代码(App目录下的SimpleController.c

文件内)。

9.下载调试。

在ZigBee模块上按SW1键,第1次按下时,LED1亮;第2次按下时,LED1灭;再按LED1

又亮;如此循环亮灭。

拓展任务:在SampleApp工程实现相同功能。