
【STM32】
文章平均质量分 93
STM32教程,每篇都认真编写,深入浅出,让你从0完全看懂
Z小旋
.
展开
-
【STM32存储器映射-寄存器基地址-偏移】
可以看到各个部分详细的分类,映射其实就是对应的意思。事实上存储器本身不具备地址,所以把芯片内核所预先设定好的地址分配给寄存器,就是存储器映射。因为stm32把这个4G的虚拟存储空间和芯片内部外设进行一一对应,每个外设和其对应的寄存器都有一个确定的地址,也就是给存储器分配地址,即存储器映射。原创 2023-03-08 15:25:01 · 12738 阅读 · 14 评论 -
STM32状态机编程----什么是状态机?
万事万物都有其状态什么是状态状态是人或事物表现出来的形态。是指现实(或虚拟)事物处于生成、生存、发展、消亡时期或各转化临界点时的形态或事物态势。通过上面那句话,我们知道了状态就是一个对象在不同情况下对应的各种形态做产品的时候,如果我们如果要对这个对象所有的形态进行描述,在一些对象复杂的逻辑状态下,比较复杂的逻辑问题,普通的流程图,或时序图对于对象和状态的解读缺乏直观的描述。这个时候就需要状态机来对对象的各个形态进行描述,将对象的全部工作方式,分成几个场景,这些场景的工作方式不同,然后将这些场.原创 2022-08-25 16:14:51 · 22442 阅读 · 9 评论 -
单片机测量代码运行时间方法-STM32
在实际程序的编写中,我们经常会对程序进行一个整体的复盘、优化,或者对算法的运行时间进行测量等等,那么怎么精确的测量我们程序的运行时间呢?下面我们给出几种方法:1 使用Keil Debug功能2 使用逻辑分析仪或示波器等设备测量3 使用STM32自带定时器进行测量1 使用Keil Debug功能我们可以使用J-LINK或者ST-link 等仿真器,实现对代码运行时间的测量,首先要设置仿真器仿真的实际频率首先点击Settings设置然后点击Trace 设置我们芯片的系统频率,点击Teac原创 2022-03-31 21:24:48 · 28817 阅读 · 13 评论 -
【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(二)
前言:本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用上一讲我们说了CubeMX配置SDRAM的一些基本配置,还有FMC跟SDRAM的讲解,这一讲我们来说下SDRAM的初始化流程跟HAL库的SDRAM函数使用所用工具:1、芯片: STM32H743II2、STM32CubeMx软件V6.4.03、IDE: MDK-Keil5软件4、STM3H7xxHAL库5、W9825G6KH知识概括:通过本篇博客您将学到:SDRAM+FMC的基本原创 2022-03-29 21:42:42 · 11867 阅读 · 9 评论 -
【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(一)
并行总线接口FMCFMC(Flexible memory controller,灵活动态存储器)FMC可连接SRAM(异步或同步)、SDRAM、NORFLASH、PC卡、NANDFLASH.支持突发模式,可编程时钟,8位、16位、32位宽的数据总线。FMC有6个存储区域,每个区域支持256MB的寻址空间。...原创 2022-03-28 11:41:53 · 17518 阅读 · 9 评论 -
STM32 FMC原理详解
中讨论了FSMC的基本用法,今天来说说FMC。虽然跟FSMC相比,FMC只是少了一个S,但应用难度可是大大增加了。对于连接片外RAM而言,FSMC接的是静态RAM,FMC接的是动态RAM,而控制动态RAM要复杂得多。举个例子:动态RAM需要不停地(周期性的)刷新,否则RAM中的数据就会丢失,这就产生了“管理”问题,如果用一个MCU来连接DRAM,二者之间交换的就不只是数据(SRAM就是如此)那么简单了,还包含有控制信息。这样,DRAM中除了存储数据的单元,还需要有寄存器(模式寄存器,后面将详述)、还得有个原创 2022-03-28 11:30:55 · 29164 阅读 · 2 评论 -
STM32CubeMx配置H7时钟: Frequency searched for is out of range for this vos range
配置时钟树的时候主频想设置到400Mhz,点击快速设置,按下回车,出现了Frequency searched for is out of range for this VOS range但是这个问题在CubeMx 6.1.1中就没有出现,刚装的6.4.0就报错原创 2022-03-28 11:25:00 · 6972 阅读 · 0 评论 -
STM32 FSMC/FMC原理保姆级讲解(二)
每个模式的时序略有不同,我们这里以常用的模式A为例进行说明:先来认识如下几个关键参数:1.FSMC信号引脚STM32的管脚排列很没有规律,而且分布在多个不同端口上,初始化要十分小心.需要用到的引脚都要先初始化成”复用功能推挽输出”模式.(GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP )并且开启时钟 (RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx, ENABLE); ) 像STM32F103Z(144脚)芯片有独原创 2022-03-26 17:20:44 · 24334 阅读 · 3 评论 -
STM32 FSMC/FMC原理保姆级讲解(一)
FSMC全称“静态存储器控制器”,STM32可以通过FSMC与SRAM、ROM、PSRAM、Nor Flash和NandFlash存储器的引脚相连,从而进行数据的交换。FSMC的特点:1、 FSMC的一大特点是支持不同位宽的异步读写操作。2、 FSMC的映射地址空间中,不同的BANK是独立的,可用于扩展不同类型的存储器。当FSMC同时使用多个外部存储器时,FSMC会通过总线悬空延时时间参数,来防止访问冲突发生。3、 支持代码从FSMC扩展的外部存储器中直接运行。不需要首先调入内部SRAM。...原创 2022-03-26 17:19:35 · 102758 阅读 · 26 评论 -
STM32--MPU内存保护单元(二)
上一篇我们说了MPU内存保护单元的基本原理跟寄存器,这一篇我们来说下HAL库的函数及基本配置本章说的一些HAL库参数,请参照上篇寄存器说明部分:STM32–MPU内存保护单元(一)首先我们来看一下在stm32h7xx_hal_cortex.h中的MPU_Region_InitTypeDef MPU初始化结构体该结构体参数如下:typedef struct{ uint8_t Enable; //区域使能/禁止 uint8_t Number; //区域编号 uint32_t BaseAd.原创 2022-03-23 20:02:55 · 6183 阅读 · 3 评论 -
STM32--MPU内存保护单元(一)
先说明一下MPU,MPU有很多含义,我们常见的有:MPU:Memory Protection Unit,内存保护单元(本文描述的内容);MPU:Microprocessor Unit,微处理器;MPU-6050 陀螺仪 跟这个就更是差了十万八千里了所以请不要搞混MPUMPU,即内存保护单元,可以设置不同存储区域的存储器访问特性(如只支持特权访问或全访问)和存储器属性(如可缓存、可缓冲、可共享),对存储器(主要是内存和外设)提供保护,从而提高系统可靠性通过这些规则可以实现如下功能◆ 防止不受信原创 2022-03-23 17:00:34 · 15596 阅读 · 2 评论 -
STM32H7---高速缓存Cache(二)
上一讲我们说了cache的一些基本原理,这一讲我们来说说H7的cache配置首先来看下H7的默认内存地址映射范围:其中,WT 表示 Write-through(透写),WB 表示 Write-back(回写),WA 表示 Write-allocate(写分配),没有明确标注 WA 的就是 RA(读分配)。XN 的意思是 Execute-Never, 其含义为如果相应的地址空间是 XN,是绝不允许执行代码的。存储器类型为 Normal 的才能使用 cache,并且 TCM 接口是 not cachea原创 2022-03-23 10:15:56 · 14236 阅读 · 12 评论 -
STM32H7---高速缓存Cache(一)
引言:在使用STM32H7 跟F7系列芯片的时候经常看到第一句初始化就是Cache_Enable(); //打开L1-Cache//使能CPU的L1-Cachevoid Cache_Enable(void){ SCB_EnableICache();//使能I-Cache SCB_EnableDCache();//使能D-Cache SCB->CACR|=1<<2; //强制D-Cache透写,如不开启,实际使用中可能遇到原创 2022-03-22 21:27:08 · 16494 阅读 · 5 评论 -
STM32H7时钟树RCC分析--- CubeMx配置(三)
前言:之前我们说了H7的时钟原理,还有HAL库的时钟配置代码,下面我们来看下CubeMx怎么配置STM32H7时钟树RCC分析—原理讲解(一)STM32H7时钟树RCC分析— HAL库配置(二)所用工具:1、芯片: STM32H743II2、STM32CubeMx软件V6.1.03、IDE: MDK-Keil5软件4、STM3H7xxHAL库1设置RCC时钟2时钟源设置cubemx的时钟设置有很多,最简单的就是我们直接选择好时钟源HSE 然后设置系统时钟频率直接按回车,软件会自动配原创 2022-03-21 19:45:20 · 15321 阅读 · 7 评论 -
STM32H7时钟树RCC分析---原理讲解(一)
STM32 有很多系列,可以满足市场的各种需求,从内核上分有 Cortex-M0、M3、M4和 M7 这几种,每个内核又大概分为主流、高性能和低功耗。F1 代表了基础型,基于Cortex-M3 内核,主频为 72MHZ,F4 代表了高性能,基于 Cortex-M4 内核,主频 180M,F7 代表了高性能,基于 Cortex-M7 内核,主频 216M。H7 代表了超高性能,基于 Cortex-M7 内核,主频400M除了内核的不同之外H7与F4区别在于1、H7允许更大的外部时钟输入,可以达到.原创 2022-03-21 11:46:42 · 24393 阅读 · 5 评论 -
STM32H7时钟树RCC分析--- HAL库配置(二)
上一讲我们说了H7时钟树的一些基本概念,现在的话我们来用HAL库和CubeMx配置一下原创 2022-03-21 11:44:41 · 11808 阅读 · 0 评论 -
AT24C02 E2PROM芯片详解
24C02是一个2K Bit的串行EEPROM存储器(掉电不丢失),内部含有256个字节。在24C02里面有一个8字节的页写缓冲器。A0,A1,A2:硬件地址引脚WP:写保护引脚,接高电平只读,接地允许读和写SCL和SDA:IIC总线可以看出对于不同大小的24Cxx,具有不同的从器件地址。由于24C02为2k容量,也就是说只需要参考图中第一行的内容:芯片的寻址:AT24C设备地址...原创 2020-08-10 14:48:08 · 30654 阅读 · 6 评论 -
一文带你详解矩阵键盘工作原理
矩阵键盘应该是经常能够用到的一类器件了,4X4矩阵键盘只需要用到8个IO口,即可完成16位按键的读取。其本质原理也就是行列扫描。本片文章将带你详细的学习矩阵键盘的原理以及代码编写。矩阵键盘本质:矩阵键盘本质是使用8个io口来进行16个按键的控制读取,可以减小io口的使用,用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上,设置一个按键。而这样的按键中按键的个数是4 X 4个。这样的行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。节约单片机的资源,其本质和独.原创 2020-08-10 14:06:19 · 104228 阅读 · 28 评论 -
【STM32】HAL库 STM32CubeMX教程十四---SPI
前言:本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用在我们的HAL库中,对硬件SPI函数做了很好的集成,使得之前SPI几百行代码,在HAL库中,只需要寥寥几行就可以完成 那么这篇文章将带你去感受下它的优异之处,这些优异的函数,也正是HAL库的优点所在所用工具:1、芯片: STM32F103ZET62、STM32CubeMx软件3、IDE:...原创 2020-07-26 15:44:10 · 104233 阅读 · 95 评论 -
XXX.C(261): error C100: unprintable character 0xA1/3 skipped
错误名称:PID.C(261): error C100: unprintable character 0xA1 skippedPID.C(261):错误C100:跳过不可打印字符0xA1错误原因:‘0xa1’ 是一个字符,ASCII码是161(16进制0xa1),因为你的程序中含有中文全角字符,KEIL无法识别。出现这样的编译错误,一般都是因为直接复制,粘贴代码造成的解决方法全角字符和ASCII码显示在屏幕上几乎是一样的,所以人眼很容易就错过了。找到对应的行数,然后删除对应的字符,然后用英文原创 2020-05-17 23:00:56 · 8366 阅读 · 0 评论 -
SPI原理超详细讲解---值得一看
什么是SPISPI 是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola(摩托罗拉)首先在其MC68HCXX系列处理器上定义的。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字...原创 2020-04-29 21:46:24 · 298285 阅读 · 50 评论 -
【STM32】HAL库 STM32CubeMX教程十三---RTC时钟
前言:本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用所用工具:1、芯片: STM32F407ZET6/ STM32F103ZET62、STM32CubeMx软件3、IDE: MDK-Keil软件4、STM32F1xx/STM32F4xxHAL库知识概括:通过本篇博客您将学到:RTC时钟原理STM32CubeMX创建...原创 2020-04-25 17:00:15 · 53687 阅读 · 94 评论 -
【STM32】RTC实时时钟,步骤超细详解,一文看懂RTC
什么是RTCRTC (Real Time Clock):实时时钟RTC是个独立的定时器。RTC模块拥有一个连续计数的计数器,在相应的软件配置下,可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和日期 RTC还包含用于管理低功耗模式的自动唤醒单元。在断电情况下 RTC仍可以独立运行 只要芯片的备用电源一直供电,RTC上的时间会一直走。RTC实质是一个掉电后还继续运行...原创 2020-04-24 23:01:42 · 124525 阅读 · 13 评论 -
【STM32】HAL库 STM32CubeMX教程十二---IIC(读取AT24C02 )
IIC 简介IIC(Inter-Integrated Circuit)总线是一种由NXP(原PHILIPS)公司开发的两线式串行总线,用于连接微控制器及其外围设备。多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传送,高速 IIC 总线一般可达 400kbps 以上。PS: 这里要注...原创 2020-04-18 14:44:45 · 108070 阅读 · 78 评论 -
IIC原理超详细讲解---值得一看
文章目录IIC 简介IIC的物理层IIC的高阻态IIC物理层总结:IIC的协议层IIC 总线时序图初始(空闲)状态开始信号:停止信号数据有效性应答信号IIC数据传送数据传送格式IIC发送数据IIC读数据:以AT24C02为例子软件IIC和硬件IICIIC 简介 IIC(Inter-Integrated Circuit)总线是一种由NXP...原创 2020-04-11 16:30:10 · 291777 阅读 · 154 评论 -
STM32 HAL CubeMX 串口IDLE接收空闲中断+DMA
关于DMA原理部分讲解,及CubeMx配置部分,请参考该文章【STM32】HAL库 STM32CubeMX教程十一—DMA (串口DMA发送接收)本篇文章我们仅针对例程进行详解剖析本篇文章提供两种方法:一种是 :IDLE 接收空闲中断+DMA一种是: IDLE 接收空闲中断+RXNE接收数据中断都可完成串口数据的收发知识点介绍:STM32 IDLE 接收空闲中断功能:在使用...原创 2020-03-22 11:01:56 · 57785 阅读 · 68 评论 -
【STM32】HAL库 STM32CubeMX教程十一---DMA (串口DMA发送接收)
前言:本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用所用工具:1、芯片: STM32F407ZET6/ STM32F103ZET62、STM32CubeMx软件3、IDE: MDK-Keil软件4、STM32F1xx/STM32F4xxHAL库知识概括:通过本篇博客您将学到:DMA工作原理STM32CubeMX创建...原创 2020-03-21 17:11:30 · 154513 阅读 · 108 评论 -
【STM32】 DMA原理,步骤超细详解,一文看懂DMA
DMA的基本介绍什么是DMA (DMA的基本定义)DMA,全称Direct Memory Access,即直接存储器访问。DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。我们知道CPU有转移数据、计算、控制程序转移等很多功能,系统运作的核心就是CPU,CPU无时不刻的在处理着大量的事务,但有些事情却没有那么重要,比方说数据的...原创 2020-03-19 21:50:24 · 286856 阅读 · 73 评论 -
pwm控制电机转速原理浅析
所谓PWM就是脉宽调制器,通过调制器给电机提供一个具有一定频率的脉冲宽度可调的脉冲电。脉冲宽度越大即占空比越大,提供给电机的平均电压越大,电机转速就高。反之脉冲宽度越小,则占空比越越小。提供给电机的平均电压越小,电机转速就低。...原创 2020-01-29 16:26:23 · 56960 阅读 · 13 评论 -
PWM原理 PWM频率与占空比详解
什么是PWM 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。 ]...原创 2020-01-28 22:38:34 · 462558 阅读 · 141 评论 -
STM32自锁如何解锁?(解锁方法)No Cortex-M SW Device Found/HardFault_Handler
在芯片锁住的时候,我们首先要查看是那种错误,正常情况下,你在Keil下载时遇到错误应该是这样的找不到Cortex™-M内核Flash下载失败打开J-Link-CommanderSTM32单片机一般的连接方式是**主闪存存储器(flash)**启动模式,即BOOT0为0,这样在用JTAG或SWD写进程序的时候,如果该程序工程中芯片选型不正确或着程序中复用了JTAG或SW复用引脚导致程...原创 2019-11-20 19:42:22 · 17366 阅读 · 6 评论 -
【STM32】HAL库 STM32CubeMX教程十---DAC
前言:本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用所用工具:1、芯片: STM32F407ZET6/ STM32F103ZET62、STM32CubeMx软件3、IDE: MDK-Keil软件4、STM32F1xx/STM32F4xxHAL库知识概括:通过本篇博客您将学到:DAC工作原理STM32CubeMX创建...原创 2019-10-16 17:46:06 · 42779 阅读 · 32 评论 -
【STM32】系统时钟RCC详解(超详细,超全面)
1什么是时钟时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令。时钟系统就是CPU的脉搏,决定cpu速率,像人的心跳一样 只有有了心跳,人才能做其他的事情,而单片机有了时钟,才能够运行执行指令,才能够做其他的处理 (点灯,串口,ADC),时钟的重要性不言而喻。为什么 STM32 要有多个时钟源呢?STM32本身十分复杂,外设非常多 但我们实际使用的时候只会用到有...原创 2019-08-08 15:42:35 · 251859 阅读 · 79 评论 -
【STM32】STM32F4 GPIO八种模式及工作原理详解
1 GPIO简介GPIO,即通用I/O(输入/输出)端口,是STM32可控制的引脚。STM32芯片的GPIO引脚与外部设备连接起来,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。STM32F407有7组IO。分别为GPIOA~GPIOG,每组IO有16个IO口,共有112个IO口 通常称为PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中x为0-15。 并且F4...原创 2019-08-12 10:13:27 · 94227 阅读 · 42 评论 -
【STM32】STM32F4 CAN2只能发送无法接收问题解决
解决方法:1在使能CAN2时钟之前,需要先使能CAN1的时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); //先使能CAN1RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2, ENABLE); //再使能CAN22.can2筛选器组从14开始 范围为14-27CAN_F...原创 2019-08-08 17:47:56 · 8511 阅读 · 2 评论 -
【STM32】STM32 CubeMx使用教程一--安装教程
一、STM32CubeMX 简介1、STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高开发效率。STM32CubeMX几乎覆盖了STM32 全系列芯片。在CubeMX上,通过傻瓜化的操作便能实现相关配置,最终能够生成C语言代码,支持...原创 2019-08-09 09:01:48 · 310976 阅读 · 72 评论 -
【STM32】STM32CubeMX教程二--基本使用(新建工程点亮LED灯)
前言在配置好CubeMX之后,就是新建工程的开始了,那么首先我们需要一些准备,本片博客我们会很详细的介绍STM32CubeMx的基本使用和如何创建一个新的工程并且点亮LED灯 面向初学者 如果您想着快速实现工程的创建,可以直接跳过功能介绍,观看工程创建一栏并且,在新建工程时,我们分为了具体流程1~7 如果您不想看每部分的讲解,直接按照流程操作即可,5分钟即可成功点亮LED灯安装...原创 2019-08-09 19:21:32 · 261716 阅读 · 126 评论 -
【STM32】 定时器---正交解码编码器模式详解
增量式编码器增量式编码器也成为正交编码器,是通过两个信号线的脉冲输出来进行数据处理,一个输出脉冲信号就对应于一个增量位移,编码器每转动固定的位移,就会产生一个脉冲信号 通过读取单位时间脉冲信号的数量,便可以达到测速的效果(v=s/t),通过对脉冲信号的累加,和编码器的码盘的周长(转一圈对应距离) 便可以达到计算行走距离的效果(s=n*d)编码器信号:A 脉冲输出 B 脉冲输出...原创 2019-08-07 20:53:24 · 61367 阅读 · 48 评论 -
【STM32】HAL库 STM32CubeMX教程三----外部中断(HAL库GPIO讲解)
前言上一节我们讲解了STM32CubeMX的基本使用和工程的配置,那么这一节我们正式来学习CubeMX配置STM32的各个外设功能了今天我们会详细的带你学习STM32CubeMX配置外部中断,并且讲解HAL库的GPIO的各种函数,带你学习不一样的STM32如果还没有配置过工程,请参看上一篇博客《STM32CubeMX教程二--基本使用(新建工程点亮LED灯)》那么话不多说,我们开...原创 2019-08-10 09:45:02 · 206778 阅读 · 137 评论 -
【STM32】HAL库 STM32CubeMX教程八---定时器输入捕获
前言:本系列教程将外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用所用工具:1、芯片:STM32F407ZET6/STM32F103ZET62、STM32CubeMx软件3、IDE: MDK-Keil软件4、STM32F1xx/STM32F4xxHAL库5知识概括:通过本篇博客您将学到:SMT32定时器输...原创 2019-08-21 08:53:15 · 107326 阅读 · 95 评论