STM32固件库和Keil里面的Lib库是啥关系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32固件库和Keil里面的Lib库是啥关系相关的知识,希望对你有一定的参考价值。

lib是标准的c库,比如strlen、sprintf都属于C库,C库实现的功能大多与芯片无关,属于通用代码。
STM32的固件库是ST公司针对STM32系列芯片编写的库,为的方便用户完成对硬件的配置。只能用于STM32.
参考技术A 巴斯是湖人队的老板,钱是他出的。库普查克是湖人的经理,是巴斯的雇员,管理球队的运作,诸如球员交易、球队选秀、选择教练等等。

STM32-固件库

CMSIS标准及库层次关系

技术图片

库目录、文件简介

技术图片
技术图片
我们写 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宏来去掉断言功能, 使程序全速运行

库文件间的关系

技术图片

使用帮助文档

以上是关于STM32固件库和Keil里面的Lib库是啥关系的主要内容,如果未能解决你的问题,请参考以下文章

怎么在keil5里面添加stm32的库,求大神给详细步骤,谢谢

STM32 寄存器库和固件库

keil里面的包

为啥在keil环境下,用重新烧写固件的Jlink在线调试下载STM32时总是连接不上,出现keil软件卡死的情况?

学习Stm32使用固件库和写寄存器有啥区别

keil软件 startup是啥文件