|
理解Blink示例程序 让我们从示例闪烁程序开始,该程序闪烁LED1(红色),连接到单片机P1.0引脚。开发板上的LED及其标记如下图所示。
要打开此示例程序,请导航到File->Example->Basics-> Blink,如下所示:
然后以下程序将出现在您的IDE中。 - #define LED RED_LED
- // the setup routine runs once when you press reset:
- void setup() {
- pinMode(LED, OUTPUT); // initialize the digital pin as an output.
- }
- // the loop routine runs over and over again forever:
- void loop() {
- digitalWrite(LED, HIGH); // turn the LED on (HIGH is the voltage level)
- delay(1000); // wait for a second
- digitalWrite(LED, LOW); // turn the LED off by making the voltage LOW
- delay(1000); // wait for a second
- }
复制代码
让我们把上面的代码逐行分解,看看它的实际意义,但在此之前,让我们了解Energia的基本编程结构。每个Energia程序都有两个强制函数,它们是void Setup()和void Loop()。
void Setup()中存在的代码将只执行一次,void Loop()中的程序将永远执行。所有的引脚声明和初始化都将在Setup()内完成,并且必须永久执行的主程序将写入void Loop()中。您可以将void Loop()视同while(1)(无限while循环)。考虑到这一点,让我们开始逐行探索以上代码。
该程序的第一行称为宏。 Energia IDE足够聪明,可以理解RED_LED、GREEN_LED、TEMP_SENSOR等词汇。这些只不过是硬件连接到的引脚的名称。这是可能实现的,因为红色LED和绿色LED在我们的电路板上是硬件连线的,因此与其连接的MCU引脚已知。为了编程的舒适性,我们使用了一个宏,它表示,在程序中,通过使用#define,我将只使用“LED”,代替使用“RED_LED”这个名称,如下面的行所示。
接下来我们介绍void setup()函数,该函数告诉MCU哪些引脚应该用作输入引脚,哪些引脚应该用作输出引脚。在程序中,我们只使用了一个LED,它是一个输出设备,所以我们声明它是一个输出引脚,如下所示: - void setup() {
- pinMode(LED, OUTPUT); // initialize the digital pin as an output.
- }
复制代码
行pinMode()用于表示我要声明输入/输出引脚,然后我们在括号中说出引脚的名称和类型。这里引脚的名称是LED和引脚类型是OUTPUT。
我们可以通过很多方式调用一个引脚。在本例子中,我们使用#define宏将其命名为LED,但也可以使用其原始名称命名它。比如在示例中,LED连接到MCU的第二个引脚,该引脚的名称是P1.0,请参考上面的引脚输出图片来查看名称。因此,除了将它称为LED,我们也可以通过以下方式调用它: - pinMode(LED, OUTPUT); //Instead of this we can also
- pinMode(2, OUTPUT); //Call by pin number
- pinMode(P1.0, OUTPUT); //Call by pin name
复制代码
接下来让我们回到void Loop()函数。在这里,我们必须编写代码来闪烁LED。为了使LED闪烁,我们必须将其打开,等待预先定义的时间,然后将其关闭并再次等待预定义的时间,并且再次循环。
要在Energia中打开或关闭引脚,我们必须使用digitalWrite()函数。在括号中,参数传递引脚的名称及其状态,如下所示: - digitalWrite(LED, HIGH); // turn the LED on (HIGH is the voltage level)
复制代码这里的引脚名称是LED,状态为高电平,同样你也可以通过使用下面的状态LOW将其关闭 - digitalWrite(LED, LOW); // turn the LED off by making the voltage LOW
复制代码如前所述,该引脚的名称可以是LED、2或P1.0。所以其他形式类似于: - digitalWrite(2, LOW); digitalWrite(P1.0, LOW);
复制代码这些形式也是可以的。
现在,我们已经学会了如何打开或关闭引脚。我们将学习如何使用delay()引入延迟。我们可以通过在括号内传递一个以毫秒为单位的值来指定延迟。 - delay(1000); // wait for a second
复制代码
所以,让我们将所有这些组合到while循环中。我们应该打开LED等待1秒,然后关闭并再次等待1秒。这个周期应该永远持续。所以我们的程序将如下所示 - void loop() {
- digitalWrite(LED, HIGH); // turn the LED on (HIGH is the voltage level)
- delay(1000); // wait for a second
- digitalWrite(LED, LOW); // turn the LED off by making the voltage LOW
- delay(1000); // wait for a second
- }
复制代码
编译和上传您的Blink程序 下一步就是将这个程序上传到我们的MSP开发板。要做到这一点,只需使用提供的迷你USB电缆将开发板连接到电脑,并等待一段时间。电路板的驱动程序应该会自动开始安装。然后打开您的设备管理器,并在COM端口选项下,您应该看到您的开发板名称,如下所示
如果您未找到发现的开发板,请转到下面的Energia驱动程序链接并安装相应的驱动程序。 ● Windows ● Mac OS X ● Linux
一旦发现你的开发板,记下它连接的COM端口。我的开发板在这里连接到端口4。然后返回到Energia IDE并选择Tools -> Port并选择相同的端口,我选择了COM4。然后再次进入Tools -> Boards并选择MSP-EXP430G2553LP。一旦完成,您应该注意到Energia IDE右下角的以下内容。
现在点击左上角的上传图标,并且您的程序应该开始上传到您的开发板。如果一切正常,您应该注意到IDE上显示的“完成上传”消息,如下所示
否则,您可能会遇到名为“无法找到与0451:f432匹配的设备”的常见错误。如果出现此错误,请参考下一步,否则请继续验证输出。
无法找到匹配0451:f432的设备[解决方案]: 这个错误在Energia IDE中很常见,但幸运的是,论坛主题上可以找到这个永久的解决方案。只需按照以下步骤操作即可。 1. 将<energia directory>\hardware\tools\DSLite\DebugServer\drivers\MSP430.dll复制到<energia directory>\hardware\tools\msp430\bin\ 2. 编辑<energia directory>\hardware\energia\msp430\boards.txt,然后使用tilib字符替换2次出现的rf2500。 3. 重新启动energia,你应该可以上传到MSP-EXP430G2。
验证我们的闪烁输出 一旦程序上传完毕,您可以注意到您的开发板上的红色LED灯闪烁,其延迟时间为1000毫秒(1秒),和Energia IDE编程的一样,如下图所示。
希望您能够理解本教程并学习了一些有用的信息,如果您遇到任何困难,请随时在本帖下面回复或论坛发布您的问题,我很乐意为您提供帮助。
代码
- #define LED RED_LED
- // the setup routine runs once when you press reset:
- void setup() {
- pinMode(LED, OUTPUT); // initialize the digital pin as an output.
- }
- // the loop routine runs over and over again forever:
- void loop() {
- digitalWrite(LED, HIGH); // turn the LED on (HIGH is the voltage level)
- delay(1000); // wait for a second
- digitalWrite(LED, LOW); // turn the LED off by making the voltage LOW
- delay(1000); // wait for a second
- }
复制代码 |