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工程实现相同功能。
发布评论