以按键事件为例阐述消息传递机制
这里主要想说的是按键事件发生后,app层是怎么收到消息的一些想法。
main.c:
执行InitBoard( OB_COLD ) // OB_COLD宏定义为0
{
if ( level == OB_COLD )
{
*(uint8 *)0x0 = 0;
osal_int_disable( INTS_ALL )
}
}
这个函数执行完毕系统关禁止中断
然后执行HalDriverInit (void) //头文件有#define HAL_KEY TRUE
{
......
#if (defined HAL_KEY) && (HAL_KEY == TRUE)
HalKeyInit();
#endif
.....
}
———————————————————————————————————————
hal_key.c:
执行HalKeyInit( void ) //这是关于按键初始化的配置,比如回调函数,按键储存变量
{
halKeySavedKeys = 0;
.......
pHalKeyProcessFunction = NULL;//回调函数为空
HalKeyConfigured = FALSE; //按键还没有配置
}
执行完返回main.c
———————————————————————————————————————
顺着main函数的函数体往下执行,再次遇到
InitBoard( OB_READY ); // #define OB_READY 2
{
......
else
{
HalKeyConfig(HAL_KEY_INTERRUPT_DISABLE, OnBoard_KeyCallback);
}
}
hal_key.c:
// #define HAL_KEY_INTERRUPT_DISABLE 0x00
执行 HalKeyConfig ( bool interruptEnable , halKeyCBack_t cback )
{
Hal_KeyIntEnable