如何将stm32标准库封装成lib
库文件主要作用就是驱动芯片和配置芯片的一些gpio,定时器,中断等
可以去看对应芯片的芯片手册,应该都有详细的说明,
stm32入门并不是一个特别容易的过程,需要经常的实践和学习,
希望可以帮助到你。
Keil下载与安装:
http://blog.csdn.net/ybhuangfugui/article/details/51501781
Keil新建软件工程详细过程:
http://blog.csdn.net/ybhuangfugui/article/details/51510482
Keil的使用方法 - 常用功能(一):
http://blog.csdn.net/ybhuangfugui/article/details/51638806
这个编译过程是一个相当慢的过程!完全编译大约需要一支烟的时间。每次建立工程都这么编译,是一个相当浪费时间和香烟的过程。
于是,我有了将库编译成lib文件的想法。本博文就是我将STM32F4的标准库编译成lib文件并在工程中使用的过程。
适用对象:
1、熟悉库,不想再看库里边代码
2、有稳定的库,库文件更新不频繁
3、库文件多,每次编译时间长
下面是我将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、创建完工程后,工程结构如图:
6、MDK中点击工具栏上的设置工程结构,并将库文件加入工程:
为了通用,我将库中所有的C文件都加入了工程
7、完成后MDK下的目录结构:
8、MDK下设置输出选项:
工程选项中设置输出,选择输出lib到目录E:\学习\ARM\库\stm32f4-2\lib\:
9、设置C语言预编译宏和引用目录:
因为要使用STM32F4标准库,预编译选项设置:USE_STDPERIPH_DRIVER,STM32F4XX
将刚才拷贝的inc和工程根目录文件夹加入引用:
10、设置完成后:
11、将stm32f4xx_conf.h文件拷贝到工程:
这个文件需要在标准库提供的示例工程中找:
我使用的是\STM32F4-Discovery_FW_V1.1.0\Project\Peripheral_Examples\ADC3_DMA\stm32f4xx_conf.h
这个文件引用了库文件中所有的头文件。因为不包含在库中,我将这个文件拷贝到E:\学习\ARM\库\stm32f4-2文件夹。
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)中
18、再次点击菜单上的设置工程目录结构,将刚才生成的lib库加入到工程中:
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;..文件夹就是刚才建立库时候的文件夹)
输出可执行文件:
23、添加几行简单的代码
//点亮一个LED
#include <stm32f4xx.h>
#include "stm32f4xx_conf.h"
#include "stm32f4xx_tim.h"
int main()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,ENABLE);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
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);
GPIO_SetBits(GPIOD,GPIO_Pin_12);
while(1);
}
24、工程设置完成,按F7试试。现在编译速度快起来了,点个烟的时间就编译完了
Matlab\/Simulink之STM32开发-CAN发送
在嵌入式开发的世界里,CAN(Controller Area Network)以其高效和可靠性赢得了广泛应用,由德国BOSCH公司所开发的这一通信协议如今已成为国际标准ISO 11898,主导着汽车电子系统和工业控制领域的通信架构【1】。今天,我将利用STM32平台探索CAN的发送功能,首先让我们深入了解TJA1050这款CAN收发器模块,它是...
STM32F401CB芯片有哪些特点?+参考芯片命名规则,思考STM32F401CB
它还实现了一套完整的DSP指令和一个提高应用程序安全性的内存保护单元(MPU)。设备提供一个12位ADC,一个低功耗RTC, 6个通用16位定时器,包括一个用于电机控制的PWM定时器,两个通用32位定时器。它们还具有标准和先进的通信接口。STM32F401xB\/STM32F401xC微控制器适合广泛的应用。
stm32互联型
在音频性能方面,STM32互连型系列采用高级锁相环机制,支持音频级别的I2S通信。配合USB功能,它能从外部存储设备读取音频,进行解码并输出,适合于家庭音响设备的开发,如音响底座、闹钟和家庭影院系统。此外,其32位ARM Cortex-M3 CPU和多种标准外设,如PWM定时器,为家电、楼宇自动化和工业自动化等领域的...
stm32如何读取100m并口数据
1、首先将并口数据线的TXD和RXD分别连接到STM32的USART的TX和RX引脚上,同时需要将并口数据线的DE和OE分别连接到STM32的GPIO引脚上,用于控制数据的读写。2、其次在STM32中,需要使用HAL库或标准外设库初始化USART。3、最后在初始化USART后,可以使用HAL库或标准外设库提供的函数读取USART接收缓冲区的...
stm32103温度蓝牙透传串口接收显示lcd
在温度数据采集方面,STM32F103可以通过内置的ADC模块或者外接温度传感器(如DS18B20、DHT11等)来获取环境温度。这些传感器通常通过单线或I2C接口与微控制器相连,将温度数据转换为数字信号供微控制器读取。蓝牙透传功能则可以通过在STM32F103上外接蓝牙模块(如HC-05、HC-06等)来实现。这些蓝牙模块遵循标准的...
stm32是单片机么
ST公司(意法半导体)生产的,CORTEX-M3内核的32位单片机,主要取代部分工控16位和低端32单片机,所以~~~他是 单片机
STM32F051K6T6单片机工作电压是多少?
STM32F051K6T6单片机工作电压标准为3.3V,范围2.8到3.6V
STM32标准库函数是不是所有的都能用
应该不能吧,F1\/F2\/F4他们寄存器的定义应该不一样,同一个函数在这个芯片里面操作这个寄存器,在另一个芯片可能操作的就不是了。还是F1对应F1库函数,F2对应F2库函数比较好。
编程时,选择芯片类型stm32f103c6和stm32f103c8有什么区别
stm32f103c8用:STM32F10X_HD,USE_STDPERIPH_DRIVER驱动。2、闪存存储器不同。stm32f103c6是32kFlash,而stm32f103c8是64kFlash。虽然现在的单片机可以通过外加Flash芯片扩容,但对于运行还是有一定的消耗,所以大一点的Flash,是选择芯片的一个性能标准。3、启动文件的不同。stm32f103c8启动文件用startup...
STM32比51单片机有什么优点?
读取、解码和输出音频信号。设计人员还可以在新系列微控制器上开发人机界面(HMI)功能,如播放和停止按键,以及显示器界面。这个功能使其可用于各种家庭音响设备,如音响底座系统、闹钟\/音乐播放器和家庭影院。 新系列产品整合先进的面向连接的外设,标准的STM32外设(包括一个PWM定时器)...
祁乐益保: 以前一直使用STM32的标准库,需要一步步地将代码加进去,将编译选项设置好,然后再编译整个工程.这个编译过程是一个相当慢的过程!完全编译大约需要一支烟的时间.每次建立工程都这么编译,是一个相当浪费时间和香烟的过程....
扶余县18396392221: keil做嵌入式stm32编程时,下面的lib文件 和.s文件分别是什么文件?什么功能? - ?
祁乐益保: .lib是封装库,.s是启动文件
扶余县18396392221: Psoc Create3.2怎么把整个工程做成一个库 - ?
祁乐益保: 1.解压stm32f10x_stdperiph_lib.zip 可以从ST官方网站免费下载.2.创建一个Demo文件夹 2.1 新建子文件夹User,用于存放用户源程序 2.2 新建子文件夹Project,用户KEIL工程文件 2.3 在Project下依次创建Obj和List子文件夹,存放编译过程中产...
扶余县18396392221: stm32 的工程中加有一个STM32F10xR.LIB 的文件 在keil里也打不开 然后在文件夹里双击 使用dxp打开的 - ?
祁乐益保: STM32F10xR.LIB是库文件,假如你要使用STM32F10x的库函数就必须加进去,如果不适用就不必加了
扶余县18396392221: IAR怎样建—FLASH工程 - ?
祁乐益保: 一、生成一个新项目 要使用IAR进行STM32嵌入式系统开发,必须从建立一个项目(project)开始,下面以在E:\下建立一个名为Example的项目为例介绍.1. 创建项目目录、复制公共文件 (1)在E盘下创建名为的Example文件夹,即项目根目...
扶余县18396392221: STM32 的 HAL 库好用吗 - ?
祁乐益保: 挺好用的.Hal封装的很好,在F7和F4之间移植起来也相当方便.另外就是ST这几年主推HAL,F7之后不再提供标准库,只有HAL库.但是新手的话还是建议从标准库开始学并慢慢了解寄存器,这样可以深入了解stm32的底层知识,出了问题排查也能知道从哪里入手.
扶余县18396392221: 正在学习stm32,谁可以告诉我怎么可以用函数库创建一个工程啊,详细点!谢谢了... - ?
祁乐益保: 你是问有官方固件库创建工程吧?我这里给你说说MDK的创建方法,如果你用的时IAR环境也差不多.1.解压stm32f10x_stdperiph_lib.zip 可以从ST官方网站免费下载.最新标准库版本为 3.5.02.创建一个Demo文件夹 2.1 新建子文件夹User,用于...
扶余县18396392221: 如何设计pcb原理库的封装尺寸 - ?
祁乐益保: 先把做的PCB封装命名,添加到所用的文件库里,然后把原理图中对应的元件的footprint封装设置更改成所命名的封装就行了.打开建立的那个PCB文件,左侧有browse选项,选成为libraries,下边还有一个add/remove按键,点击,弹出一个窗口,选中所建
扶余县18396392221: stm32初学者关于固件库的问题 - ?
祁乐益保: STM32F10x_FW_Archive是旧版本的STM32F10xxx固件库V2.0.3和所有相关固件包归档 (Archive for legacy STM32F10xxx Firmware Library V2.0.3 and all related Firmware packages) STM32F10x_StdPeriph_Lib_V3.5.0算是最新版的了,还是用新的吧,老的必然有bug,虽然不一定能遇到.如果需要固件库使用说明请留email
扶余县18396392221: 最近在学51单片机,自己的写函数也挺多了,怎么把类似功能的函数封装成库文件 - ?
祁乐益保: 写一个*.c的文件和一个*.h的文件.如 delay.c 内容:void delay(unsigned int i) { while(i--); } 再写.h文件 如delay.h 内容:#ifndef __delay__ #define __delay__ void delay();//声明.c里的所有函数 #end if 就可以了