DE | EN | CN

ESE模块4 GPIO 通用输入输出

本节将学习GPIO 简单的输入和输出。GPIO(也称为通用输入/输出)是控制器中最简单也是最重要的配置。但即便如此,IO也有各种各样的类型和配置选项,有输入、输出、上拉、下拉、推挽等。GPIO用来做开关控制是最常见的应用场景。我们通过下图简要讨论按钮输入的细节。只要不按下按钮,按钮就相当于天线,并与控制器连接。再重复一下,如果未按下该按钮,其连接到控制器的部分充当天线,天线接收干扰信号并将发送到控制器。这些干扰可以通过上拉电阻或下拉电阻来防止。

开放式CMOS输入是各种电子干扰的敏感接收器。实际上,输入提供了随机信号。解决这个问题的方法是使用所谓的上拉或下拉电阻。这些电阻将导线拉向一个定义的电位,并消除了干扰。以前,这些上拉电阻是明确地集成在电路中的(可以说是通过焊接铁活性化)。现代控制器配有内部上拉和下拉电阻。这些电阻只需在需要时通过软件简单地激活即可。

任务

要开发一个微控制器应用程序,当按下按钮时,LED会点亮。

任务是:

当用户按下按钮时,LED应该点亮。否则,LED处于关闭状态。请开发一种解决方案,功能按钮连接Pin A0,LED连接Pin B0。

准备

如果上个类图没有关闭,请在图的上下文菜单(鼠标右键)中选择菜单项“向上”。 如果该项目已关闭,请重新打开SiSy UML项目。执行以下准备工作:

  • 创建一个新的类图
  • 目标语言ARM C ++
  • 目标平台STM32F042 mySTM32板灯HAL
  • 下载PEC应用程序(XMC,STM32,AVR)的图表模板应用程序基本结构
  • 分配STM32F0的驱动程序包
  • (可选)模板stm32F042_48Mhz

解决路径

任务是当按下功能键时,LED就会点亮。 如果我们遵循面向对象的概念,则功能键是系统的另一个组件。 如前所述,我们将UML中的系统组件映射为类。 这里再次是与此任务相关的系统组件:

按钮和LED必须连接到控制器。 我们已经知道聚合和此建模的关系。这里再以图片形式直观描述各个抽象步骤:

现实世界→想象的模型→UML模型

我们已经知道用于输出的PecPinOutput库块。对于简单的输入按钮,我们可以使用库中的PecPinInput。我们看一下这个库组件,就会发现它适合该任务。

此外我们必须要想到使用PullUp来抑制此引脚,我们使用pinPullUp库块。

注意:抽象=现实世界→想象模型(语言)→UML模型=软件构造图

实现

该实现应包括以上概述中描述的元素。 此外引脚B0连接到IndicatorLED,引脚A0连接到FunctionKey,分别都表示实现关系。可以通过资源管理器找到相应的PEC块。 建议使用PecPinOutputPecPinInput上的小问号。 得到以下设计图帮助实现设计:

我们将行为逻辑重新安装到控制器类的onWork()操作中。 请在源文本中编写所需的注释,有助于理清思路。

Controller::onWork():void

// continuous event from the Mainloop
// WENN Funktionstaste gedrückt DANN  如果按下功能键
 
 
//      AnzeigeLED an  指示灯点亮
// SONST  则
//      AnzeigeLED aus  指示灯熄灭

然后,我们可以输入相应的C ++代码。

Controller::onWork():void

// continuous event from the Mainloop
// WENN Funktionstaste gedrückt DANN  如果按下功能键
if (functionKey.getState()==0) 
{
	indicatorLED.on(); // AnzeigeLED an  指示灯点亮
}
else   // SONST  则
{
	indicatorLED.off(); // AnzeigeLED aus 指示灯熄灭
}

现在我们在此基础上延伸一下任务,只有按住按钮时LED才闪烁。

Controller::onWork():void

// continuous event from the Mainloop
if (functionKey.getState()==0) 
{
	indicatorLED.toggle();
	waitMs(200);
}
else 
{
	indicatorLED.off();
}

测试

翻译程序。将可执行程序传送到控制器的程序存储器中。

  • 1. 创建(编译和链接)
  • 2. 烧录
  • 3. 将针脚B0连接到红色LED上,并将按钮连接到针脚A0

总结

  • 1. 创建并打开类图
  • 2. 选择用于PEC应用程序的模板,加载STM32F0并插入驱动程序包
  • 3. 在导航器/资源管理器中找到PEC块
  • 4. 将所需的库元素拖到图中
  • 5. 将类相互连接(聚合,实现)
  • 6. 在操作中创建必要的源代码
  • 7. 在类图中创建并刻录ARM应用程序

练习

扩展应用程序使用引脚A1连接到另一个按钮,任务如下:

  • 如果按下功能键,LED应点亮
  • 如果按了附加键,LED应闪烁
  • 如果同时按下两个按钮,则附加按钮具有优先权
  • 如果未按任何键,则显示LED熄灭

返回目录