STM32-固件库

CMSIS标准及库层次关系

5d305354f085e65214

库目录、文件简介

5d30535d2589455436
5d30536c6f01668157
我们写 STM32F4 的工程,必须用到其中的四个文件: core_cm4.h、 core_cmFunc.h、corecmInstr.h、 core_cmSimd.h,其它的文件是属于其它内核的,还有几个文件是 DSP 函数
库使用的头文件。
core_cm4.c 文件有一些与编译器相关条件编译语句,用于屏蔽不同编译器的差异。里面包含了一些跟编译器相关的信息,如: “__CC_ARM ” (本书采用的 RVMDK、 KEIL),“GNUC ” (GNU 编译器)、“ICC Compiler” (IAR 编译器)。 这些不同的编译器对于C 嵌入汇编或内联函数关键字的语法不一样,这段代码统一使用“__ASM、 __INLINE”宏来定义,而在不同的编译器下,宏自动更改到相应的值,实现了差异屏蔽。在 core_cm4.c 文件中包含了stdint.h头文件,ANSI C 文件,是独立于处理器之外的,提供一些类型定义。这些新类型定义屏蔽了在不同芯片平台时,出现的诸如 int 的大小是 16 位,还是 32 位的差异。所以在我们以后的程序中,都将使用新类型如 uint8_t 、 uint16_t 等。
在 ST 标准库的函数中,一般会包含输入参数检查,即上述代码中的“assert_param”宏,当参数不符合要求时,会调用“assert_failed”函数,这个函数默认是空的。实际开发中使用断言时,先通过定义 USE_FULL_ASSERT 宏来使能断言,然后定义“assert_failed”函数,通常我们会让它调用 printf 函数输出错误说明。 使能断言后,程序运行时会检查函数的输入参数,当软件经过测试,可发布时, 会取消 USE_FULL_ASSERT宏来去掉断言功能, 使程序全速运行

库文件间的关系

5d3053799709168776

使用帮助文档

参考引用:

  1. 野火---《零死角玩转STM32-F429挑战者》
  2. 《STM32F4xx中文参考手册》
  3. 《Cortex-M4内核编程手册》
posted @ 2019-07-18 19:11  LOXO  阅读(852)  评论(1编辑  收藏  举报