April 2017
DocID027328 Rev 2
1/1166
www.st.com
Introduction
用户手册
STM32F1HAL和低层驱动程序的描述
STMCubeTM是STMicroelectronics的原创计划,通过减少开发工作,时间和成本,使开发人员的生活
更轻松。STM32Cube涵盖整个STM32产品组合。STM32Cube版本1。x包括:
STM32CubeMX,一个图形软件配置工具,允许使用图形向导生成C初始化代码。
一个全面的嵌入式软件平台,每个系列(如STM32CubeF1为
Stm32cubeHAL、STM32抽象层嵌入式软件确保了STM32产品组合的最大可移植性
低层Api(LL)提供了一个快速轻量级的面向专家的层,它比HAL更接近硬件。LLApi仅适用
于一组外围设备。
一套一致的中间件组件,如RTOS、USB、TCPIP、图形
所有嵌入式软件实用程序都提供了一整套示例。
HAL驱动程序层提供了一组通用的多实例简单Api(应用程序编程接口),用于与上层(应用程序,库和
堆栈)进行交互。HAL驱动程序Api分为两类:为所有STM32系列提供通用和通用功能的通用Api和为给定
生产线或部件号提供特定和定制功能的扩展Api。HAL驱动程序包括一整套随时可用的Api,可简化用户应
用程序的实现。作为示例,通信外围设备包含用于初始化和配置外围设备、管理轮询模式下的数据传输、
处理中断或DMA以及管理通信错误的Api。HAL驱动程序是面向功能的,而不是面向IP的。例如,定时器A
pi根据IP功能分为几类:基本定时器、捕获、脉宽调制(PWM)等。.HAL驱动程序层通过检查所有函数的
输入值来实现运行时故障检测。
这种动态检查有助于增强固件的鲁棒性.运行时检测也适用于用户应用程序开发和调试。LL驱动程序根据ST
M32外设的可用功能提供硬件服务。这些服务完全反映了硬件功能,并提供了必须按照产品线参考手册中
描述的编程模型调用的原子操作。因此,LL服务不是基于独立的进程,也不需要任何额外的内存资源来保
存它们的状态、计数器或数据指针:所有操作都是通过更改相关的外围寄存器内容来执行的。与HAL相反
,LLApi不提供给那些优化访问不是关键特性的外围设备,或者那些需要大量软件配置或复杂上层堆栈(如
FSMC、USB、SDMMC)的外围设备。HAL和LL是互补的,涵盖了广泛的应用要求:
HAL提供高级和面向功能的Api,具有高可移植性。他们隐藏
MCU和外设对最终用户的复杂性.
LL在寄存器级别提供低级Api,具有更好的优化,但可移植性较低。它们需要对MCU和外设规格
有深入的了解。
HAL和LL驱动程序的源代码是在严格的ANSI-C中开发的,这使得它独立于开发工具。使用CodeSonar™静
态分析工具进行检查。它是完整的文件和MISRA-C2004兼容.
趣卡翻译(fanyi.qukaa.com)
Contents
UM1850
2/1166
DocID027328 Rev 2
Contents
1
2
2.1
2.1.1
2.1.2 User-application files ........................................................................ 27
2.2
2.2.1
2.2.2
2.2.3
2.3
2.4
2.5
2.5.1
2.5.2
2.5.3
2.6
2.7
2.7.1
2.7.2
2.8
2.9
2.10
2.11
2.11.1 Clock ................................................................................................. 47
2.11.2 GPIOs ............................................................................................... 48
2.11.3
2.11.4 PWR ................................................................................................. 50
2.11.5 EXTI .................................................................................................. 50
2.11.6 DMA .................................................................................................. 52
2.12
2.12.1
2.12.2
2.12.3
2.12.4
缩略语和定义。............................................................24
HAL驱动程序概述。..............................................................26
HAL和用户应用程序文件。........................................................26
HAL驱动程序文件。................................................................................26
HAL数据结构。.......................................................................29
外围手柄结构。...........................................................29
初始化和配置结构。..........................................30
具体的工艺结构。.............................................................31
API分类。............................................................................31
HAL驱动程序支持的设备。.................................................32
哈尔驱动程序规则..............................................................................38
HALAPI命名规则。.....................................................................38
HAL一般命名规则。...............................................................39
HAL中断处理程序和回调函数。..................................40
HAL通用Api。...........................................................................41
HAL扩展Api。.......................................................................42
HAL扩展模型概述........................................................42
HAL扩展模型案例。............................................................42
文件包含模型。........................................................................45
HAL共同资源。.................................................................46
HAL配置。...........................................................................46
HAL系统外设处理。....................................................47
皮质NVIC和SysTick定时器。.......................................................50
如何使用HAL驱动程序。.................................................................53
HAL使用模型。..........................................................................53
HAL初始化。..............................................................................54
HALIO操作过程。...............................................................56
超时和错误管理。......................................................59
趣卡翻译(fanyi.qukaa.com)
UM1850
Contents
DocID027328 Rev 2
3/1166
3
3.1
3.2
3.2.1
3.2.2
4
4.1
4.2
5
5.1
5.1.1
5.1.2
5.1.3
5.1.4
5.2
5.2.1 HAL ................................................................................................... 77
6
6.1
6.1.1 ADC_InitTypeDef .............................................................................. 79
6.1.2 ADC_ChannelConfTypeDef ............................................................. 80
6.1.3 ADC_AnalogWDGConfTypeDef ....................................................... 80
6.1.4 ADC_HandleTypeDef ....................................................................... 81
6.2
6.2.1
6.2.2
6.2.3
6.2.4
6.2.5
6.2.6
6.2.7
6.3
6.3.1 ADC .................................................................................................. 92
7
7.1
7.1.1 ADC_InjectionConfTypeDef ........................................................... 100
7.1.2 ADC_MultiModeTypeDef ................................................................ 101
低层驱动程序概述。....................................................63
低层文件。...............................................................................63
底层Api和命名规则概述。..............................65
外设初始化函数。.....................................................65
外设寄存器级配置功能。.............................69
哈尔和LL同居。...........................................................71
在独立模式下使用的低层驱动程序。....................................71
混合使用低层Api和HAL驱动程序。..............................71
HAL系统驱动程序。.......................................................................72
HAL固件驱动程序API说明。.............................................72
如何使用此驱动程序。......................................................................72
初始化和去初始化函数。......................................72
HAL控制功能。......................................................................72
功能的详细说明。.....................................................73
Hal固件驱动程序定义。..........................................................77
HALADC通用驱动器。..............................................................79
ADC固件驱动程序寄存器结构.......................................79
ADC固件驱动程序API说明。.............................................81
ADC外设功能。..................................................................81
如何使用此驱动程序。......................................................................82
初始化和去初始化函数。......................................84
IO操作功能。.....................................................................85
外围控制功能。............................................................85
外围状态和错误功能。.............................................85
功能的详细说明。.....................................................86
ADC固件驱动程序定义。.........................................................92
HALADC扩展驱动器。........................................................100
Adcex固件驱动程序寄存器结构。................................100
趣卡翻译(fanyi.qukaa.com)
Contents
UM1850
4/1166
DocID027328 Rev 2
7.2
7.2.1
7.2.2
7.2.3
7.3
7.3.1 ADCEx ............................................................................................ 106
8
8.1
8.1.1 CAN_InitTypeDef ............................................................................ 110
8.1.2 CanTxMsgTypeDef ......................................................................... 111
8.1.3 CanRxMsgTypeDef ........................................................................ 111
8.1.4 CAN_HandleTypeDef ..................................................................... 112
8.2
8.2.1
8.2.2
8.2.3
8.2.4
8.2.5
8.3
8.3.1 CAN ................................................................................................ 118
9
9.1
9.1.1 CAN_FilterConfTypeDef ................................................................. 127
10
10.1
10.1.1 CEC_InitTypeDef ............................................................................ 128
10.1.2 CEC_HandleTypeDef ..................................................................... 128
10.2
10.2.1
10.2.2
10.2.3
10.2.4
10.2.5
10.3
10.3.1 CEC ................................................................................................ 133
11
ADCEx固件驱动程序API说明。......................................102
IO操作功能。...................................................................102
外围控制功能。..........................................................102
功能的详细说明。...................................................103
ADCEx固件驱动程序定义。...................................................106
哈尔可以通用驱动程序.............................................................110
CAN固件驱动程序寄存器结构.....................................110
CAN固件驱动程序API描述............................................112
如何使用此驱动程序。....................................................................112
初始化和去初始化函数。....................................113
IO操作功能。...................................................................114
外围状态和错误功能。.............................................114
功能的详细说明。...................................................114
CAN固件驱动程序定义。.......................................................118
HAL可以扩展驱动程序。........................................................127
CANEx固件驱动程序寄存器结构.................................127
HALCec通用驱动程序。............................................................128
Cec固件驱动程序注册结构.....................................128
Cec固件驱动程序API描述............................................129
如何使用此驱动程序。....................................................................129
初始化和配置功能。.......................................129
IO操作功能。...................................................................130
外围控制功能。............................................................130
功能的详细说明。...................................................131
Cec固件驱动程序定义。.......................................................133
HALCORTEX通用驱动程序。.....................................................139
趣卡翻译(fanyi.qukaa.com)
UM1850
Contents
DocID027328 Rev 2
5/1166
11.1
11.1.1 MPU_Region_InitTypeDef .............................................................. 139
11.2
11.2.1
11.2.2
11.2.3
11.2.4
11.3
11.3.1 CORTEX ......................................................................................... 146
12
12.1
12.1.1 CRC_HandleTypeDef ..................................................................... 149
12.2
12.2.1
12.2.2
12.2.3
12.2.4
12.2.5
12.3
12.3.1 CRC ................................................................................................ 151
13
13.1
13.1.1 DAC_HandleTypeDef ..................................................................... 153
13.1.2 DAC_ChannelConfTypeDef ........................................................... 153
13.2
13.2.1
13.2.2
13.2.3
13.2.4
13.2.5
13.2.6
13.2.7
13.3
13.3.1 DAC ................................................................................................ 162
14
14.1
CORTEX固件驱动程序注册结构。.............................139
CORTEX固件驱动程序API说明。...................................140
如何使用此驱动程序。....................................................................140
初始化和去初始化函数。....................................140
外围控制功能。..........................................................141
功能的详细说明。...................................................141
CORTEX固件驱动程序定义。................................................146
HALCRC通用驱动程序。............................................................149
CRC固件驱动程序寄存器结构。....................................149
CRC固件驱动程序API说明。..........................................149
如何使用此驱动程序。....................................................................149
初始化和去初始化函数。....................................149
外围控制功能。..........................................................149
外围状态功能。.............................................................150
功能的详细说明。...................................................150
CRC固件驱动程序定义。.......................................................151
HALDAC通用驱动程序。............................................................153
DAC固件驱动程序寄存器结构.....................................153
DAC固件驱动程序API说明。...........................................153
DAC外设功能。................................................................153
如何使用此驱动程序。....................................................................155
初始化和去初始化函数。....................................156
IO操作功能。...................................................................156
外围控制功能。..........................................................157
外围状态和错误功能。...........................................157
功能的详细说明。...................................................157
DAC固件驱动程序定义。.......................................................162
HALDAC扩展驱动器。........................................................164
Dacex固件驱动程序API描述.......................................164
趣卡翻译(fanyi.qukaa.com)