国外课栈 - 国外电子信息技术视角栈

ARM Mbed输入输出

 二维码 4
文章附图

背景知识视频教程

数字量输入和输出用于读入和写出数字值(即0或1)。 mbed使用3.3伏特的电源,其中0伏特表示0(或关闭),而3.3伏特表示1(或打开)

数字输入

将mbed FRDM-K64F开发板连接到计算机。 在在线编译器中,创建一个新项目,将其命名为“ FRDM-K64F_DigitalIn”,然后更改“ main.cpp”内容如下图所示。

“ #include“ mbed.h””行将mbed头文件包含到程序中,该程序提供了mbed的所有功能。 “ DigitalIn din(D7)”行从引脚D7创建数字输入,并将其与名为din的变量关联。 FRDM-K64F中有16个数字引脚,范围从D0,D1…到D15。在“ main()”函数中,“ while(1)”表示一个不确定的循环。这对于微控制器来说是典型的,因为它们需要一直持续工作。在循环内部,“ din.read()”从数字输入读取值。由于是数字形式,因此值为0或1。“ printf()”将结果打印出来; “%d”表示在此处打印整数类型的变量值。 “ \ n \ r”表示打印后转到新行。 “ wait(0.25)”表示等待0.25秒。默认情况下,“ printf()”会打印到计算机串行端口,这非常有用,因为您可以使用“ Tera Term”之类的终端软件查看结果(下图)。

</>

数字输入对于读取数字值非常有用,例如按钮和PIR(被动红外)传感器的输出,如下图所示。

数字输出

对于数字输出,创建另一个新项目,将其命名为“ FRDM-K64F_DigitalOut”,然后按如下所示修改“ main.cpp”文件。 在这种情况下,“ DigitalOut led(LED_BLUE)”行创建了用于RGB LED蓝色的数字输出,并将其与名为led的变量关联。 “ led =!led”行仅表示您将蓝色LED切换到相反的状态,如果是一个,则将其关闭,如果关闭,则将其打开。 您也可以将蓝色LED更改为其他任何数字引脚:D0,D1…D15。

</>

练习1

通过打开和关闭每个红色,绿色,蓝色LED,可以创建 = 8种不同的颜色。 修改上面的程序,使其依次切换8种颜色,每种颜色持续四分之一秒。

另外,您也可以连接外部LED,如下图所示,其中LED的长脚(+)连接到D7,短脚(-)连接到GND。 以下是使LED闪烁的示例代码

</>

练习2

根据以上示例,使用红色,绿色和黄色三个LED并以交通灯模式点亮它们。

您还可以通过打开和关闭数字引脚而没有任何延迟来检查最大数字输出频率,如以下示例所示,该示例将D2引脚设置为数字输出。 您可以使用示波器观察输出的变化。

</>

下图显示了使用PicoScope 2000系列数字示波器的D2引脚数字输出。

结果表明,可以将数字输出设置为666.7 Hz。

现在,您可以组合数字量输入和输出来执行一些有趣的操作。 以下示例读取数字引脚D7,取反其值(dout =!din;),并将其设置为D8引脚进行输出。 “ printf()”将两个引脚值(用制表符“\t”分隔)打印到计算机串行端口,如“ Tera Term”屏幕截图所示(下图)。 同样,“%d”表示将数字打印为整数,“\n\r”或“\r\n”表示在打印后插入新行。

</>

练习3

修改以上程序,使其从引脚D6和D7读取两个数字输入,执行逻辑与,并将其设置为D9引脚进行输出。

可以为FRDM-K64F和LPC 1768板修改以上代码。 因此,在FRDM-K64F上,它使用D7和D8数字引脚,而在LPC 1768上,它使用P11和P12引脚。

</>

除了数字输入和数字输出,您还可以将数字引脚设置为输入和输出,即双向,如下例所示。 它首先将引脚D7(或LPC1768中的P11)设置为输入,等待0.5秒,读取并打印其值,然后将其设置为输出,将其值设置为1(即3.3 V),打印出该值,然后 等待另外0.5秒。

</>

BusIn, BusOut和BusInOut

在mbed中,“ BusIn”,“ BusOut”和“ BusInOut”接口允许您创建多个DigitalIn引脚,这些引脚可以作为一个值进行读取和/或写入。 在下面的“ BusIn”示例中,它读取引脚D3,D4,D5,D6(或对于LPC1768为P12,P13,P14,P15)作为一个值。 D3是最低有效位(LSB),而D6是最高有效位(MSB)。 任何编号的mbed引脚都可以在“ BusIn”,“ BusOut”和“ BusInOut”中用作DigitalIn。

</>

“ BusOut”可以创建多个DigitalIn引脚,这些引脚可以写为一个值。 在以下示例中,RGB LED(对于LPC1768为LED1,LED2,LED3)将以从0到7的二进制值点亮。

</>

“ BusInOut”可以创建多个DigitalIn引脚,这些引脚可以作为一个值进行读写。 在以下示例中,它将创建一个包含四个引脚的总线:D3,D4,D5,D6(对于LPC1768为P12,P13,P14,P15)。 它首先将总线设置为输出模式,并向其写入值0xF,即所有引脚均设置为高电平。 它等待0.25秒,然后将总线设置为输入模式,再等待0.25秒,然后从总线读取值并将其打印到计算机串行端口。 “%X”表示以十六进制格式打印值。

</>

更多信息,参见以下链接:

模拟输入输出

脉冲宽度调制(PWM)

加速度计和磁力计

SD卡

本地文件系统

中断

阅读完整文档

文章分类: 嵌入式ARM Mbed
分享到: