贯彻省委“支点建设”战略部署,落实市委“五个中心”建设重要要求,市发展和改革委员会(以下简称市发改委)如何在打造全国经济中心中当好牵头者、走好跃升路?...
2026-05-27 4
回调是对高级软件传递给函数的可执行代码的引用。这些回调有能力极大地提高嵌入式软件的可移植性和重用性,但是根据它们的定义,嵌入式开发人员需要使用函数指针,如果不小心使用,可能会非常危险。以下是在嵌入式系统中安全创建和使用回调的五个技巧,尤其是在中断中使用回调时。
技巧1——创建设置或注册方法—回调通常被视为传递到函数中的函数指针,但它们也可以在可移植系统中用于设置将由中断服务例程(ISR)调用的函数。当中断触发时,中断处理程序将包含一个应该执行的函数的引用。中断的可执行函数将在运行时设置。
技巧2——将回调初始化为空值或默认值—创建一个包含回调寄存器或设置函数的外设驱动程序接口是创建可移植中断的一个重要步骤,但是有一个问题:如果一个回调没有被注册,但是中断被激活并触发了,会发生什么呢?中断服务例程需要某种方式来判断回调函数是否已经注册,提供这种验证的最简单的方法是首先将回调函数指针初始化为NULL。在ISR中对NULL进行简单的检查将会阻止任何处理程序的执行。嵌入式开发人员使用NULL的一种替代方法是将指针初始化为一个通用的空中断处理程序。当一个未初始化的中断回调被触发时,默认的处理程序将会运行。
技巧3——使用前验证回调—将回调指针的初始值设置为 NULL 或通用处理程序允许中断验证是否已设置中断处理程序。但是,在使用函数指针时,首先验证内存中引用的位置不是 NULL 并且确实存在于系统中。
技巧4——使用回调向较低级别的固件添加功能—回调函数对于以通用和特定于应用程序的方式向低级驱动程序和应用程序代码添加功能非常有用。为了生产松耦合和高内聚的固件,开发人员可以通过使用回调将中断向量和对其他外围模块的引用传递到驱动程序中。回调允许嵌入式开发人员在设计时添加应用程序特定的功能,而不必不断修改驱动程序代码来获得所需的行为。回调可以用这种方式产生非常干净,可移植和可重用的固件和接口。
技巧5——创建抽象回调函数—回调函数通常需要接受未知数量的参数,它们可能返回数据,也可能不返回数据,这取决于应用程序的需要。然而,开发人员的目标是编写抽象的回调函数。对于与中断相关的回调,回调只是作为中断服务例程的一部分被调用,函数可以接受一个void参数并返回void。任何需要与应用程序共享的数据都将以与中断相同的方式处理。对于可能与错误处理或其他自定义功能相关的驱动程序回调,处理参数和返回值的最简单方法是传递一个指针并返回一个指针。
最后的想法
回调在嵌入式系统中有广泛的用途,尤其是在开发可移植和可重用的固件时。本文提供了五个例子,讲明嵌入式开发人员如何考虑和实现中断回调,但它们只是其中的一小部分。
相关文章
贯彻省委“支点建设”战略部署,落实市委“五个中心”建设重要要求,市发展和改革委员会(以下简称市发改委)如何在打造全国经济中心中当好牵头者、走好跃升路?...
2026-05-27 4
北京时间5月20日凌晨,U17国足在U17亚洲杯半决赛中2比0击败澳大利亚队,成功晋级最终决赛。决赛中,他们的对手为日本队。 本场比赛,U17国足在...
2026-05-20 6
5月19日,曾出演过多部微短剧的演员黄子仟被传意外离世,年仅24岁。红星新闻记者从相关渠道获悉,黄子仟于今年5月11日发生车祸,送医后经抢救无效去世。...
2026-05-20 6
5月19日,有网传信息显示,广西桂林市七星区一蛋糕店在朋友圈发布的文案中写道:“比520更早到来的,是柳州5.2级地震的震动”。随后,该蛋糕店删除了相...
2026-05-20 6
5月18日,伊朗外交部对外公布全新停火方案,并经由巴基斯坦转交美方。本次方案虽与前期提案大体相近,但在浓缩铀处置方式上做出策略调整,释放出差异化博弈信...
2026-05-20 6
4月30日,据九派新闻,针对网传 “加盟费10万元、每月管理费2万元” 的说法,莫氏鸡煲创始人莫叔的儿子明确否认。 他表示,网传的加盟费用和加盟协议都...
2026-04-30 10
“去上海前也没人告诉我走路也罚款!”五一假期将至,一则贴文引起大家的关注,某位游客自述在上海街头因误入非机动车道被交警开具警告单。不少计划节日期间来沪...
2026-04-30 6
瓦吉迪被赤身裸体绑在金属床上时,第一个以色列士兵走进来了。他没有说话,也没有蒙住瓦吉迪的眼睛,事后瓦吉迪回忆,那人似乎很享受他的恐惧。 强奸发生得很快...
2026-04-30 10
发表评论