zigbee学习之路(十五):基于协议栈的按键实验

本文介绍了如何在Zigbee协议栈中实现按键中断,并详细解释了按键配置代码。通过按键按下触发LED闪烁,展示了从配置按键接口到实现中断处理的全过程。

一.前言

     经过上次的学习,相信大家已经初步学会使用zigbee协议进行发送和接受数据了。今天,我们要进行的实验是按键的实验,学会如何在协议栈里实现按键中断。

二.实验功能

    在协议栈上实现按键中断,BUT1 按下,LED1 闪烁两次。

三.代码讲解

    大家还记得,前面做过的按键实验是怎么配置的吗,其实基于zigbee的协议栈原理是差不多的,我们要对按键的接口和状态是差不多,TI已经为我们建立了专用的按键配置的代码文件,我们只要在此基础上修改就行了。先打开hel_key.c进行修改,下面是代码

#define HAL_KEY_SW_6_PORT   P0   //1、配置IO口(S1在P0_4)

#define HAL_KEY_SW_6_BIT    BV(4)

#define HAL_KEY_SW_6_SEL    P0SEL

#define HAL_KEY_SW_6_DIR    P0DIR/* edge interrupt */

#define HAL_KEY_SW_6_EDGEBIT  BV(0)

#define HAL_KEY_SW_6_EDGE     HAL_KEY_RISING_EDGE //2、P0上升沿触发中断/* SW_6 interrupts */

#define HAL_KEY_SW_6_IEN      IEN1  /* CPU interrupt mask register */

#define HAL_KEY_SW_6_IENBIT   BV(5) /* Mask bit for all of Port_0 */

#define HAL_KEY_SW_6_ICTL     P0IEN /* Port Interrupt Control register */

#define HAL_KEY_SW_6_ICTLBIT  BV(4) /* P0IEN - P0.1 enable/disable bit */

#define HAL_KEY_SW_6_PXIFG    P0IFG /* Interrupt flag at source */

以上就是对按键端口进行配置,和我们普通的I/O口初始化差不多。

然后我们继续修改,在hal_board_cfg.h 中修改

#define PUSH1_BV BV(4)//S1 在P0_4
#define PUSH1_SBIT P0_4

最后,我们在OnBoard.c中进行修改

默认为查询方式,现在我们将其改为中断方式

我们既然使用了中断,就要配置并用它,在hal_key.c函数中开启中断

这样的话,按键相关的配置就出不多完成了,只要等着zigbee中的事件函数调用就行了。下面是具体的按键的处理函数。

void SampleApp_HandleKeys( uint8 shift, uint8 keys )
{
  (void)shift;  // Intentionally unreferenced parameter
 
  if ( keys & HAL_KEY_SW_6 )
  {
    HalUARTWrite(0,"K1",2); //提示被按下的是KEY1
    HalUARTWrite(0,"\n",1); //
    HalLedBlink( HAL_LED_1, 2, 50, 500 ); //LED1闪烁2次,每次为500ms,点亮时间为50%
  }

 

当检测到按键按下的时候,我们就可以看到灯闪烁的效果了

四.总结

    通过本次,主要想向大家介绍的是zigbee里的按键函数以及运用,根据按键对应的不同I/O口,来进行修改,达到自己的目的,需要具体代码的同学可以联系我。

 

 

 

  

 

转载于:https://www.cnblogs.com/sjsxk/p/5381978.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值