| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> HAL 固件库 -> 正文阅读 |
|
[嵌入式]HAL 固件库 |
学习自记: 基于 Cortex 系列芯片采用的内核都是相同的,区别主要为核外的片上外设的差异,这些差异 CMSIS函数库 主要包括: 1.固件库目录
2.STM32Cube_FW_F1_V1.8.0\Drivers\CMSIS\文件夹下内容2.1 Include文件夹:
2.2 Device 文件夹:
文件目录:\Drivers\CMSIS\Device\ST\stm32f1xx\Source\Templates 文件内汇编语言,包含所有中断服务函数的名称,引导至SystemInit初始化函数和main函数;
文件目录:\Drivers\CMSIS\ Device\ST\stm32f1xx\Source\Templates 启动文件调用的“SystemInit”初始化系统时钟函数;
文件目录:\Drivers\CMSIS\Device\ST\stm32f1xx\Include stm32f1xx.h,根据芯片型号选择不同stm32F103xx.h; stm32F103xx.h,STM32 中所有的外设寄存器地址和结构体类型定义; 2.STM32Cube_FW_F1_V1.8.0\Drivers\STM32F1xx_HAL_Driver\文件夹下内容
|
stm32f1xx_hal.c | 该文件用于HAL初始化,包含DBGMCU,基于SysTick API的Remap和Time Delay。? |
以下依次为被包含的递进关系
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = KEY1_Pin|KEY2_Pin|HALLD_2_Pin|HALLC_2_Pin
|HALLB_2_Pin|HALLA_2_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
里面用到了
GPIO_InitTypeDef GPIO_InitStruct = {0};在stm32f1xx_hal_gpio.h文件里
??
? HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);在stm32f1xx_hal_gpio.c文件里
stm32f1xx_hal_gpio.h包含 结构体和定义:
typedef struct
{
uint32_t Pin; /*!< Specifies the GPIO pins to be configured.
This parameter can be any value of @ref GPIO_pins_define */
uint32_t Mode; /*!< Specifies the operating mode for the selected pins.
This parameter can be a value of @ref GPIO_mode_define */
uint32_t Pull; /*!< Specifies the Pull-up or Pull-Down activation for the selected pins.
This parameter can be a value of @ref GPIO_pull_define */
uint32_t Speed; /*!< Specifies the speed for the selected pins.
This parameter can be a value of @ref GPIO_speed_define */
} GPIO_InitTypeDef;
/** @defgroup GPIO_speed_define GPIO speed define
* @brief GPIO Output Maximum frequency
* @{
*/
#define GPIO_SPEED_FREQ_LOW (GPIO_CRL_MODE0_1) /*!< Low speed */
#define GPIO_SPEED_FREQ_MEDIUM (GPIO_CRL_MODE0_0) /*!< Medium speed */
#define GPIO_SPEED_FREQ_HIGH (GPIO_CRL_MODE0) /*!< High speed */
stm32f1xx_hal_gpio.c包含?初始化函数:
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
{
}
以上用到的初始化函数用到了stm32f103xe.h的结构体
/**
* @brief General Purpose I/O
*/
typedef struct
{
__IO uint32_t CRL;
__IO uint32_t CRH;
__IO uint32_t IDR;
__IO uint32_t ODR;
__IO uint32_t BSRR;
__IO uint32_t BRR;
__IO uint32_t LCKR;
} GPIO_TypeDef;
/**
* @brief Alternate Function I/O
*/
typedef struct
{
__IO uint32_t EVCR;
__IO uint32_t MAPR;
__IO uint32_t EXTICR[4];
uint32_t RESERVED0;
__IO uint32_t MAPR2;
} AFIO_TypeDef;
通过寄存器结构体和下面的GPIOx初始地址联系到一起就可以知道各个寄存器地址
上一节的初始化函数就是设置结构体内各寄存器的不同值得到不同功能。
上一节的定义define?(GPIO_CRL_MODE0_1)、?(GPIO_CRL_MODE0_0)、? (GPIO_CRL_MODE0)?也包含在stm32f103xe.h里面
由此将用户文件GPIO.C/H和外设函数stm32f1xx_hal_gpio.h/c和内核文件stm32f103xe.h联系到了一起
补充:
3.?外设文件stm32f1xx_hal.h也是由stm32f1xx.h选定
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:33:55- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |