STM32 GPIO输入输出(基于HAL库)】的更多相关文章

写在前面 最近需要使用一款STM32L4系列的芯片进行开发,需要学习使用HAL库.在进行串口中断使用的时候遇到了一些小麻烦,写下解决方案供大家参考. 1.UART相关的头文件引用错误 由于本人直接使用MDK进行开发,没有使用CubeMX,所以一些初始化需要手动进行.在引用UART相关的头文件时,记得将"stm32l4xx_hal_conf.h"文件中的相关宏定义取消注释,如下图: 2.如何接收字符串(多次进入中断) 接收字符串主要有两种方法,一种是对中断函数进行改造,另一种是对接收回调…
Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401开发 Keil MDK STM32系列(三) 基于标准外设库SPL的STM32F407开发 Keil MDK STM32系列(四) 基于抽象外设库HAL的STM32F401开发 Keil MDK STM32系列(五) 使用STM32CubeMX创建项目基础结构 Keil MDK STM32系列(六)…
说明: 1.该工程基于HAL库实现动态存储器SDRAM驱动以及液晶控制器LCD驱动. 2.工程通过STM32CubeMX(Version 4.22.0)配置生成,可直接打开进行配置. 3.KEIL MDK版本Version5.17 功能: 基于emwin图形库实现液晶显示,实时显示触摸值. 截图: 工程包下载地址: 链接:https://pan.baidu.com/s/1slIAOC9 密码:4ssy GMT43液晶模块购买链接:…
1 . 建立工程,生成代码时选择包含所有库.   2. 打开 option for target 选择 Target 标签,在code generatio中,将floating point hardware 选择 USE Single Precision.   3.  打开 option for target 选择 C/C++ 标签 在define后添加:__TARGET_FPU_VFP,ARM_MATH_MATRIX_CHECK,ARM_MATH_ROUNDING,ARM_MATH_CM4,_…
通过STM32CUBEMX生成DMA读写sdio的工程,再读写过程中总会卡死在DMA中断等待读写完成的while中,最终发现while等待的标志在SDIO的中断里置位的,而SDIO中断优先级如果小于或等于DMA中断优先级,则SDIO中断永远不能抢占DMA中断,DMA处于持续等待中,解决办法由两种,一种是直接提高SDIO中断优先级到比DMA中断优先级高,第二种是直接在HAL库中卡住的中断等待函数中注释掉while等待. 另外还有一点就是在SDIO数据读写的时候需要注意的两点,一个是读写数据最好四字…
参考传送门 关于IIC的原理这里我就不多说了,网上有很多很好的解析,如果要看我个人对IIC的理解的话,可以点击查看,这里主要讲一下怎样利用STM32CubeMx实现IIC的通讯,经过个人实践,感觉HAL库的硬件IIC要比标准库的稳定.好了,下面就从STM32CubeMx 配置开始一步步实现IIC通讯. STM32CubeMx的配置,这里关于新建工程的步骤我就不细说了,如果还不会操作STM32CubeMx 的可以点击查看, 这里主要对IIC的配置进行说明. 了解IIC的都知道,IIC通信有主从机之…
先上一个采用串口直接传输的Demo: 此处的思路是完全采用HAL库来实现的,核心是运用HAL_UART_Transmit_IT和HAL_UART_Receive_IT两个函数来实现的,可以作为一个Demo来测试使用: 直接上代码,其串口的配置和上一章完全一致,因此忽略不计: 思路大致是将aTxStartMessage字符串发送出去,接收一个总长度为15个字符的数据到aRxBuffer中,等待接收完毕: 将接收到的aRxBuffer发送出去,等待发送完成,最后将aTxEndMessage发送出去:…
一.基础认识 GPIO全名为General Purpose Input Output,即通用输入输出.有时候简称为"IO口".通用,说明它是常见的.输入输出,就是说既能当输入口使用,又能当输出口使用.端口,就是元器件上的一个引脚. 输入模式和输出模式是GPIO的基本特性,当然GPIO还有其它模式可选. (一) IO耐压问题 STM32是一款3.3V电压的芯片,IO输出是3.3V,但IO大部分都是可以容忍5V电压输入.一般在芯片手册的"引脚定义"章节可以查看到有FT标…
基础认识 为什么要有时钟: 时钟就是单片机的心脏,其每跳动一次,整个单片机的电路就会同步动作一次.时钟的速率决定了两次动作的间隔时间.速率越快,单片机在单位时间内所执行的动作将越多.时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令.时钟系统就是CPU的脉搏,决定cpu速率. 为什么这么多个时钟源: STM32系统是复杂的,高精度.低精度.高速.低速等,且可以对每个时钟源进行开关操作,可以把不需要使用的关闭掉.这可以让单片机适用更多的环境中,把选择权利交个了开发者,开发者可以从精…
UART.c #include "stm32f1xx_it.h" #include "LED.h" #include "UART.h" #include "string.h" UART_HandleTypeDef huart1; UART_HandleTypeDef huart3; #define RXBUFFERSIZE 4096 //最大接收字节数 char RxBuffer1[RXBUFFERSIZE]; //接收数据…