STM32单片机学习
文章平均质量分 84
STM32学习
~Old
Nothing but more and more nothingness
展开
-
[STM32学习]——一文搞懂SPI协议
先说串口因为UART没有时钟信号,无法控制何时发送数据,也无法保证双方按照完全相同的速度接收数据。因此,双方以不同的速度进行数据接收和发送,就会出现问题。如果要解决这个问题,UART为每一个字节添加额外的起始位和停止位,以帮助接收器在数据到达时进行同步;双方还必须事先就传输速度达成共识(设置相同的波特率,例如每秒9600)传输速率如果有微小差异不是问题,因为接收器会在每个字节的开头重新同步。相应的协议如下图所示:如果你注意到上图中的11001010不等于0x53,这是一个细节,串.原创 2022-02-22 22:49:44 · 3180 阅读 · 1 评论 -
STM32——SysTick系统定时器
一、SysTick简介SysTick——系统定时器是属于CM3内核中的一个外设,内嵌在NVIC中。系统定时器是一个24bits的向下递减的计数器。计数器每计数一次的时间为1/SYSTICK,一般我们设置系统时钟SYSTICK等于72M。当重装载数值寄存器的值递减到0的时候,系统定时器就产生一次中断,以此循环往复。因为SysTick是属于CM3内核的外设,所以所有基于CM3内核的单片机都具有这个系统定时器,使得软件在CM3单片机中可以很容易的移植。系统定时器一般用于操作系统,用于产生时基,维持操作系统原创 2022-01-02 16:40:40 · 1859 阅读 · 0 评论 -
[STM32]——软件模拟I2C
目录软件模拟I2C概述软件模拟I2C程序I2C延时函数I2C对应的GPIO配置和宏定义I2C起始信号I2C停止信号I2C应答信号相关时序图I2C等待应答信号I2C应答信号I2C非应答信号I2C的GPIO初始化配置I2C发送数据(根据数据有效性)I2C读取数据检测I2C总线设备I2C读写EEPROM实验EEPROM宏定义检测EEPROM外设是否正常EEPROM读取数据EEPROM写入数据软件模拟I2C概述很多人...原创 2022-01-10 15:44:54 · 12879 阅读 · 11 评论 -
STM32——通信基础概念
一、通信的本质通信通信,说白的就是信息互通。人跟人间的信息互通、机器跟机器间的信息互通、机器根人之间信息互通。而想要做到互通,主要有两个问题需要解决,“信息如何表示”和“信息该如何传输”两个核心问题。我们知道信息交互中,最原始,朴素的表示是0和1.其中,信息传输主要指01串在介质上传输的过程,这个过程具体上跟诸如无线电、光纤和电缆如何操作实现有关,本文主要讨论的是“信息该如何表示”这一问题。那么:在电子世界中如何表示0和1 信息的发送方和接收方如何解析 如何用0和1的组合表示...原创 2022-01-03 20:05:55 · 1049 阅读 · 0 评论 -
STM32——理解中断与中断配置
前言:本文将从”这是什么?“ ”为什么需要它?“ “如何配置操作它”三个角度展开讨论分析目录中断简介抢占优先级和子优先级中断分组配置要点EXTIEXTI框图讲解信号产生过程编程要点中断简介中断,即机器运行过程中出现某些意外情况,需要机器停止正在运行的程序并转入处理新情况的程序,处理完毕之后又返回原来被暂停的程序继续运行。理解中断想象一个这样的场景:你在认真的敲代码,你妈喊你出房间去客厅吃饭,并且以不出来就拔网线为威胁。这时候你能怎么办?只能乖乖保.原创 2021-12-30 20:15:25 · 4659 阅读 · 4 评论 -
[STM32学习]——一文搞懂I2C总线
I原创 2022-01-09 15:13:39 · 25713 阅读 · 6 评论 -
STM32——串口通信及实验
通信接口背景知识设备之间的通信方式一般情况下,设备之间的通信方式可以分成并行通信和串行通信两种。它们的区别是:串行通信的分类1、按照数据传送的方向,分为:单工:数据传输只支持数据在一个方向上传输 半双工:允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信,它不需要独立的接收端和发送端,两者可以合并一起使用一个端口。 全双工:允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端2、按原创 2022-01-04 10:41:03 · 22484 阅读 · 1 评论 -
STM32——FSMC模拟8080时序点亮液晶屏
显示器简介显示器属于计算机的I/O设备,即输入输出设备,它是一种将特定电子信息输出到屏幕上再反射到人眼的显示工具,常见的有CRT显示器,液晶显示器,LED点阵显示器及OLED显示器。液晶显示器液晶显示器,简称LCD(Liquid Crystal Display),相对于上一代CRT显示器(阴极射线管显示器),LCD显示器具有功耗低,体积小,承载的信息量大及不伤眼的优点,因而它成为了现在的主流电子显示设备。显示器的基本参数不管是哪一种显示器,都有一定的参数用于描述它们的特性,各个参数介绍如原创 2022-03-04 09:42:16 · 6016 阅读 · 3 评论 -
STM32——SDIO进行SD卡读写测试
SDIO简介SD卡(Secure Digtial Memory Card)在我们生活中已经非常普遍了,控制器对SD卡进行读写通信操作一般有两种通信接口可选,一种是SPI接口,另一种就是是SDIO接口。SDIO全称是安全数字输入/输出接口,多媒体卡(MMC)、SD卡、SD I/O卡都有SDIO接口。STM32F10X系列控制器有一个SDIO主机接口,它可以与MMC卡、SD卡、SD I/O卡以及CE-ATA设备进行数据传输。MMC卡可以说是SD卡的前身,现阶段已经用的很少了。SD I/O卡本身不是用于存原创 2022-03-12 22:26:00 · 6774 阅读 · 0 评论 -
片内外设、片上外设和片外外设的区别
片内外设就是片上外设,同一种意思不同说法而已。片内外设和片外外设的区别:片内、外设是两个概念,片内指做成芯片的集成电路内部,简称片内,片外同理显而易见;外设是外部设备的简称,是指集成电路芯片外部的设备。集成电路芯片与外部设备的连接一般需要专门的接口电路和总线的连接(包括控制总线路,地址总线和数据总线)。由于大规模集成电路的技术发展得很快,现在许多芯片在制造得时候已经能够将部分接口电路和总线集成到芯片内部。对于这部分电路与传统的接口电路和总线是有区别的,为了加于区别可以称之为片内外设,其含义是在集成电原创 2022-02-27 13:04:45 · 3129 阅读 · 0 评论 -
STM32——FSMC读写外部SRAM
目录FSMC(灵活的静态存储器控制器)FSMC功能描述FSMC框图FSMC特点FSMC框图如下:AHB接口NOR/PSRAM地址映射外部存储器接口信号非复用I/OPSRAM/SRAMNOR/PSRAM控制器异步事务模式1模式1读访问模式1写访问模式A模式A读访问模式A写访问代码说明FSMC_AccessMode :访问模式FSMC(灵活的静态存储器控制器)FSMC功能描述FSMC模块能够与同步或异步存储器和16位P.原创 2022-02-28 12:27:59 · 3138 阅读 · 0 评论 -
软件模拟SPI接口程序代码
目录SPI协议简介SPI接口介绍SPI接口连接图SPI数据传输方向SPI传输模式模拟SPI程序SPI协议简介SPI的通信原理很简单,一般主从方式工作,这种模式通常有一个主设备和一个或者多个从设备,通常采用的是4根线,它们是MISO(数据输入,针对主机来说)、MOSI(数据输出,针对主机来说)、SCLK(时钟,主机产生)、CS/SS(片选,一般由主机发送或者直接使能,通常为低电平有效) SPI接口介绍 SCK:时钟信号,由主设备产生,所以主设备SCK信号为输出模.原创 2022-02-23 16:16:07 · 1332 阅读 · 0 评论 -
STM32学习——FATFS文件系统
什么是文件系统负责管理和存储文件信息的软件机构,在磁盘上组织文件的方法。常用的文件系统FAT/FATFS 小型嵌入式系统NTFS WINDOWSCDFS 光盘exFAT 更适合用于闪存FATFS优点:免费开源,专门为小型嵌入式系统设计,完全用C语言编写;支持FAT12,FAT16与FAT32,支持多种存储媒介,有独立的缓冲区,可对多个文件进行读写,可裁剪的文件系统(极为重要)FATFS的特点:Windows兼容的FAT文件系统,(支...原创 2022-02-25 22:16:29 · 9865 阅读 · 0 评论 -
STM32——液晶显示中英文
目录字符编码ASCII编码中文编码GB2312编码区位码GBK编码Unicode字符集和编码UTF-32UTF-16UTF-8字模字模的构成字模显示原理如何制作字模字模寻址公式存储字模文件各种模式的液晶显示字符实验显示ASCII编码的字符代码分析ASCII字符和中文显示函数字符编码由于计算机只能识别0和1,文字也只能以0和1的形式在计算机里存储,所以我们需要对文字进行编码才能让计算机处理,编码的过程就是规定特定的0.原创 2022-03-05 17:33:20 · 2064 阅读 · 1 评论 -
STM32——屏幕的8080接口
目录8080接口信号线例如:8080时序也叫因特尔总线,一般MCU(MPU)模式的LCD上读写数据读时序图写时序图RGB接口常见的屏幕接口有:SPI、8080、RGB、MIPI-SDI、LVDS等8080接口使用这种接口的屏幕一般是屏幕自带了驱动芯片,比如ILI9488、ILI9341、SSD1963等 。驱动芯片里面自带了显存,MCU只需要把显示数据传给驱动芯片,驱动芯片会把数据保存到显存中,最后再把显存中的数据显示到屏幕上。信号线LCD_D..原创 2022-02-28 17:55:29 · 10702 阅读 · 0 评论 -
STM32——ADC采集
目录ADC简介ADC主要特征ADC功能框图ADC引脚电压输入范围通道选择单次转换模式连续转换模式转换顺序规则序列注入序列触发源转换时间中断转换结束中断模拟看门狗中断DMA请求代码讲解宏定义:ADC简介12位ADC是一种逐次逼近型模拟数字转换器,它有多达18个通道,可以测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行.ADC的结果可以是左对齐或者是右对齐方式存储在16位数据寄存器中。.原创 2022-03-08 10:53:40 · 32052 阅读 · 2 评论 -
常用存储器介绍
存储器种类存储器是计算机结构的重要组成部分。存储器是用来存储程序代码和数据的部件,有了存储器计算机才具有记忆功能。基本的存储器种类见图基本存储器种类。存储器按其存储介质特性主要分为“易失性存储器”和“非易失性存储器”两大类。其中的“易失性/非易失”是指存储器断电之后,它存储的数据内容是否会丢失的特性。由于一般易失性存储器存取速度快,而非易失性存储器可长期保存数据,它们在计算机中占据着非常重要的角色。在计算机中易失性存储器最典型的代表是内存,非易失性存储器的代表则是硬盘。RAM存储器RAM原创 2022-05-06 11:54:10 · 1987 阅读 · 0 评论 -
硬件I2C
跟其他外设一样, STM32提供了I2C的初始化结构体,详情如下:typedef struct{ uint32_t I2C_ClockSpeed; //设置SCL时钟频率,此值要低于400khz uint16_t I2C_Mode; //指定工作模式,可选I2C模式或者SMBUS模式 uint16_t I2C_DutyCycle; //指定时钟占空比,可选2/1或者16/9 uint16_t I2C_OwnAddress1;原创 2022-05-07 10:00:48 · 869 阅读 · 0 评论 -
一文搞懂——软件模拟SPI
关于stm32通信协议:软件模拟SPI、软件模拟I2C的总结(fishing_8)_To_be_a_fisher的博客-CSDN博客_stm32 软件spi发现一篇写的软件模拟SPI的比较容易理解的博客!感兴趣的可以看看原创 2022-05-12 18:23:18 · 13586 阅读 · 8 评论 -
软件模拟I2C
stm32软件模拟I2C_free(me)的博客-CSDN博客_stm32 模拟i2c文章目录前言一、芯片手册和原理图二、编程要点三、代码1.引入库2.结果前言本文基于野火STM32F103VET6开发板,实现软件模拟i2c一、芯片手册和原理图由原理图可以知道I2C的时钟线和数据线在GIOPB端口芯片手册GPIOB挂载在APB2总线上,I2C1挂载在APB1总线上将BSRR寄存器某位置1,相当于ODR寄存器的相应位置1将BRR寄存器某位置1,相当于ODR寄存器的相应位置0读SDA_IO口的数据二、编程要点起转载 2022-05-07 16:59:53 · 151 阅读 · 0 评论 -
STM32——MPU6050内部DMP固件移植,获取欧拉角
MPU6050模块是什么东西,我这里就不再赘述了,围绕它可以做很多应用,比如四翼飞行器、平衡车等等。当然要完全使用这块模块不是那么容易的。解释说明其实我们主要是想通过MPU6050得到欧拉角和四元数(可以用算法实现,但是比较复杂) 要通过MPU6050得到四元数和欧拉角,这个过程有两种方法,一种是用原始数据(三轴加速度,三轴角速度),通过一些(卡尔曼滤波、积分运算、减少误差零点漂移等)姿态融合算法转化即可 另一种是直接用MPU6050内部的自带的数字运动处理器(即DMP),我们要用这个DMP转载 2022-03-15 09:51:33 · 10097 阅读 · 7 评论 -
STM32基于固件库新建工程
目录一、新建工程准备二、新建工程三、添加官方下载的外设库的工程所必须的文件:1、复制外设库中的此路径下的两个文件夹到我们的STM32F10x_FWLIB中:2、复制启动文件和内核文件到CORE文件夹中:3、复制如下的文件到USER文件夹:四、工程的文件夹命名和添加文件:一、新建工程准备Keil MDK环境搭建,包括软件下载和破解以及芯片支持包下载 工程所需的文件有:启动文件——startup_stm32f10x_hd.s 内核文件——core_cm3.c和...原创 2021-12-21 21:18:03 · 511 阅读 · 0 评论 -
STM32学习——什么是寄存器(存储器映射和寄存器映射)
STM32芯片里面有什么我们看到的STM32芯片是已经封装好阿成品,主要由内核和片上外设组成。若与电脑类比,内核与外设就如同电脑上的CPU和主板、内存、显卡、硬盘的关系。STM32F103采用的是Cortex-M3内核,内核即CPU,由ARM公司设计,ARM公司并不生产芯片,而是出售其芯片技术授权。芯片生产厂商(SOC)如ST、TI、Freescale,负责在内核之外设计部件并生产整个芯片,这些内核之外的部件被称为核外外设或片上外设。如GPIO、USART(串口)、I2C、SPI等都叫片上外设。具体原创 2021-12-28 11:06:09 · 7478 阅读 · 4 评论 -
STM32基于固件库编程——初识固件库
目录CMSIS标准及库层次关系CMSIS文件夹内核相关文件启动文件:stm32f10x.hsystem_stm32f10x.cstm32f10x_it.c、stm32f10x_conf.h和system_stm32f10x.c文件库各文件间的关系初识固件库CMSIS标准及库层次关系因为基于Cortex系列芯片采用的内核都是相同的,区别主要为核外的片上外设的差异,这些差异却导致软件在同内核,不同的外设芯片上移植困难。为了解决不同的芯片厂商生产的Cortex微控制..原创 2021-12-26 20:47:18 · 2090 阅读 · 0 评论 -
STM32存储器映射和寄存器映射
我们知道存储器本身没有地址,给存储器分配地址的过程叫存储器映射,那么什么叫寄存器映射?寄存器到底是什么?在存储器Block2这块区域,设计的是片上外设,它们以4个字节为一个单元,共32bit,那么每一个单元对应不同的功能,当我们控制这些单元式就可以驱动外设工作。我们可以找到每个单元的起始地址,然后通过C语言指针的操作方式来访问这些单元,如果每次都是通过这种地址的方式来访问,不仅不好记忆还容易出错,这是我们可以根据每个单元的功能不同,以功能为名给这个存储单元取一个别名,这个别名就是我们经常说的寄存器,原创 2021-12-21 19:57:05 · 820 阅读 · 1 评论 -
C语言对寄存器的封装
目录1、封装总线和外设基地址2、封装寄存器列表3、修改寄存器的位操作的方法把变量的某位清零把变量的某几个连续位清零对变量的某几位进行赋值。对变量的某位取反1、封装总线和外设基地址在编程上为了方便理解和记忆,我们把总线基地址和外设基地址都以相应的宏定义起来,总线或者外设都以他们的名字作为宏名;具体代码见代码清单:/*外设基地址*/#define PERIPH_BASE ((unsigned int)0x40000000)/*总线基地址*/#defin原创 2021-12-28 12:02:58 · 1304 阅读 · 0 评论 -
STM32——理解时钟系统
前言时钟系统是MCU必不可少的一部分,本文将针对以下问题进行讨论:什么是时钟? 如何理解STM32时钟结构? 为什么MCU会有多个时钟源? STM32如何配置时钟 ?目录一、时钟简介二、STM32时钟树2.1、STM32F10X时钟源2.2、系统时钟三、关于时钟的一些思考3.1、 时钟频率3.2、多个时钟源四、时钟配置分析1、开始HSE时钟2、等待HSE就绪(因为时钟起振等原因一定要有一部分时间缓冲稳定)3、HSE状态正常就继续,异常就立即处理原创 2021-12-28 22:31:39 · 8845 阅读 · 0 评论 -
STM32固件库文件分析
1、汇编编写的启动文件startup_stm32f10x_hd.s:设置堆栈指针、设置PC指针、初始化中断向量表、配置系统时钟、调用C库函数_main最终去到C的世界2、时钟配置文件system_stm32f10x.c:把外部时钟HSE=8M,经过PLL倍频为72M3、外设相关的stm32f10x.h:实现了内核之外的外设的寄存器映射xxx:GPIO、USART、I2C、SPI、FSMCstm32f10x_xxx.c:外设的驱动函数库文件stm32f10x_xxx.h:存放外原创 2021-12-26 22:24:05 · 801 阅读 · 0 评论 -
RCC——系统时钟函数分析时钟的配置流程和自己动手写时钟配置函数配置时钟,实现超频
下面是SystemInit(void)函数的源代码:重点和时钟配置有关的是SetSysClock()函数void SystemInit (void){ /* Reset the RCC clock configuration to the default reset state(for debug purpose) */ /* 打开 HSION bit,置为1即为打开 */ RCC->CR |= (uint32_t)0x00000001; /* Reset SW, HPRE.原创 2021-12-29 10:39:17 · 1484 阅读 · 0 评论 -
【STM32】DMA原理,配置步骤超详细,一文搞懂DMA
DMA(Direct Memory Access)——直接存储器访问,是单片机的一个外设,它的主要功能是用来搬数据,但是不需要占用CPU,即在传输数据的时候,CPU可以干其他的事情,好像是多线程一样。数据传输支持从外设到存储器或者存储器到存储器,这里的存储器可以是SRAM或者是FLASH。DMA控制器包含了DMA1和DMA2,其中DMA1有7个通道,DMA2有5个通道,这里的通道可以理解为传输数据的一种管道。原创 2022-01-05 15:57:48 · 30460 阅读 · 5 评论 -
电机基础知识
中心对齐模式:中心对齐模式就是该模式下计数器先从0开始递增计数,直到计数器的值等于自动重装载寄存器的值-1时,定时器上溢,同时生成更新事件,然后自动重载寄存器影子寄存器的值开始递减计算,直到计数值等于1时,定时器下溢,同时生成更新事件,然后又从0开始递增计数,依次循环。更新事件:更新事件产生有两种情况,其一是由软件产生,将TIMx_EGR寄存器的UG置位1,产生更新事件后,硬件自动会将UG位清0,二是由硬件产生,满足以下条件时即可,计数器的值等于自动重装载寄存器的影子寄存器的值,这时产生更新事件。原创 2022-10-20 18:09:04 · 6836 阅读 · 1 评论 -
软件模拟I2C
I2C(Inter-Integrated Circuit)协议是一种用于同步、半双工、串行总线(由SCL时钟线、SDA线组成)上的协议。规定了总线空闲状态、起始条件、停止条件、数据有效性、字节格式、响应Ack信号、从设备地址选择、数据方向。有主从机之分,主机master就是产生时钟的一方,并且起始信号和停止信号由主机发送。协议说明(之前有博客介绍I2C协议)总线空闲时钟:SCL、SDA均为高电平,此时主从设备都不控制总线(主从设备的SDA和SCL引脚为输入或者开漏输出),由外部上拉电阻将总线拉高。(原创 2022-05-14 10:23:35 · 4779 阅读 · 0 评论 -
电阻屏和电容屏的区别
电阻屏电阻触摸屏的屏体部分是一块多层复合薄膜,有一层玻璃或者有机玻璃作为基层,表面涂有一层透明的导电层(ITO)膜,上面再盖有一层外表面经过硬化处理、光滑防刮的塑料层。它的内表面也涂有一层ITO,在两层导电层之间有许多细小的(小于千分之一英寸)的透明隔离点把它们隔开。当手指接触屏幕时,两层ITO之间发生接触,电阻发生变化,控制器根据检测到的电阻变化来计算接触点的坐标,再依照这个坐标来进行相应的操作,因此这种技术必须是要施力到屏幕上,才能获得触摸效果。(这里我看野火视频,有点像ADC采集的味道)电阻式原创 2022-05-16 22:07:33 · 3139 阅读 · 0 评论 -
MDK编译过程和文件详解
MDK编译过程编译生成的不同的文件将在后面进行详细说明1) 编译:MDK软件使用的编译器是armcc和armasm,它们根据每个c/c++和汇编文件编译成对应的以".o"为后缀的对象文件(Object Code,也称目标文件),其内容主要是从源文件编译得到机器码,包含了代码、数据以及调试使用的信息。2)链接:链接器armlink把各个.o文件以及库文件链接成一个映像文件".axf"或“.elf”3)格式转换:一般来说windows或linux系统使用的链接器直接生成可执行映像文件elf后原创 2022-05-29 16:50:06 · 3724 阅读 · 1 评论