北京时间4月1日消息,2026世预欧附加赛决赛意大利点球战不敌波黑,连续三届无缘世界杯。知名解说员黄健翔也在社媒发文,更新他看球的感受。 在意大利确定...
2026-04-01 3
回调是对高级软件传递给函数的可执行代码的引用。这些回调有能力极大地提高嵌入式软件的可移植性和重用性,但是根据它们的定义,嵌入式开发人员需要使用函数指针,如果不小心使用,可能会非常危险。以下是在嵌入式系统中安全创建和使用回调的五个技巧,尤其是在中断中使用回调时。
技巧1——创建设置或注册方法—回调通常被视为传递到函数中的函数指针,但它们也可以在可移植系统中用于设置将由中断服务例程(ISR)调用的函数。当中断触发时,中断处理程序将包含一个应该执行的函数的引用。中断的可执行函数将在运行时设置。
技巧2——将回调初始化为空值或默认值—创建一个包含回调寄存器或设置函数的外设驱动程序接口是创建可移植中断的一个重要步骤,但是有一个问题:如果一个回调没有被注册,但是中断被激活并触发了,会发生什么呢?中断服务例程需要某种方式来判断回调函数是否已经注册,提供这种验证的最简单的方法是首先将回调函数指针初始化为NULL。在ISR中对NULL进行简单的检查将会阻止任何处理程序的执行。嵌入式开发人员使用NULL的一种替代方法是将指针初始化为一个通用的空中断处理程序。当一个未初始化的中断回调被触发时,默认的处理程序将会运行。
技巧3——使用前验证回调—将回调指针的初始值设置为 NULL 或通用处理程序允许中断验证是否已设置中断处理程序。但是,在使用函数指针时,首先验证内存中引用的位置不是 NULL 并且确实存在于系统中。
技巧4——使用回调向较低级别的固件添加功能—回调函数对于以通用和特定于应用程序的方式向低级驱动程序和应用程序代码添加功能非常有用。为了生产松耦合和高内聚的固件,开发人员可以通过使用回调将中断向量和对其他外围模块的引用传递到驱动程序中。回调允许嵌入式开发人员在设计时添加应用程序特定的功能,而不必不断修改驱动程序代码来获得所需的行为。回调可以用这种方式产生非常干净,可移植和可重用的固件和接口。
技巧5——创建抽象回调函数—回调函数通常需要接受未知数量的参数,它们可能返回数据,也可能不返回数据,这取决于应用程序的需要。然而,开发人员的目标是编写抽象的回调函数。对于与中断相关的回调,回调只是作为中断服务例程的一部分被调用,函数可以接受一个void参数并返回void。任何需要与应用程序共享的数据都将以与中断相同的方式处理。对于可能与错误处理或其他自定义功能相关的驱动程序回调,处理参数和返回值的最简单方法是传递一个指针并返回一个指针。
最后的想法
回调在嵌入式系统中有广泛的用途,尤其是在开发可移植和可重用的固件时。本文提供了五个例子,讲明嵌入式开发人员如何考虑和实现中断回调,但它们只是其中的一小部分。
相关文章
北京时间4月1日消息,2026世预欧附加赛决赛意大利点球战不敌波黑,连续三届无缘世界杯。知名解说员黄健翔也在社媒发文,更新他看球的感受。 在意大利确定...
2026-04-01 3
今天(3月31日)下午,备受社会关注的“徐汇53岁邓女士”指定遗产管理人案开庭。上海徐汇区人民法院当庭作出宣判:指定徐汇区民政局为遗产管理人。 目前,...
2026-04-01 4
新华社北京4月1日电 伊朗外交部长阿拉格齐在卡塔尔半岛电视台3月31日播出的采访中说,他收到美国总统特朗普的特使威特科夫的信息,但这不意味着伊朗与美...
2026-04-01 3
3月30日,苏州市十七届人大常委会第二十八次会议召开。会议经过审议,通过了关于接受吴庆文辞去苏州市人民政府市长职务的请求的决定。会议决定任命王维为苏州...
2026-03-30 3
△美国总统特朗普(资料图) 当地时间3月30日,美国总统特朗普通过社交媒体平台发文称,美方正在与伊朗方面进行严肃磋商,以结束在伊朗的军事行动。 特朗...
2026-03-30 5
3月27日,外交部发言人林剑主持例行记者会。 有记者提问,美国方面昨日表示,中国正在扣留悬挂巴拿马旗的集装箱船,并称此举是为了惩罚巴拿马政府此前取消长...
2026-03-27 3
搜狐无人机综合报道 3月27日,市十六届人大常委会第二十三次会议表决通过《北京市无人驾驶航空器管理规定》(以下简称《规定》),自2026年5月1日起实...
2026-03-27 4
中央纪委国家监委网站3月27日通报,广东省政协党组成员、副主席郭永航涉嫌严重违纪违法,目前正接受中央纪委国家监委纪律审查和监察调查。 简历显示,郭...
2026-03-27 4
发表评论