STM32 HAL库
文章平均质量分 81
HAL库入门
成草
这个作者很懒,什么都没留下…
展开
-
c# 与单片机之间 float与byte的相互转化
该章作为及,主要用于自定义协议中的负数,浮点数等的收发(我们以前用的浮点数等,是直接使用的字符串的收发,从字符串中进行解析的,这里主要使用十六进制,对其收发原理及使用操作进行剖析)。原创 2023-07-04 10:14:21 · 1381 阅读 · 0 评论 -
IIC驱动中景园0.96寸OLED
1、驱动电压3.3到5,但是正点的也是这个芯片说用3.3 5会烧坏掉。2、RST 上的低电平,将导致OLED 复位,在每次初始化之前,都应该复位一下 OLED 模块。而我们使用四线,里面就没有复位了3、裸屏有多种接口方式(驱动芯片为SSD1306)4、为什么要先将点信息写入自己创建的数组,再一起导入到IIC中5、因为IIC驱动oled只能写数据不能读数据,因此其地址就为0111100 0也就是0x786、stm32的驱动代码在官方给的0.96寸里面不全,反而在0.91寸的资料中有,他们用的驱动芯片都是原创 2023-01-17 08:44:59 · 6986 阅读 · 6 评论 -
LCD驱动
1、为什么可以把 TFTLCD 当成 SRAM 设备用2、具体数据线的改变,导致能够使用1、任何 LCD,使用流程都可以简单的用以上流程图表示。其中硬复位和初始化序列,只需要执行一次即可。而画点流程就是:设置坐标→写 GRAM 指令→写入颜色数据,然后在 LCD 上面,我们就可以看到对应的点显示我们写入的颜色了。读点流程为:设置坐标→读 GRAM 指令→读取颜色数据,这样就可以获取到对应点的颜色数据了。2、实际操作视频1、显示器介绍2、LCD屏幕介绍3、OLED视频1、显示器基本参数2、显示器的接口技原创 2022-10-17 20:47:11 · 1369 阅读 · 0 评论 -
c# 与stm32之间结构体的收发
举例:对于十六进制数0x01234567,其字节的存储顺序便依赖于机器,如下:也就是大端就是正常的顺序,高位在前。stm32和PC都是大端 但需要注意的是他们之间都需要设置为1字节对齐(stm32默认用的是4字节对齐)原创 2022-09-24 16:11:17 · 1869 阅读 · 0 评论 -
带刹车死区的互补输出与捕获实验
首先需要将PG10和PG12拉低PA6是刹车引脚,低电平就停止PWM的输出了输出TIM1的CH1(PE9)和CH1N(PE8)输入。原创 2022-07-20 12:42:58 · 641 阅读 · 0 评论 -
外部扩展SRAM
简介1、SRAM和DRAM静态随机存取存储器(Static Random-Access Memory,SRAM)是随机存取存储器的一种。所谓的“静态”,是指这种存储器只要保持通电,里面储存的数据就可以恒常保持。相对之下,动态随机存取存储器(DRAM)里面所储存的数据就需要周期性地更新。然而,当电力供应停止时,SRAM和DRAM储存的数据都是会消失(被称为volatile memory),这与在断电后还能储存资料的ROM或闪存是不同的。SRAM不需要刷新电路即能保存它内部存储的数据。而DRAM(Dyn原创 2022-03-11 15:09:32 · 1181 阅读 · 0 评论 -
高级定时器详解
前言1、TM32F407xx系列定时器资源2个高级控制定时器10个通用定时器2个基本定时器2个看门狗定时器。2、功能介绍3、资源介绍原创 2021-12-28 14:19:45 · 2416 阅读 · 0 评论 -
嵌入式知识点
1、电路板与示波器需要供地。原创 2021-12-27 20:45:33 · 263 阅读 · 0 评论 -
DMA详解
前言1:每个 DMA 控制器有8 个数据流,每一个 DMA 控制器都用于管理 一个或多个外设的存储器访问请求。每个数据流总共可以有多达 8 个通道(或称请求)。每个通道都有一个仲裁器,用于处理 DMA 请求间的优先级。2:我们不能同时使用一个数据流的不同通道。不同数据流哪个优先处理就看仲裁器,我们软件中配置的也是数据流的优先权3:使用时...原创 2021-12-21 22:07:09 · 803 阅读 · 0 评论 -
FatFs文件系统
创客资料前言1、常见的Windows下的文件系统格式包括FAT32、NTFS、exFAT。在使用文件系统前,要先对存储介质进行格式化。格式化时会在存储介质上新建一个文件分配表和目录。这样,文件系统就可以记录数据存放的物理地址,剩余空间。FAT(file allocate table文件分配表),电脑根据文件系统进行格式化,分展出几个区2、文件系统的作用:帮助我们管理磁盘,让磁盘可以通过文件目录的形式进行管理(通过在磁盘或者sd卡上做一个文件的结构)。Windows现在里面用的是微软自主开发的NTFS原创 2021-12-20 14:10:02 · 1398 阅读 · 0 评论 -
SPI读写外部FLASH
前言1、SPI高速全双工同步的通信总线2、主机发送一个字节数据到从机,同时从机也会发送一个字节数据到主机(写操作和读操作是同步完成的,如果只想进行写操作,只需忽略接收到的字节即可。如果要读一个字节,就需要发送一个空字节来引发从机的传输)3、W25Q128将16M的容量分为256个块(block),每个块大小为64K字节,每个块又分为16个扇区(sector),每个扇区4K字节。W25Q128的最小擦除单位为一个扇区,也就是每次必须擦除4k字节。这样我们需要给W25Q128开辟一个至少4K的缓存区,这样原创 2021-12-16 09:51:35 · 1985 阅读 · 0 评论 -
GPIO详解
结构在中文参考手册中有。下面这个是F1的,F4将上下拉放到了外面,也就是输出的时候也可以用到上下拉(1)起到保护作用,当外界电压高于VDD时,上面这个保护二极管就会导通。保证了不正常的电压引入芯片造成芯片的烧毁(单驱动大功率的外设的时候还是需要加隔离保护电路,驱动器什么的),5V容忍也用的这个(2)MOS管,可以有推挽、开漏或关闭三种(原理类似于下面这张图)推挽输出时:当IN给高电平的时候,上面这个三极管导通,下面这个三极管截止输出高电平开漏输出时:IN给高电平,三极管截止输出高电平(开漏输出原创 2021-12-15 14:25:05 · 2781 阅读 · 0 评论 -
I2C读写EEPROM
前言1、I2C 通讯协议(Inter-Integrated Circuit)是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。2、具有三种传输模式:标准模式传输速率为100kbit/s ,快速模式为400kbit/s ,高速模式下可达 3.4Mbit/s,但目前大多I2C设备尚不支持高速模式。STM32的I2C外设可用作通讯的主机及从机,支持100Kbit/s和400Kbit/s原创 2021-12-08 11:44:03 · 1511 阅读 · 0 评论 -
HAL库配置
f103和407高速都是8Mhz 407的低速时32.768KHz,最小系统板上没有低速。原创 2021-12-07 21:55:55 · 240 阅读 · 0 评论 -
SD卡读写
前言1、SD 卡 (Secure Digital Memory Card) 在我们生活中已经非常普遍了,控制器对 SD 卡进行读写通信操作一般有两种通信接口可选,一种是 SPI 接口,另外一种就是 SDIO 接口。SDIO 全称是安全数字输入/输出接口,多媒体卡 (MMC)、SD 卡、SD I/O 卡都有 SDIO 接口2、SDIO接口下的设备分类我们常说的SD卡就是指上面的额SD存储卡,MMC (多媒体卡)卡可以说是 SD 卡的前身,现阶段已经用得很少。SD I/O 卡本身不是用于存储的卡,它是指原创 2021-12-06 10:02:47 · 3616 阅读 · 0 评论 -
中断EXTI-扩展中断和事件控制器
前言对比按键扫描,我感觉这个检测上升沿的容易出现按键抖动1:框图1)上升沿/下降沿触发选择寄存器决定了信号能够进入下一步->或门电路,还可以通过软件的编写,软件中断事件寄存器 (EXTI_SWIER)。EXTI_SWIER 允许我们通过程序控制就可以启动中断/事件线(以这两个输入随便一个有有效信号 1 就可以输出 1,一个就叫做软件触发,一个硬件触发)->与门,脉冲发生器一般用来唤醒MCU(低功耗),触发 TIM 或者 ADC开始转换->与门,中断屏蔽寄存器,可以某些中断拦截原创 2021-11-05 21:23:55 · 381 阅读 · 0 评论 -
定时器计时
前言1:也就是TIM6最小要二分频2:如果想使用定时器更新中断,需要先使能更新中断,然后再使能定时器就可以用了HAL库配置84M/(8400-1)=10KHZ=100US100*20000=2Sauto-reload preload:是否使能自动重装载,如果没有使能,那么就可以在任何时刻通过软件进行更新。如果使能了的话,那么重新设置的值,只能在跑完原本那个周期才会重新跑我们新设定的那个值影子寄存器:我们初始化配置预分频寄存器和计数器就是源寄存器,使我们可以进行读和写的。影子寄存器是无法操作原创 2021-11-03 21:22:15 · 168 阅读 · 0 评论 -
systick系统定时器
systick简介1:系统定时器,24位,只能递减,存在于内核,嵌套在NVIC中,所有的Cortex-M内核的单片机都具有这个定时器。2:功能框图递减计数器和重装载计数器都是24bit的3:这篇用的是M3内核4:可以用来做延时,相当于以前的延时函数寄存器描述COUNTFLAG:一读这个位,他就清零了这个就是配置时钟源,是8分频还是1分频。ENABLE那个1是使能定时器定时器时间计算t = reload * ( 1/clk )Clk = 72M时,t = (72) *(1/ 72原创 2021-10-18 11:15:14 · 267 阅读 · 0 评论 -
ADC 电压采集(多通道DMA读取)
实验1:还没有尝试过,因为这个实验野火只有H7的视频,可能会有问题,传输应该可以一次传输一个字节过去到数组,然后数组只用前面几位2:DMA外设的使用(标准库),配置DMA并使能DMA通道,使能ADC的DMA请求,使能ADC开启ADCDMA_Cmd(DMA2_Stream0, ENABLE);// DMA 数据流使能 DMAy_Streamx->CR EN:数据流使能ADC_DMACmd(ADC1, ENABLE);//使能ADC的DMA请求 ADC中的CR2ADC_Cmd(RHEOSTA原创 2021-10-12 11:10:48 · 3089 阅读 · 1 评论 -
ADC电压采集(多重ADC交替模式)
实验说明1:采用三个ADC采集同一个IO口(通道12 PC2),采用一个ADC去采集最快速率2.4M,三个同时交替采集最高可达7.2M2:三重是以ADC1占主导的,我们只要开启ADC1的DMA就可以了,HAL库配置三个ADC都配置成这样1:三通道交替采集模式2:DMA使用模式23:两次采样之间的等待周期,采样间隔只需要开启ADC1的DMA2就可以了(有个字 32bit),具体模式说明在中文参考手册中的多重ADC模式里面有1:扫描模式:只使用一个通道,所以扫描模式不用打开2:使能连原创 2021-10-12 08:10:51 · 3407 阅读 · 3 评论 -
ADC 第一节-电压采集(单通道中断读取)
ADC介绍1:一个ADC虽然有很多通道,但是一次只能处理一个通道的数据,所以需要配置规则通道的转换顺序(SQR规则序列寄存器),有正常顺序必会有抢占(注入序列寄存器JSQR。主要ADC被烧毁是整个ADC都不能用了,而不是只烧毁掉单个通道。如果在使用中重新进行了排序,会复位然后重新开始转换2:转换时间,采样时间可以在后面配置(Sampling Time)最低为3个,总的时间要小于2.4MSPS也就是0.41us。12bit精度存储时间就是12个周期,几bit就是几周期。这个计算出来虽然是小于2.4MS原创 2021-10-11 14:14:08 · 1992 阅读 · 0 评论 -
PWM:输出比较实验
实验介绍1:输出四路占空比为50%但是频率不同的函数。2:在中断中不断修改CCR的值,通过不断的匹配翻转,匹配翻转来达到目的。和PWM输出的区别是PWM输出是CNT到ARR的时候为一个周期,而这个实验在CNT还没有到ARR的时候就可以通过改变CCR的值,实现一个ARR里面有多次翻转3:四个通道用的都是同一个CNT4:参考野火电机定时器章节配置模式介绍TIM_OCInitStructure.OCMode = TIM_OCMODE_TOGGLE;//输出比较模式的翻转模式,当CNT计数到CCR时电平原创 2021-10-10 20:46:06 · 743 阅读 · 0 评论 -
STM32 USART解析
STM32 USART解析1原创 2021-10-08 13:33:42 · 1719 阅读 · 0 评论