Arduino之程序结构(setup与loop函数) 您所在的位置:网站首页 loo什么意思中文 Arduino之程序结构(setup与loop函数)

Arduino之程序结构(setup与loop函数)

2023-10-20 10:59| 来源: 网络整理| 查看: 265

一、blink源程序分析

–》源程序如下(注释已翻译):

// setup函数只运行一次 void setup() { // 初始化LED_BUILTIN引脚为输出引脚 pinMode(LED_BUILTIN, OUTPUT); } // loop函数会一直循环运行 void loop() { digitalWrite(LED_BUILTIN, HIGH); // 点亮LED(配置引脚输出高电平) delay(1000); // 等待1s digitalWrite(LED_BUILTIN, LOW); // 熄灭LED(配置引脚输出低电平) delay(1000); // 等待1s }

这是先说一下电平的概念:

高电平就相当于高电位或高电势;低电平就相当于低电位或地电势;两点之间存在电平差就相当于存在电位差或者电势差,从而存在电压。

程序首先把LED_BUILTIN引脚配置为输出引脚,意思是板子可以控制该引脚输出为高电平或者低电平,LED引脚一端接在板子控制端口,而另外一端是接在参考地上,可以认为参考地是零电平或者低电平。当loop函数开始执行的时候,把控制端引脚输出为高电平,而参考地是低电平,所以LED被点亮,同理把控制端引脚输出为低电平,两点之间没有电位差,因此LED熄灭。

二、程序结构 setup()函数

Arduino板子通电或复位后,即会开始执行setup() 函数中的程序,该部分只会执行一次。通常我们会在setup() 函数中完成Arduino的初始化设置,如配置I/O口状态,初始化串口等操作。

–》示例程序:

// 给13号引脚连接的设备设置一个别名“led” int led = 13; // 在板子启动或者复位重启后, setup部分的程序只会运行一次 void setup(){ // 将“led”引脚设置为输出状态 pinMode(led, OUTPUT); } loop()函数

在setup() 函数中的程序执行完后,Arduino会接着执行loop() 函数中的程序。而loop()函数是一个死循环,其中的程序会不断的重复运行。通常我们会在loop() 函数中完成程序的主要功能,如驱动各种模块,采集数据等。

–》示例程序:

// setup部分程序运行完后,loop部分的程序会不断重复运行 void loop() { digitalWrite(led, HIGH); // 点亮LED delay(1000); // 等待一秒钟 digitalWrite(led, LOW); // 通过将引脚电平拉低,关闭LED delay(1000); // 等待一秒钟 } *三、Arduino程序main函数结构解析

这里作为拓展,以下分析需要C/C++基础!

在进行Arduino开发时,没有像传统C/C++程序使用入口函数main。实际上main函数存在于Arduino核心库中,且仍然是程序的入口。

在Arduino核心库中可见main.cpp文件,其内容如下:

#include // Declared weak in Arduino.h to allow user redefinitions. int atexit(void (* /*func*/ )()) { return 0; } // Weak empty variant initialization function. // May be redefined by variant files. void initVariant() __attribute__((weak)); void initVariant() { } void setupUSB() __attribute__((weak)); void setupUSB() { } int main(void) { init(); initVariant(); #if defined(USBCON) USBDevice.attach(); #endif setup(); for (;;) { loop(); if (serialEventRun) serialEventRun(); } return 0; }

通过以上程序可见,Arduino程序中编写的setup和loop函数,都在main函数中调用了。 loop的循环执行,是通过for循环实现的,且每次loop结束后,都会进行串口事件判断,也正是因为这种设计,串口事件不能实时响应。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有