框架说明

标准库下载

image.png

  • Libraries
    • 文件夹下是驱动库的源代码及启动文件,这个非常重要,我们要使用的固件库就在这个文件夹里面。
    • CMSIS文件夹
      • CM3
        • CoreSupport
          • core_cm3.c
            • Core_cm3.h 头文件里面实现了内核的寄存器映射,对应外设头文件 备注-stm32f10x.h
            • 实现了操作内核外设的函数。
          • core_cm3.h
            • 包含备注-stdint.h
        • DeviceSupport
          • ST
            • STM32F10X
  • Project
    • 文件夹下是用驱动库写的例子和工程模板,其中那些为每个外设写好的例程 对我们非常有用,我们在学习的时候就可以参考这里面的例程,非常全面,简直就是 穷尽了外设的所有功能。
  • Utilities
    • 包含了基于 ST 官方实验板的例程,不需要用到,略过即可。
  • stm32f10x_stdperiph_lib_um.chm
    • 库帮助文档,这个很有用,不喜欢直接看源码的可以在合理查询每个外设的函数说明,非常详细。这是一个已经编译好的 HTML 文件, 主要讲述如何使用驱动库来编写自己的应用程序

      CMSIS文件夹

      启动文件说明

      image.png

Stm32f10x.h

这个头文件实现了片上外设的所以寄存器的映射,是一个非常重要的头文件,在内核 中与之想对应的头文件是 core_cm3.h。

system_stm32f10x.c

system_stm32f10x.c 文件实现了 STM32 的时钟配置操作的是片上的 RCC 这个外设。

  • 系统在上电之后
  • 首选会执行由汇编编写的启动文件
  • 启动文件中的复位函数中调用的 SystemInit 函数就在这个文件里面定义
  • 调用完之后,系统的时钟就被初始化成 72M
  • 如果后面我们需要重新配置系统时钟,我们就可以参考这个函数重写

    STM32F10x_StdPeriph_Driver 文件夹

    路径:Libraries\STM32F10x_StdPeriph_Driver
    包含:src和inc文件夹。

    工程中必不可少的三个文件

    stm32f10x_it.c

    这个文件是专门用来编写中断服务函数的。

system_stm32f10x.c

这个文件包含了 STM32 芯片上电后初始化系统时钟、扩展外部存储器用的函数,例如我们前两章提到供启动文件调用的“SystemInit”函数,用于上电后初始化时钟,该函数的定义就存储在 system_stm32f10x.c 文件。
STM32F103 系列的芯片, 调用库的这个 SystemInit 函数后,系统时钟被初始化为 72MHz,如有需要可以修改这个文 件的内容,设置成自己所需的时钟频率,但鉴于保持库的完整性,我们在做系统时钟配置 的时候会另外重写时钟配置函数。

stm32f10x_conf.h

该头文件包含了所有外设的头文件,只需要引用该文件就可以引用所有外设了。
stm32f10x.h 文件又包含了Stm32f10x_conf.h,所以只需要引用stm32f10x.h 就足够了。
有不需要的头文件,可以直接删除对这些文件的使用。

在 ST 标准库的函数中,一般会包含输入参数检查,即上述代码中的“assert_param” 宏,当参数不符合要求时,会调用“assert_failed”函数,这个函数默认是空的。

实际开发中使用断言时,先通过定义 USE_FULL_ASSERT 宏来使能断言,然后定义 “assert_failed”函数,通常我们会让它调用 printf 函数输出错误说明。
使能断言后,程序 运行时会检查函数的输入参数,当软件经过测试,可发布时,会取消 USE_FULL_ASSERT 宏来去掉断言功能,使程序全速运行。