嵌入式系统的事件驱动应用程序:PDF摘要

提供并解释了为嵌入式系统创建事件驱动应用程序和模拟任务管理器应用程序的C代码。

通过彼得•加 2021年11月30日
提供:Peter Galan,退休控制软件工程师

学习目标

  • 学习如何在嵌入式系统中使用C进行任务管理。
  • 研究一个事件驱动的任务管理实现。
  • 编译并运行程序。

当打开任何PC程序时,很明显它是一个事件驱动的应用程序。用户需要点击特定的按钮/小工具来提示应用程序执行所需的操作;否则,什么都不会发生。如果您熟悉c#编程语言,它可能是编写这类PC应用程序(至少是在Microsoft Windows下运行的应用程序)最重要的语言,那么您很可能会使用这样的代码结构。

控制工程14页可下载的Adobe PDF包含使用C语言实现事件驱动任务管理嵌入式系统的代码示例、图表和截图,内容包括:

在嵌入式系统中使用C进行任务管理

Galan提供了一个扩展的例子来帮助理解:想象一个中等大小的嵌入式系统,需要一组设计人员在固件上工作。一个设计师负责信号采样/处理;另一名设计师负责与其他系统的通信等。必须有一个设计人员负责协调系统所需的所有操作(让我们称之为任务)。下面是c代码示例。

一个事件驱动的任务管理嵌入式系统实现

在嵌入式系统中,可能会发生几十个事件。它们可能指示一些外部信号电平的变化,实时时钟“滴答”指示特定时间段的流逝,A/D转换程序的完成,以及许多其他“事件”。将性质相似的事件分组为一个事件是非常方便的,我们称之为事件寄存器。

Galan继续提供并解释C代码。

编译并运行嵌入式系统程序

当你编译并运行上面的程序时,他总结道,你的电脑应该启动一个如下的调试控制台窗口,就像在PDF下载中提供的屏幕截图所显示的那样。所有的东西都可以很好地用C来编写,C仍然是许多嵌入式系统的最佳编程语言。

图:发布者对象:链表数组和事件寄存器

图:发布者对象:链表数组和事件寄存器

关于C语言编程的一些历史

C语言是1972年由贝尔实验室的Dennis Ritchie开发的。C语言最初是为UNIX操作系统而开发的。今天,它仍然被广泛用于嵌入式系统(自主、处理器/基于计算机的系统)在常见的大型操作系统(如MS Windows)下运行。C语言被认为是一种低级语言,因为它可以很容易地访问和使用已使用(微)处理器的H/W元素。

c++是贝尔实验室从1979年开始开发的,1985年正式发布。由于c++试图向C语言中添加面向对象的特性(以及其他改进),所以早期它被称为“带对象的C”,后来被重命名为c++。c++可以在嵌入式系统中使用,尽管通常主要使用它的“C特性”,因为所有那些“面向对象”的特性都会迅速增加可执行文件的大小并降低其性能。c++最初被微软用来编写基于windows的应用程序,它使用图形用户界面(GUI),不像最初的MS DOS。

c#是由理论上来说微软微软在2000年引入了c#net框架而且Visual Studio.所有现代的MS Windows应用程序都推荐用c#编写,因为它们可以非常小(在大小上),因为它们可以大量使用非常丰富的内容net框架库。仍然有许多(较旧的)应用程序是用c++编写的,并运行在最新的Windows版本上。然而,他们不能使用任何来自net框架库,所以它们需要包含(它们自己的)所有代码,这意味着可执行文件往往非常大。

彼得•加是一位退休的控制软件工程师;由内容经理马克·霍斯克编辑,控制工程CFE媒体与技术mhoske@cfemedia.com

关键词:C语言编程,嵌入式系统,事件驱动系统

考虑一下这个

你知道吗如何使用C语言为嵌入式系统编写事件驱动应用程序?

在线

其他控制工程Peter Galan的文章,他是退休的控制软件工程师。


作者简介:Peter Galan是一名(已退休)控制系统设计师,在电子、控制系统和软件设计方面拥有丰富的经验。他曾在ZTS, GE, Husky,北电,JDSU,艾默生(加拿大和美国)等多家公司工作,此前在科希塞(前捷克斯洛伐克)的技术大学工作。他拥有布拉格捷克技术大学自动化控制系统博士学位和应用控制论硕士学位。