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

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

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


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

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

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

Arduino内核文件分析(以Stm32duino为例)_第1张图片

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

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

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

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

 

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

架构配置

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

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

Arduino内核文件分析(以Stm32duino为例)_第2张图片

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

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

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

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

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

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

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

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

 Arduino内核文件分析(以Stm32duino为例)_第3张图片

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

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

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

Arduino内核文件分析(以Stm32duino为例)_第4张图片

 

        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] ;这个结构体数组,用于芯片的引脚对应的资源映射

Arduino内核文件分析(以Stm32duino为例)_第5张图片

 

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

Arduino内核文件分析(以Stm32duino为例)_第6张图片

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

Arduino内核文件分析(以Stm32duino为例)_第7张图片

 

 

 

 

你可能感兴趣的:(arduino,stm32)