HAL库学习笔记
文章平均质量分 93
基于STM32 HAL库学习嵌入式,用于整理跟随慕课漆强教授的基于STM32CubeMX和HAL驱动库的嵌入式系统设计课程的笔记
Q-Stark
这个作者很懒,什么都没留下…
展开
-
HAL库学习笔记-14 ADC和DAC
目录前言一、ADC与DAC的原理二、STM32F4ADC简介1.源范围2.采集通道3.转换顺序4.触发方式2.读入数据总结前言五一前出差了,然后又逢假期,荒废了半月,一直没有状态,学不进去,今天把STM32常用的ADC和DAC总结一下,主要是ADC,因为与外界交互最多的就是采集模拟电压与电流啦,再输出整定后的控制量。一、ADC与DAC的原理ADC原理很简单就是模拟量的采样,然后编码输出为数字量,反过来DAC就是将数字量进行解码拟合为模拟量。二、STM32F4ADC简介如图所示是单个ADC的原创 2021-05-11 14:59:03 · 2275 阅读 · 0 评论 -
HAL库学习笔记-13 I2C和SPI的应用
目录前言一、如何编程使用?二、使用步骤1.I2C通讯协议采集传感器数据BH1750传感器简介CubeMX配置引脚代码编写总结2.SPI通讯协议LCD总结前言前边的两篇笔记将STM32总线上与外部的通信协议I2C和SPI,本笔记着重讲解如何使用。一、如何编程使用?我们使用这些总线上的通信协议和外部模块进行通信时,STM32外设的配置要和外部模块的一致,这样才能通讯同步,得到正确的数据。而这些外部模块一般厂商都会提供手册和驱动,我们只需要移植过来,将引脚和基本的通讯配置好,详细的收发函数大部分都已由原创 2021-04-21 16:06:19 · 2218 阅读 · 6 评论 -
HAL库学习笔记-12 SPI
目录前言SPI物理层SPI协议层1.基本通讯过程2. 通讯的起始和停止信号3. 数据有效性4. CPOL/CPHA 及通讯模式二、STM32的SPI特性及架构STM32 SPI架构解析1.逻辑引脚2.时钟控制逻辑3.数据控制逻辑4.整体控制逻辑STM32 SPI外设通讯过程三、STM32 HAL库中的SPI1.SPI初始化结构体2.接口函数前言前边的几篇笔记将STM32HAL片内主要外设的用法总结了一下,然而我们需要很多外围电路进行拓展,比如我们需要外接存储器进行文件或数据存储,需要LCD屏进行交互等原创 2021-04-20 15:15:16 · 6282 阅读 · 4 评论 -
HAL库学习笔记-11 I2C
目录前言一、I2C协议简介I2C物理层I2C协议层1.基本读写过程2. 通讯的起始和停止信号3. 数据有效性4. 地址及数据方向5. 应答信号二、STM32的I2C特性及架构STM32 I2C架构解析1.逻辑引脚2.时钟控制逻辑3.数据控制逻辑4.整体控制逻辑STM32 I2C外设通讯过程1.主发送器2.主接收器二、STM32 HAL库中的I2C1.I2C初始化结构体总结前言前边的几篇笔记将STM32HAL片内主要外设的用法总结了一下,然而我们需要很多外围电路进行拓展,比如我们需要外接存储器进行文件或原创 2021-04-17 13:57:40 · 4184 阅读 · 0 评论 -
HAL库学习笔记- 9 DMA
目录DMA简介DMA数据传输的四个要素STM32F4xx系列的DMA特点一、STM32的DMA框图1.外设通道选择2.仲裁器3.FIFO4.端口存储器端口、外设端口编程端口二、DMA数据配置1.源、目标和传输模式2.指针递增3.流控制器4.循环模式5.传输类型6.直接模式7.双缓冲模式8.DMA中断三、HAL库中的DMA1.DMA_InitTypeDef初始化结构体2.DMA_HandleTypeDef 初始化结构体3.DMA常用接口函数示例1.空闲中断时序图2.设计思路3.使用CubeMX配置4.编写用户原创 2021-04-12 15:42:33 · 4216 阅读 · 0 评论 -
HAL库学习笔记-10 HAL库外设驱动框架概述
目录HAL库外设设计思想HAL库和Cube MX相结合一、对外设的封装——句柄结构体二、外设初始化初始化结构体初始化的逻辑三、外设使用逻辑通用接口函数初始化函数I/O操作函数控制函数状态参数扩展接口函数总结HAL库外设设计思想HAL库借鉴面向对象的设计思想,将外设驱动封装为对象。采用此种开发方式有以下特点:屏蔽底层硬件:只需了解相关接口函数的功能和参数要求即可提高开发效率:开发难度较小,开发周期较短,后期的维护升级、以及硬件平台的移植等工作量小程序执行效率:由于考虑了程序的稳健性、扩充性和原创 2021-04-12 15:40:35 · 2333 阅读 · 0 评论 -
HAL库学习笔记- 8 串口通信之使用
目录前言一、USART初始化串口的数据类型定义1.初始化结构体串口初始化过程二、轮询方式串口通信1.接口函数2.示例-固定长度收发1)使用MX完成串口外设初始化配置2)使用MDK完成用户代码编写3)使用串口助手调试3.示例-串口重定向设计思路函数实现三、中断方式串口通信串口中断处理过程1.接口函数2.示例-固定长度收发1)使用MX完成串口外设初始化配置2)使用MDK完成用户代码编写3.示例-实现简单的帧格式通信(可变长数据)Modbus消息帧格式自定义的帧格式设定代码实现调试前言上一篇文章主要是讲了一原创 2021-04-07 15:40:41 · 2105 阅读 · 1 评论 -
HAL库学习笔记- 8 串口通信之概念
目录一、串口通信概述通信传输方向数据传输方式并行通信串行通信同步串行通信异步串行通信1.字符格式2.通信速率3.示例4.数据接收过程通信协议物理层1.电平标准2.接口物理结构与信号线接口接口电气特性信号线协议层1.码率(波特率)2.通讯的起始与停止位3.有效数据4.校验位附二、STM32 的串口简介USART 功能框图1.功能引脚2.数据收发单元数据寄存器DR通信状态标志位3.控制器***发送器******接收器***起始位检测一、串口通信概述计算机通信是指将计算机技术和通信技术相结合,完成计算机与外原创 2021-04-06 18:24:57 · 1751 阅读 · 0 评论 -
HAL学习笔记 - 7 定时器之高级定时器
目录通用定时器一、pandas是什么?二、使用步骤1.引入库2.读入数据总结通用定时器提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimp原创 2021-04-02 17:50:14 · 2454 阅读 · 0 评论 -
HAL学习笔记 - 7 定时器之基本定时器
目录定时器简介一、STM32微控制器定时器常规定时器基本定时器基本定时器功能图1.时钟源二、使用步骤1.引入库2.读入数据总结定时器简介定时器是对周期固定的脉冲信号进行计数,如MCU内部的外设时钟(APB)计数器是对周期不确定的脉冲信号进行计数,如MCU的I/O引脚所引入的外部脉冲信号。定时器和计数器本质上都是计数器,定时器是计数器的一种特例。定时器的两个概念时钟频率:在定时器模式下,送入定时器的周期性时钟信号的频率计数时间:在定时器模式下,计数单元记一次数所花费的时间,它是时钟频率的倒原创 2021-04-02 10:34:59 · 3725 阅读 · 1 评论 -
HAL学习笔记-6 中断系统
目录一、中断概述1.中断相关概念数据传输方式中断过程示意图中断作用中断优先级中断向量2.STM32微控制器中断系统NVIC(嵌套向量中断处理器)中断通道中断优先级优先级分组EXTI(外部中断/事件控制器)EXTI结构框图EXTI中断/事件线二、HAL库中断处理流程1.HAL库的中断封装2.外部中断处理流程三、外部中断的数据类型与接口函数引脚初始化数据类型接口函数实例一、中断概述1.中断相关概念数据传输方式处理器要控制外设,外设要通知处理器消息都需要进行数据传输,数据传输的方式有如下四种:无条件原创 2021-03-30 16:02:05 · 1598 阅读 · 0 评论 -
HAL学习笔记-5 硬件抽象设计层实现之BSP板级支持包构建
目录一、硬件抽象层设计思想板级支持包BSP(board support package)二、BSP设计实现1.设计方法2.设计实例1)定义头文件和源文件2)头文件内容1. 文件的基本描述2. 使用定义宏避免头文件的重复包含3. 用户自定义数据类型4.自定义接口函数声明2)源文件内容1. 文件的基本描述2. 包含文件3. 接口函数实现初始化函数 BSP_lED_Init()操作函数3.设计总结三、BSP移植步骤1.修改BSP2.添加BSP3.编写程序总结一、硬件抽象层设计思想采用通用性设计思想,屏蔽底原创 2021-03-29 14:26:22 · 1901 阅读 · 1 评论 -
HAL学习笔记-2 开发环境搭建与使用
目录环境搭建一、STM32Cube生态系统介绍软件1.开发工具2.嵌入式软件二、STM32CubeMX安装1.基本特点2.使用流程3.安装步骤1)官网下载STM32CubeMX安装包并安装2)在线安装所选用的STM32微控制器对应的MCU固件包三、MDK-ARM软件下载安装1.基本特点2.安装步骤1)官网下载MDK-ARM安装包并安装2)下载并安装微控制器对应的器件支持包四、ST-Link仿真器驱动程序安装软件使用五、STM32CubeMX使用1.HAL库简介MCU固件包文件结构2.使用步骤例程1.选择基于原创 2021-03-25 16:49:19 · 943 阅读 · 0 评论 -
HAL学习笔记-1 嵌入式系统概要
目录一、嵌入式硬件简介二、嵌入式软件简介1.传统框架2.加入HAL后框架目的和意义实现方式三、嵌入式编程模式嵌入式系统三、嵌入式程序开发方式1.寄存器开发2.固件库开发总结一、嵌入式硬件简介嵌入式处理器分为微处理器MPU:通用CPU演变,包含MMU,如MIPS微控制器MCU:将CPU,存储器,中断系统,外设集成在单芯片上数字信号处理器DSP:侧重于信号处理片上系统SoC:主要为客户定制,可编程逻辑器件,如PLC二、嵌入式软件简介1.传统框架应用程序:完成具体业务逻辑操作系统:管原创 2021-03-25 11:54:38 · 937 阅读 · 1 评论 -
HAL学习笔记-4 通用输入输出GPIO
目录一、GPIO概述基本概念二、GPIO模块的电路结构与功能描述工作模式分类输入模式输入配置输出模式输出配置推挽输出开漏输出模拟模式模拟配置复用模式复用配置用法总结输入模式模拟模式输出模式复用模式三、GPIO模块的常用寄存器介绍GPIO端口模式寄存器(GPIOx_MODER)GPIO端口输出类型寄存器(GPIOx_OTYPER)GPIO端口输出速度寄存器(GPIOx_OSPEEDR)GPIO端口上拉/下拉寄存器(GPIOx_PUPDR)GPIO端口输入数据寄存器(GPIOx_IDR)GPIO端口输出数据寄存原创 2021-03-27 14:41:39 · 2821 阅读 · 0 评论 -
HAL学习笔记-3 HAL库介绍
目录CMSIS标准一、再次认识HAL库HAL库设计思想HAL库实现方式以GPIO模块为例GPIO外设数据类型GPIO外设接口函数初始化函数控制函数配置函数二、使用HAL库1.库工程必要文件的调用关系2.使用步骤以GPIO模块为例三、新建工程模板1.手动新建1)新建本地工程文件夹2)新建MDK工程1.选择MCU2.添加库文件3. 添加组文件夹4. 添加文件5. 工程配置Target页面选中微库在C/C++选项卡中添加处理宏及编译器编译的时候查找的头文件路径下载仿真器配置6.编写用户代码2.使用CubeMX创建原创 2021-03-27 13:48:48 · 5928 阅读 · 0 评论