STMCU小助手
发布时间:2022-1-28 17:08
|
以前一直使用STM32的标准库,需要一步步地将代码加进去,将编译选项设置好,然后再编译整个工程。 这个编译过程是一个相当慢的过程!完全编译大约需要一支烟的时间。每次建立工程都这么编译,是一个相当浪费时间和香烟的过程。 于是,我有了将库编译成lib文件的想法。本博文就是我将STM32F4的标准库编译成lib文件并在工程中使用的过程。 适用对象:
下面是我将STM32F4的标准库编译成lib并在工程中使用的过程: 使用工具链:MDK4.70A。其实各个工具链几乎是一样的 1、建立创建lib的工程 2、将库文件拷贝到工程目录: 将库里边目录\STM32F4xx_StdPeriph_lib v1.0.2\STM32F4xx_StdPeriph_Driver下的inc和src两个文件夹拷贝到预创建工程的目录。 我计划在目录E:\学习\ARM\库\stm32f4-2中创建库。于是我将两个文件夹拷贝到了这里。 3、选择芯片:STM32F407VG
4、选择NO。因为这不是可运行的程序,这里不需要加入启动文件。
5、创建完工程后,工程结构如图:
为了通用,我将库中所有的C文件都加入了工程 : I" U8 @4 j7 E4 T1 V9 N
7、完成后MDK下的目录结构: , `5 c2 z' O) { c4 a3 V
G9 v, ]5 E9 X& r' k* \ 8、MDK下设置输出选项: 工程选项中设置输出,选择输出lib到目录E:\学习\ARM\库\stm32f4-2\lib\:
: l" Q# x1 d" S3 X9 c 9、设置C语言预编译宏和引用目录: 因为要使用STM32F4标准库,预编译选项设置:USE_STDPERIPH_DRIVER,STM32F4XX 将刚才拷贝的inc和工程根目录文件夹加入引用: 5 [0 |- f9 {2 E1 [3 p' I
10、设置完成后:
11、将stm32f4xx_conf.h文件拷贝到工程:
12、到此,工程设置完成。按F7编译,经过一支烟的时间即可生成库的lib。 生成完成后,MDK工程中:
13、工程输出目录:
文件stm32f4lib.lib就是我们生成的lib文件 14、将库文件加入该工程 15、新建工程,我命名成stm32f4use,处理器依旧选择STM32F407VG。
16、这是选择yes,因为这是一个可执行的工程:
17、将标准库示例工程的\STM32F4-Discovery_FW_V1.1.0\Project\Peripheral_Examples\ADC3_DMA中的system_stm32f4xx.c拷贝到工程目录(E:\学习\ARM\库\stm32f4-2)中
19、将示例工程\STM32F4-Discovery_FW_V1.1.0\Project\Peripheral_Examples\ADC3_DMA中的system_stm32f4xx.c拷贝到工程目录。 20、将main.c和 system_stm32f4xx.c 加入到工程
21、完成后的目录结构:
22、加入编译选项 与上边生成lib相似,预编译选项设置:USE_STDPERIPH_DRIVER,STM32F4XX 引用目录:.\inc;..\stm32f4-2 (这里的.\inc;..文件夹就是刚才建立库时候的文件夹) 输出可执行文件: 4 ~* U$ V8 Y* L* Z) ^! B* W0 } 23、添加几行简单的代码 //点亮一个LED #include <stm32f4xx.h>' C- |8 D% o% H- Q #include "stm32f4xx_conf.h"/ M+ C+ s1 ^& i3 p3 Y; s/ H #include "stm32f4xx_tim.h" int main()% s% p+ e2 L/ {& L3 r) c, J { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,ENABLE); + K$ O& S1 V" ?2 h; r0 x( x GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;% k! a( S/ q& x, M9 f, w8 d GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOD,&GPIO_InitStructure);+ |7 k, H$ d% O% X! m- ^( r GPIO_SetBits(GPIOD,GPIO_Pin_12); while(1);" C9 l8 D- @! l& H! T } 24、工程设置完成,按F7试试。 1 M `; N% ~! E- F: A) d |
实战经验 | 基于STM32G0B1的全桥移相+同步整流PWM解决方案
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
【福利三:逢7发帖赢大礼】8、基于STM32G070板子的Ymodem串口协议IAP Bootloader开发
【福利三:逢7发帖赢大礼】7、基于STM32G070板子TF卡的FATFS移植
【福利三:逢7发帖赢大礼】6、基于STM32G070板子spiflash的FATFS移植
【福利三:逢7发帖赢大礼】5、基于STM32G070板子IRDA红外遥控接收解码
【福利三:逢7发帖赢大礼】4、基于STM32G070板子SPI flash 移植SFUD库
【福利三:逢7发帖赢大礼】基于STM32G070板子的uart shell移植设计
【福利三:逢7发帖赢大礼】3、基于STM32G070板子的YModem串口协议通信
【福利三:逢7发帖赢大礼】2、基于STM32G070板子的OLED移植U8G2库
微信公众号
手机版