我是靠谱客的博主 生动西装,最近开发中收集的这篇文章主要介绍精读OSAL --按键的执行流程(hal_key.c onboard.c),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

OSAL的按键执行流程和普通单片机的写法还是有很大的不同,不过用回调函数的方法可以使按键模块内聚度高,是很好的模块化设计。

底层移植时主要修改就是hal_key.c里面的内容,上层应用则配置key时传入一个回调函数,这个回调函数就是有按键操作时就会由hal调用,

在回调函数做相应的处理,比如应用层生产事件,或者开始广播,什么的。。

void HalKeyInit(void){}
void HalKeyConfig(bool interruptEnable, halKeyCBack_t cback){}
uint8 HalKeyRead(void){ return 0;}
void HalKeyPoll(void){}

移植则主要实现这四个函数

HalKeyConfig是配置中断还是轮询,和传入回调函数,IO配置,设置定时等。HalKeyPoll是轮询的主执行体,即使是中断方式,依然是执行这个函数。中断中只识别是按键的IO中断,就发事件触发轮询,然后轮询中调用HalKeyRead读出正确的键值,其实中断到这是有个延时,就已实现了去抖。onboard.c中又进一步封装了按键操作,主要作用是,长期没按键按时切到中断方式,有按键按住时切到轮询方式,同时又做了一次按键映射。到应用层就简单很多了,什么按键什么操作。

最后

以上就是生动西装为你收集整理的精读OSAL --按键的执行流程(hal_key.c onboard.c)的全部内容,希望文章能够帮你解决精读OSAL --按键的执行流程(hal_key.c onboard.c)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部