美文网首页
arduino初探

arduino初探

作者: ww4u | 来源:发表于2020-12-25 17:00 被阅读0次
    • 前后台系统
      • 初始化
      • 无限循环
    void setup()
    {}
    void loop()
    {}
    
    • 这相当于只开放了两个业务接口,那么main在哪里呢?
    • \hardware\arduino\avr\cores\arduino\main.cpp
    int main(void)
    {
        init();
    
        initVariant();
    
    #if defined(USBCON)
        USBDevice.attach();
    #endif
        
        setup();
        
        for (;;) {
            loop();
            if (serialEventRun) serialEventRun();
        }
            
        return 0;
    }
    
    • 透过这个过程看到还有init()以及initVariant()。init()可能是平台相关的初始化过程,已经编译好了在平台库中,initVariant()可以进行重写。
    • 另外,这是C++风格的
    • 系统的一些变量,常量,预定义对象等在这个目录下也可以找到一些,比如


      serialX
    HardwareSerial Serial(&UBRRH, &UBRRL, &UCSRA, &UCSRB, &UCSRC, &UDR);
    HardwareSerial Serial1(&UBRR1H, &UBRR1L, &UCSR1A, &UCSR1B, &UCSR1C, &UDR1);
    
    #if defined(UBRRH) || defined(UBRR0H)
      extern HardwareSerial Serial;
      #define HAVE_HWSERIAL0
    #endif
    #if defined(UBRR1H)
      extern HardwareSerial Serial1;
      #define HAVE_HWSERIAL1
    #endif
    #if defined(UBRR2H)
      extern HardwareSerial Serial2;
      #define HAVE_HWSERIAL2
    #endif
    #if defined(UBRR3H)
      extern HardwareSerial Serial3;
      #define HAVE_HWSERIAL3
    #endif
    
    • 还有重要的一点,嵌入式系统需要一个链接文件来定义内存等
      \hardware\tools\avr\lib\gcc\avr\7.3.0\device-specs\specs-atmega2560可能是一些链接文件
    *avrlibc_startfile:
        crtatmega2560.o%s
    
    *avrlibc_devicelib:
        %{!nodevicelib:-latmega2560}
    
    *cc1_n_flash:
        %{!mn-flash=*:-mn-flash=4}
    
    *cc1_rmw:
        %{mrmw}
    
    *cc1_errata_skip:
        %{!mskip-bug: -mno-skip-bug}
    
    *cc1_absdata:
        %{mabsdata}
    
    *cc1_absdata:
        %{mabsdata}
    
    *asm_arch:
        -mmcu=avr6
    
    *asm_relax:
        %{mrelax:--mlink-relax} 
    
    *asm_rmw:
        %{mrmw}
    
    *asm_errata_skip:
        %{!mskip-bug: -mno-skip-bug}
    
    *link_pmem_wrap:
    
    
    *link_relax:
        %{mrelax:--relax} 
    
    *link_arch:
        %{mmcu=*:-m%*} 
    
    *link_data_start:
        %{!Tdata:-Tdata 0x800200}
    
    *link_text_start:
    
    
    *self_spec:
        %{!mmcu=avr*: %<mmcu=* -mmcu=avr6} %<mshort-calls %<msp8
    
    • “导出已编译的二进制文件”编译链接后的文件在工程目录下可以找到格式是HEX

    相关文章

      网友评论

          本文标题:arduino初探

          本文链接:https://www.haomeiwen.com/subject/tdabnktx.html