怎样将IO口外部中断事件插入zll协议栈中

怎样将IO口外部中断事件插入zll协议栈中,第1张

你可以参考协议栈中按键的实现,

void HalKeyInit(void){}

void HalKeyConfig(bool interruptEnable, halKeyCBack_t cback){}

中断处理函数

HAL_ISR_FUNCTION( halKeyPort0Isr, P0INT_VECTOR )

Sniffer Log above Everything Else

CC2530芯片在TI协议栈中自定义外部中断

学过单片机或写过CC2530裸板程序的同学都知道,外部中断的处理是通过中断服务程序实现的。

在CC2530裸板程序中,我们可以这样实现。

[cpp] view plain copy

#pragma vector = P0INT_VECTOR

__interrupt void P0_ISR(void)//假设P0口全部定义为中断模式

{

if(P0IFG >>4 &0x01) //P0IFG是CC2530的中断标志位

{

led2 = ~led2//P0_4触发中断

}

if(P0IFG >>5 &0x01) //P0_5触发中断

{

led1 = ~led1

}

P0IFG = 0

P0IF = 0

}

消息是收到的事件和数据的一个封装,比如发生了一个事件(收到别的节点发的消息),这时就会把这个事件所对应的事件号及收到的数据封装成消息,放入消息队列中。协议栈是由各个层组成的,每一层都要处理各种事件,所以就为每一层定义了一个事件处理函数,我们可以把这个处理函数理解为任务,任务从消息队列中提取消息,从消息中提取所发生的具体事件,调用相应的具体事件处理函数,比如按键处理函数等等


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11718710.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存