嵌入式应用程序的开发可以基于微控制器厂商提供的驱动程序库,也可以针对外设寄存器直接编写驱动程序。使用厂商提供的驱动程序库进行开发,简单、快捷,兼容性好,便于移植,但代码略多;直接针对寄存器编程进行开发(建议利用头文件stm32f10x.h定义的寄存器结构和位定义),费时耗力,但能够深入理解原理,代码简洁高效。所以,建议初学者从驱动程序库入手,逐渐深入到寄存器编程。
MDK-ARM开发工具本身已经包含了STM32固件库,并可以通过软件包安装程序进行更新。STM32F1xxx_DFP.2.0.0的驱动程序主要在如下目录中:F:Keil_v5ARMPackKeilSTM32F1xx_DFP2.0.0Device,包含了开发所必须的基本代码文件以及外设驱动程序文件。
(1)基本代码文件(均是最基本的文件,均需要在工程中添加)
Device目录下的Include(头文件)和Source(源文件)子目录中包含了最基本的文件。
1、stm32f10x.h——对STM32寄存器地址、结构体类型定义的底层头文件,ST公司提供。使用STM32库时都要包含该文件。
2、system_stm32f10x.c和system_stm32f10x.h——定义核心时钟变量、设置系统时钟和总线时钟等的源文件和头文件,由ST公司提供,需要在工程中添加。STM32库V3.5版本在启动文件中调用该文件中的SystemInit()函数设置时钟,使用之前的版本需要用户在main()函数中自己调用。
3、startup_stm32f10x_hd.s——启动文件,由ST公司提供,需要在工程中添加,其中hd表示不同类型STM32微控制器。如下表所示。
(2)外设驱动程序文件(根据开发项目外设的需求,选择性使用)
Device目录下的StdPeriph_Driver子目录中包含STM32外设的驱动程序,由ST公司提供。用到的外设需要添加相应的源程序文件(MDK V5通过运行环境管理,选择需要的外设)。其中,inc和source中分别存放着驱动程序的头文件和源文件。文件名是stm32f10x_PPP,“PPP”是外设名称,如通用I/O端口(GPIO)驱动程序的头文件为stm32f10x_gpio.h,源文件为stm32f10x_gpio.c。STM32全部的标准外设名称如下表所示。
misc.c和misc.h是一个特别的文件,提供外设访问CM3内核中NVIC(可嵌套向量中断控制器)的函数。使用中断时,需要将该文件添加到工程中。
StdPeriph_Driver目录下有一个重要的文件stm32f10x_stdperiph_lib_um.chm,即STM32F10X标准外设固件库手册,它是驱动程序库使用的帮助文档,实际开发过程中需要经常参考。
StdPeriph_Driver目录下还有一个templates子目录,若要编写异常/中断处理程序,将用到其中的stm32f10x_it.h和stm32f10x_it.c。该文件定义了一些系统异常的接口,但外设的中断服务程序需要用户自己添加。其中stm32f10x_conf.h头文件的作用是用户可以修改外部晶振的参数,也可以设置该文件,来控制程序编译前是Debug还是Release模式。
关键字:STM32 驱动程序库 STM32F1xx_DFP 文件含义
引用地址:
详细介绍STM32驱动程序库STM32F1xx_DFP中的文件含义及其作用
推荐阅读最新更新时间:2024-11-07 14:43
利用STM32 ST-LINK Utility查看内核运行状态
本文围绕STM32 ST-LINK Utility讲几点主要功能及相关拓展知识: 1.STM32编程下载; 2.利用该编程工具查看内核运行状态; 3.Option Bytes选项字配置; 1STM32编程下载 STM32 ST-LINK Utility一个最重要的功能就是对STM32进行编程。支持常见的hex、bin文件,还有早期摩托罗拉定义的srec和s19格式的文件(说实话,我都不了解这两种格式的文件)。 这里主要想提示一下初学者:hex带有地址,而bin文件不带地址,下载时需要填写起始地址。 下面看两张在STM32 ST-LINK Utility中下载选择文件的图大家就明白了。 1.选择hex下载,地址不
[单片机]
STM32以太网通讯设计方案
基础常识: 网口芯片选型:W5100,W5500,CH9121,DM9000,DM9000A,ENC28J60,LAN91C111,RTL8019,LAN7820。 很多STM32内部不带以太网,带以太网功能的内部只有以太网MAC,没有PHY。因此需要外扩以太网芯片。对于不带以太网的STM32,外扩常用的芯片有SPI接口的ENC28J60和并口的DM9000芯片。对于带以太网的STM32还需要外扩一片PHY芯片。 网卡工作在OSI的最后两层,物理层(PHY)和数据链路层(MAC)。 物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。物理层的芯片称之为P
[单片机]
STM32 APB1和APB2挂接端口
SYSCLK 系统时钟,最大72MHzHCLK :AHB总线时钟,由系统时钟SYSCLK 分频得到,一般不分频,等于系统时钟经过总线桥AHB-- APB. 通过设置分频,可由HCLK得到 PCLK1与PCLK2时钟不过PCLK2时钟最高可达72MHz. PCLK1对应APB1外设最大36MHz。 PCLK2对应APB2外设最大72MHz。 APB2负责AD,I/O,高级TIM,串口1。 APB1负责DA,USB,SPI,I2C,CAN,串口2345,普通TIM RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB1Periph_USART2,ENABLE); RCC_AP
[单片机]
如何利用标准SPI的方式去读写W25Q128呢
1.W25Q128介绍 当我们有比较多的数据需要掉电存储时,上一篇文章所介绍的 24C02 (256个字节EEPROM)就不够了。此时我们会用到另外一种类型的存储器,即 Flash。比如具有 SPI 接口的 W25Q128。这颗小芯片虽然也只有简单的 8 个引脚,但存储容量却达到了128M-bit,也就是 16M 字节,同时它的读写速度可以达到 66MB/S。但是由于 STM32F030 不支持 Quad/Dual SPI,只能以标准 SPI 方式读写,所以速度会低一些。以下是 W25Q128 的主要特点: a.133MHz SPI Clock。 b.10万次擦写寿命,20年数据保持时间。 c.每颗具有64-Bit唯一序列号
[单片机]
STM32利用DAC+DMA+TIMER 输出正弦波
使用的是STM32F407的板子,程序参考的是STM32F4xx固件库的DAC_SignalsGeneration文件夹下的程序。官方例程分别使用了DAC的禁止生成波(DAC_WaveGeneration_None)的Escalator Wave梯形波,Sine Wave正弦波和stm32内置的的Noise Wave(DAC_WaveGeneration_Noise),Triangle Wave(DAC_WaveGeneration_Triangle)。 下面主要说一下输出正弦波的配置。 正弦电压的数组 const uint16_t aSine12bit = { 2047, 2447, 2831, 318
[单片机]
再造STM32---第三部分:什么是寄存器?
本系列是基于STM32F429野火库进行学习。 3.1什么是寄存器? 我们经常说寄存器,那么什么是寄存器?这是我们本章需要讲解的内容,在学习的过程中,大家带着这个疑问好好思考下,到最后看看大家能否用一句话给寄存器下一个定义。 3.2 STM32 长啥样? 我们开发板中使用的芯片是 176pin 的 STM32F429IGT6,具体见图 3-1。这个就是我们接下来要学习的 STM32,它讲带领我们进入嵌入式的殿堂。芯片正面是丝印, ARM 应该是表示该芯片使用的是 ARM 的内核, STM32F429IGT6是芯片型号,后面的字应该是跟生产批次相关,最下面的是 ST 的 LOGO。芯片四周是引脚,左下角的小
[单片机]
STM32四种库对比 STM32标准库和HAL库有什么不同?
STM32的四种库:STM32Snippets、Standard Peripheral Library、STM32Cube LL、STM32Cube HAL。 1STM32Snippets什么是STM32Snippets?STM32Snippets可翻译为“代码片段”、“裁剪”,其实他就是我们常说的“寄存器”开发STM32的底层驱动代码。比如配置ADC引脚的代码片段: __INLINE void ConfigureGPIOforADC(void) { /* (1) Enable the peripheral clock of GPIOA, GPIOB and GPIOC */ /* (2) Select a
[单片机]