Arduino内核文件分析(以Stm32duino为例)

       这篇博客主要是分析stm32duino的底层文件结构,来分析stm32duino 的实现原理和它的基本框架。

       在后面然后介绍把环境移植到keil上,在keil编译和使用arduino的库


           首先下载stm32duino的源码:https://github.com/rogerclarkmelbourne/Arduino_STM32/archive/master.zip

使用的工具是Source Insight ,新建工程,添加源码路径之后可以进行分析。

打开工程源码的文件夹后,有四个文件夹,我们主要分析STMF32F1这个文件夹

在drive文件夹下主要为stm32USB设备的驱动,具体内容没有进行详细了解。

tools文件夹下内容为不同系统环境下的下载工具等。

STM32F1文件夹下是stm32duino关于stm32f1系列的工程源码,下面主要分析这个文件夹的内容。

STM32F4文件夹下是stm32duino关于stm32f4系列的工程源码,其结构与STM32F1的相似。

 

打开stm32F1文件夹,可以看到四个文件夹和两个txt,在Arduino IDE 1.5第三方硬件规范中有对两个文件的说明:

架构配置

必须通过一组配置文件配置每个体系结构:

  • platform.txt包含所用CPU架构的定义(编译器,构建过程参数,用于上载的工具等)
  • boards.txt包含电路板的定义(电路板名称,构建和上传草图的参数等

Core文件夹为用户可直接调用的接口函数及其实现源码。

library文件夹为提供的基础库,在里面有一些外接硬件的驱动和示例代码。

system文件夹为编译器所需要的的一些文件,其中包括两个文件夹:ibmaple和support.

       libmaple文件夹为stm32底层外设的相关头文件。

       support文件夹为编译器使用的相关文件:链接脚本(*.ld),make文件,和调试文件(*.gdb)

variants:文件夹为不同芯片对应的启动文件芯片初始化配置。

 在generic文件夹中又三个文件夹

        board文件夹:其中只有一个文件,board.h   内容是偏上外设资源数目和对应的引脚

 

      ld文件夹下为编译器链接脚本,具体内容没有研究

      wirish文件夹下为芯片的启动文件和芯片初始化配置:

               boards.cpp为芯片初始化配置,其内容包括时钟初始化,flash初始化,nvic初始化等。

 

        boards_setup.cpp是与芯片相关的初始化的一些文件。

         start.s,start_c.c  syscalls.c这几个文件具体作用不太清楚,在后面向keil移植的过程中会报错。

接下来是几个在generic中的几个文件:board.cpp、pins_arduino.h、variant.h

        board.cpp主要定义了extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS] ;这个结构体数组,用于芯片的引脚对应的资源映射

 

pins_arduino.h为空文件,只有一个头文件包含

variant.h为一些宏定义函数,用于对GPIO的IO组和IO引脚的获取。

 

 

 

 

  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值