查看: 6043|回复: 6

Arduino程序main函数结构解析

[复制链接]
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2017-7-27 23:52 | 显示全部楼层 |阅读模式
    在进行Arduino开发时,没有像传统C/C++程序使用入口函数main。实际上main函数存在于Arduino核心库中,且仍然是程序的入口。在Arduino核心库中可见main.cpp文件,其内容如下:

    kittenblock中小学创客名师推荐的图形化编程软件

    #include <Arduino.h>
    
    // 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结束后,都会进行串口事件判断,也正是因为这种设计,串口事件不能实时响应。


    如果以上内容对你有帮助,你可以通过打赏支持作者

    该用户从未签到

    发表于 2017-8-27 11:23 | 显示全部楼层
    399/1回复惨案
  • TA的每日心情
    开心
    2018-9-6 14:50
  • 签到天数: 25 天

    [LV.4]偶尔看看III

    发表于 2017-11-21 11:05 | 显示全部楼层
    谢谢,给新人解惑了
  • TA的每日心情
    郁闷
    2019-4-17 23:24
  • 签到天数: 101 天

    [LV.6]常住居民II

    发表于 2018-4-2 22:11 | 显示全部楼层
    谢谢,给新人解惑了
  • TA的每日心情
    开心
    2019-4-12 07:21
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2019-4-13 22:29 | 显示全部楼层
    那setup函数和loop函数之外的语句什么时候执行呀,比兔setup之前的变量定义什么的

    点评

    之外语句不会执行,变量定义是变量定义,相当于全局变量  详情 回复 发表于 2019-4-16 00:39
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

     楼主| 发表于 2019-4-16 00:39 | 显示全部楼层
    Vistar 发表于 2019-4-13 22:29
    那setup函数和loop函数之外的语句什么时候执行呀,比兔setup之前的变量定义什么的 ...

    之外语句不会执行,变量定义是变量定义,相当于全局变量
    如果以上内容对你有帮助,你可以通过打赏支持作者
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    Visual Micro 许可状态Pathed补丁 1.0.0.250版本
    Visual Micro 许可状态Pat
    这个补丁根据网络上的这个教程: 做的 本文只是爆破了Visual Micro的许可状态,如果
    大神看过来!!!有做过乐联网的吗???
    大神看过来!!!有做过乐
    想上传测得传感器数据,结果一直传不到乐联网上,工具显示失败,出现了这样的错误,请
    初次尝试ESP8266+Onenet实现数据上传和读取
    初次尝试ESP8266+Onenet实
    1. 引言 最近需要做和物联网相关的小项目,需要将数据传到Onenet,并能够回传One
    学生智能打卡系统(接入blinker)
    学生智能打卡系统(接入bl
    【项目名称】学生智能打卡系统(接入blinker) 一.感谢各位大佬 首先感谢社区的管理员
    Arduino 蓝牙机械臂
    Arduino 蓝牙机械臂
    蓝牙机械臂(这次没用BLINKER,改
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表