
STM32学习笔记
文章平均质量分 95
时光の尘
这个作者很懒,什么都没留下…
展开
-
STM32学习·HAL库相关(三)·如何在STM32CubeMX新建工程
CMSIS (微控制器软件接口标准):Cortex Microcontroller Software Interface Standard,是由ARM和与其合作的芯片厂商、软件工具厂商,共同制定的标准。ST 为了方便用户开发 STM32芯片开发提供了三种库:标准外设库 (Standard Peripheral Libraries)HAL库(硬件抽象层):Hardware Abstraction LayerLL库:Low Layer我先随便找一个文件夹,后续会告诉如何生成:文件夹名称作用。原创 2025-02-11 04:00:00 · 1513 阅读 · 0 评论 -
STM32学习·HAL库相关(二)·STM32存储器与寄存器映射
寄存器是单片机内部一种特殊的内存,可以实现对单片机各个功能的控制。寄存器是特殊的存储器,给寄存器地址命名的过程,就叫寄存器映射。(1)32位的单片机可以有32根地址线(每根地址线有两种状态:导通或不导通)(2)单片机内存地址访问的存储单元是按字节编址的(而不是bit)(2)外设基于总线基地址的偏移量(PERIPH_OFFSET)STM32寻址大小:2^32= 4G(字节)(3)寄存器相对外设基地址的偏移量(REG_OFFSET)(1)总线基地址(BUS_BASE_ADDR)选项字节,配置读保护等。原创 2025-02-10 05:00:00 · 737 阅读 · 0 评论 -
STM32学习·HAL库相关(一)·初始STM32以及C语言基础知识复习
stdint.h 是从 C99 中引进的一个标准 C 库的文件路径:D:\MDK5.34\ARM\ARMCC\include宏定义可以:提高效率、可读性、易改性,核心是替换#define 标识符 字符串标识符:宏定义的名字字符串:常数、表达式、格式串等}while(0)建议大家使用 do{ ... }while(0) 来 构造宏定义。这样不会受到大括号、分号、运算符优先级等的影响,总是会按你期望的方式调用运行。原创 2025-02-10 03:00:00 · 1244 阅读 · 0 评论 -
STM32F1之内部FLASH存储
STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分,通过闪存存储器接口(外设)可以对程序存储器和选项字节进行擦除和编程。类型起始地址存储器用途ROM程序存储器Flash存储C语言编译后的程序代码系统存储器存储C语言编译后的程序代码选项字节存储一些独立于程序代码的配置参数RAM运行内存SRAM存储运行过程中的临时变量运行内存SRAM存储各个外设的配置参数内核外设寄存器存储内核各个外设的配置参数。原创 2025-01-16 08:59:20 · 962 阅读 · 0 评论 -
STM32F1之RS485通讯协议·MODBUS-RTU超详细解析
Modbus 是一种串 行通信协议,是Modicon 于 1979年,为使用可编程逻辑控制器(PLC)而发表的。Modbus是工业领域通信协议的业界标准,并且现在是工业电子设备之间相当常用的连接方式。Modbus 比其他通信协议使用的更广泛的主要原因有:(1)公开发表并且无版税要求;(2)相对容易的工业网络部署;(3)对供应商来说,修改移动原生的位元或字节限制较少。原创 2024-05-21 04:00:00 · 4253 阅读 · 4 评论 -
基于STM32的Printf重定向(串口输出配置)
MicroLIB 是 STM32 的一个轻量级 C 库,它对内存和资源使用进行了优化。它使得 printf 等标准库函数能够在嵌入式系统中正常工作,若是不勾选可能会出现卡死的情况。在标准 C 库中, 定义了与输入输出相关的函数。在这里声明的作用是告诉编译器:在程序中会使用一个名为 printf 的函数,并且该函数的定义将会在其他地方提供。注意到这里重定向已经完成了,下面是一些拓展。原创 2024-11-19 05:00:00 · 1769 阅读 · 0 评论 -
八万字解析CAN总线协议·从入门到实战保姆级教学(源码可直接移植使用)
CAN总线(Controller Area Network Bus)控制器局域网总线,是由BOSCH公司开发的一种简洁易用、传输速度快、易扩展、可靠性高的串行通信总线,广泛应用于汽车、嵌入式、工业控制等领域。文章带你一步一步了解CAN总线,直到STM32上实战。原创 2024-11-18 06:00:00 · 7086 阅读 · 6 评论 -
五万字逐步解析CAN总线在STM32F1系列的使用(代码可直接移植)
从物理层逐层解析STM32F103C8T6的CAN外设,以及其如何使用,通过不同模式进行代码的编写,内附源码可直接移植使用原创 2024-11-14 06:00:00 · 1490 阅读 · 0 评论 -
STM32F1系列CAN外设详解·代码编写(可直接移植)
库函数解读,各模式代码编写,内附源码可直接移植原创 2024-11-14 05:00:00 · 1038 阅读 · 0 评论 -
STM32F1系列CAN外设详解·标识符过滤器的使用以及各模式的介绍
下面我们开始在STM32单片机上对其进行使用,在使用前我们先来了解一下STM32的一些CAN外设。STM32内置bxCAN外设(CAN控制器),支持CAN2.0A和2.0B,可以自动发送CAN报文和按照过滤器自动接收指定CAN报文,程序只需处理报文数据而无需关注总线的电平细节。原创 2024-11-13 06:00:00 · 1138 阅读 · 0 评论 -
CAN总线位同步的使用以及总线仲裁规则详解
CAN总线没有时钟线,总线上的所有设备通过约定波特率的方式确定每一个数据位的时长,以约定的位时长每隔以约定的位时长每隔,输入一个数据位,理想状态下,接收方能依次采样到发送方发出的每个数据位,且采样点位于数据位中心附近。原创 2024-11-13 05:00:00 · 1545 阅读 · 0 评论 -
CAN总线数据帧格式详细介绍
数据帧、遥控帧、错误帧、过载帧、帧间隔详细介绍,以及使用原创 2024-11-12 06:00:00 · 3757 阅读 · 1 评论 -
CAN总线物理层特性详细分析
CAN总线(Controller Area Network Bus)控制器局域网总线,是由BOSCH公司开发的一种简洁易用、传输速度快、易扩展、可靠性高的串行通信总线,广泛应用于汽车、嵌入式、工业控制等领域。原创 2024-11-12 05:00:00 · 1796 阅读 · 0 评论 -
基于STM32通过TM1637驱动4位数码管详细解析(可直接移植使用)
内附源码,可直接移植使用。原创 2024-11-11 05:00:00 · 4927 阅读 · 7 评论 -
实时时钟芯片DS1302在STM32系列使用详解
内附源码可直接移植使用。原创 2024-10-27 11:40:45 · 3136 阅读 · 2 评论 -
ADC在STM32F1系列的使用详解
ADC全称是(Analog-to-Digital Converter)模拟-数字转换器,一般我们把模拟信号(Analog signal) 用A来进行简写,数字信号(digital signal) 用D来表示。主要用于将连续传输的模拟信号转换为数字信号,便于数字系统(如中央处理器CPU、微控制器MCU等)对传输信息进行快速处理和分析。模拟信号是指用连续变化的物理量所表达的信息,如温度、湿度、压力、电压、电流等。原创 2024-10-22 05:00:00 · 2244 阅读 · 0 评论 -
ADC模数转换器详细解析
ADC全称是(Analog-to-Digital Converter)模拟-数字转换器,一般我们把模拟信号(Analog signal) 用A来进行简写,数字信号(digital signal) 用D来表示。主要用于将连续传输的模拟信号转换为数字信号,便于数字系统(如中央处理器CPU、微控制器MCU等)对传输信息进行快速处理和分析。自然界绝大部分都是模拟信号,例如压力或温度的测量,为了方便储存,处理和传输,我们会通过ADC把模拟信号转化成数字形式给计算机处理。采样、保持、量化和编码。采样。原创 2024-10-22 04:00:00 · 4003 阅读 · 0 评论 -
基于STM32通过SN74HC595驱动4位数码管详细解析(可直接移植)
内附源码可直接移植,以及如何计算共阳极和共阴极数码管的码值,数码管的内部基本单元是发光二极管,数码管是发光器件之一,内部由七个条形发光二极管(a、b、c、d、e、f、g)和一个圆点发光二极管(dp)构成。按照数码管的公共接线不同,数码管又可分类为共阴极数码管和共阳极数码管两种,共阴极数码管的公共端接地,而共阳极数码管的公共端接电源。原创 2024-09-09 05:00:00 · 5272 阅读 · 26 评论 -
简易版·江协科技/江科大STM32代码移植FreeRTOS实时操作系统
这个下载文件不好附链接,以上链接的“1.3 FreeRTOS资料获取”末尾讲了原因,文件太多了,上传和下载特别慢,并且下载完解压也不好解压,要解压的话可能要喜提360全家桶了,我们这里主要学习FreeRTOS的编程思路,以STM32为例,可以先将不需要的文件移除出去,文末会放一个移植好的链接。(PS:“portable”文件,其是针对不同芯片,不同端口的一些文件,这里是根据使用Keil的环境进行选择的,若是其他环境,需要根据自己使用环境进行更改环境进行配置)原创 2024-08-19 06:00:00 · 2121 阅读 · 4 评论 -
STM32F1之SysTick系统定时器详细解析
SysTick—系统定时器是属于 CM3 内核中的一个外设,内嵌在 NVIC 中。系统定时器是一个 24bit的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置系统时钟 SYSCLK等于 72M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次中断,以此循环往复。因为 SysTick 是属于 CM3 内核的外设,所以所有基于 CM3 内核的单片机都具有这个系统定时器,使得软件在 CM3 单片机中可以很容易的移植。原创 2024-08-08 05:00:00 · 1240 阅读 · 1 评论 -
STM32F1之OV7725摄像头·SCCB总线详解(附带源码编写)
摄像头中的 SIO_C 和 SIO_D 引脚直接连接到 STM32 普通的 GPIO,它们不具有硬件I2C 的功能,所以在后面的代码中采用模拟 I2C 时序,实际上直接使用硬件 I2C 是完全可以实现 SCCB 协议的,本设计采用模拟 I2C 是芯片资源分配妥协的结果原创 2024-05-27 05:00:00 · 1135 阅读 · 2 评论 -
STM32F1之OV7725摄像头·像素数据输出时序、FIFO 读写时序以及摄像头的驱动原理详解
(3) 随着 OV7725 继续按 VGA 时序输出图像数据,它在传输每行有效数据时, HREF引脚都会持续输出高电平,由于 WEN 和 HREF 同时为高电平输入至与非门,使得其连接到 FIFO WE 引脚的输出为低电平,允许向 FIFO 写入数据,所以在这期间,OV7725 通过它的 PCLK 和 D[0:7]信号线把图像数据存储到 FIFO 中,由于前面复位了写指针,所以图像数据是从 FIFO 的 0 地址开始记录的;当 WE 管脚为高电平时,关闭输入,DI[0:7]的数据不会被写入 FIFO。原创 2024-05-26 09:27:40 · 1907 阅读 · 0 评论 -
STM32F1之OV7725摄像头
在各类信息中,图像含有最丰富的信息,作为机器视觉领域的核心部件,摄像头被广泛地应用在安防、探险以及车牌检测等场合。摄像头按输出信号的类型来看可以分为数字摄像头和模拟摄像头①输出信号类型:数字摄像头输出信号为数字信号,模拟摄像头输出信号为标准的模拟信号。②接口类型:数字摄像头有 usb 接口(比如常见的 pc 端免驱摄像头)、IEE1394 火线接口(由苹果公司领导的开发联盟开发的一种高速度传送接口,数据传输率高达 800Mbps)、千兆网接口(网络摄像头)。原创 2024-05-26 05:00:00 · 3277 阅读 · 0 评论 -
如何通过软件SPI读写W25Q64
W25Qxx系列是一种低成本、小型化、使用简单的非易失性存储器,常应用于数据存储、字库存储、固件程序存储等场景。非易失性存储器(NVM)数据持久性:即使在断电的情况下,数据也能保持不丢失。常见类型:闪存(如USB闪存盘、固态硬盘)、硬盘驱动器(HDD)、只读存储器(ROM)、磁带等。应用场景:适用于需要长期保存数据的场合,如计算机硬盘、手机存储、固态硬盘等。易失性存储器(Volatile Memory)数据持久性:在断电时,存储在其中的数据会丢失。常见类型。原创 2024-05-25 06:00:00 · 1956 阅读 · 0 评论 -
STM32F1之SPI通信·软件SPI代码编写
SPI(Serial Peripheral Interface)是由Motorola公司开发的一种通用数据总线。同步,全双工。支持总线挂载多设备(一主多从)。四根通信线:SCK(Serial Clock)串行时钟线;MOSI(Master Output Slave Input)主机输出从机输入;MISO(Master Input Slave Output)主机输入从机输出;SS(Slave Select)从机选择(若是有多个从机,有几个从机就有几条SS线,可见硬件电路中的连接图)。原创 2024-05-25 03:00:00 · 1857 阅读 · 1 评论 -
如何通过软件IIC使用MPU6050陀螺仪
MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡车、飞行器等需要检测自身姿态的场景。3轴加速度计(Accelerometer) :测量X、Y、Z轴的加速度3轴陀螺仪传感器(Gyroscope):测量X、Y、Z轴的角速度。原创 2024-05-24 06:00:00 · 1101 阅读 · 0 评论 -
STM32F1之I2C通信·软件I2C代码编写
SCL低电平期间,从机将数据位依次放到SDA线上(高位先行),然后释放SCL,主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可接收一个字节(主机在接收之前,需要释放SDA)。发送一个字节: SCL低电平期间,主机将数据位依次放到SDA线上(高位先行) ,然后释放SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可发送一个字节。终止条件下,SCL高电平期间,SDA从低电平切换到高电平。原创 2024-05-24 04:00:00 · 1692 阅读 · 0 评论 -
STM32F1之FLASH闪存
STM32F1系列的FLASH包含程序存储器系统存储器和选项字节三个部分,通过闪存存储器接口(外设)可以对程序存储器和选项字节进行擦除和编程。读写FLASH的用途:利用程序存储器的剩余空间来保存掉电不丢失的用户数据;通过在程序中编程(IAP),实现程序的自我更新。在线编程(In-Circuit Programming – ICP)用于更新程序存储器的全部内容,它通过JTAG、SWD协议或系统加载程序(Bootloader)下载程序。原创 2024-05-06 04:00:00 · 2252 阅读 · 0 评论 -
STM32F1之I2C通信
I2C(Inter-Integrated Circuit)总线是由NXP Semiconductors(前身为Philips Semiconductor)公司开发的一种串行通信总线。它是一种用于连接微控制器和外部设备的串行通信协议,常用于连接各种集成电路、传感器、存储器芯片等外围设备。两根通信线:SCL(Serial Clock)、SDA(Serial Data)。SCL是时钟线,用于同步数据传输的时钟信号;SDA是数据线,用于传输实际的数据。原创 2024-04-22 03:00:00 · 1337 阅读 · 0 评论 -
新建STM32CubeMX工程步骤(电亮LED灯)
在 STM32 微控制器中,MCO 是一个非常有用的功能,可以将系统时钟(HCLK)或者外部时钟信号输出到指定的引脚上,用于外部设备的时钟同步或者调试等目的。通过配置 MCO 功能,可以选择输出不同频率的时钟信号,并且可以选择输出源为系统时钟(HCLK)、外部晶振时钟、PLL 时钟等。要使用 MCO 功能,通常需要在 STM32CubeMX 或者代码中进行相应的配置,设置 MCO 的输出源和输出频率。由于我使用的是STM32F103C8T6最小系统板,因此这里根据STM32F1系列的用户手册,进行配置。原创 2024-02-20 04:00:00 · 2389 阅读 · 0 评论 -
STM32学习·HAL库·STM32CubeMX系列学习(安装和使用)
STM32CubeMX 是 ST 微电子公司推出的一款图形化配置工具,用于快速启动 STM32 微控制器项目开发。它可以帮助开发人员生成初始化代码、配置外设、引脚映射等,从而简化 STM32 微控制器的初始化和配置过程。STM32CubeMX可通过配置自动生成初始化代码。一些主要特点和功能包括:图形化配置界面:STM32CubeMX 提供了直观的图形化用户界面,让用户可以通过拖放和配置选项来快速设置 STM32 微控制器的参数。原创 2024-02-19 05:00:00 · 2427 阅读 · 4 评论 -
DAP下载程序(在MDK上配置DAP)以及程序调试(Keil uVision5软件的使用)
Cortex-M内核含有硬件调试模块,该模块可在取指(指令断点)或访问数据(数据断点)时停止。内核停止时,可以查询内核的内部状态和系统的外部状态。完成查询后,可恢复程序执行。灵活的SWJ-DP引脚分配。3.5.1 Call Stack窗口:查看函数调用关系&局部变量其中1是函数的类型名,2是函数的首地址,3是函数的返回类型。原创 2024-02-19 04:00:00 · 6606 阅读 · 0 评论 -
基于STM32F1的WDG (Watchdog)看门狗
看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性看门狗本质上是一个定时器,当指定时间范围内,程序没有执行喂狗(重置计数器)操作时,看门狗硬件电路就自动产生复位信号STM32内置两个看门狗。独立看门狗(IWDG) :独立工作,对时间精度要求较低窗口看门狗(WWDG) : 要求看门狗在精确计时窗口起作用。原创 2024-01-30 05:00:00 · 2249 阅读 · 0 评论 -
BKP备份寄存器、RTC实时时钟
第一路:8MHz晶振,需要注意,对于8MHz晶振,需要提前分频,由于8MHz的晶振太快,若是不进行128的分频,即便后续通过RTC的20位分频器也分不到1Hz的频率。RTC和时钟配置系统处于后备区域,系统复位时数据不清零,VDD(2.0-3.6V)断电后可借助VBAT (1.8-3.6V)供电继续走时。当有备用电源的情况下,BKP的数据主电源掉电不清零,上电复位也不清零,但是要是想进行清零操作,可以调用这个函数。BKP里主要有数据寄存器,控制寄存器,状态寄存器和RTC始终校准寄存器。原创 2024-01-28 17:02:49 · 1435 阅读 · 2 评论 -
STM32F1之RTC实时时钟(Unix时间戳)
实时时钟是一个独立的定时器。RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒后,RTC的设置和时间维持不变。系统复位后,对后备寄存器和RTC的访问被禁止,这是为了防止对后备区域(BKP)的意外写操作。执行以下操作将使能对后备寄存器和RTC的访问:● 设置寄存器RCC_APB1ENR的PWREN和BKPEN位,使能电源和后备接口时钟。原创 2024-01-27 16:45:46 · 2246 阅读 · 0 评论 -
CAN协议层详细介绍
CAN的协议层则规定了通讯逻辑。原创 2024-01-08 07:00:00 · 1325 阅读 · 4 评论 -
CAN物理层协议介绍
CAN是控制器局域网络(Controller Area Network)的简称,它是由研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO11519) ,是国际上应用最广泛的现场总线之一。CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。近年来,它具有的高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强及振动大的工业环境。原创 2024-01-08 05:00:00 · 1351 阅读 · 0 评论 -
STM32F1之CAN报文传输
产生报文的单元被称之为报文的“发送器”。此单元保持作为报文发送器直到总线出现空闲或此单元失去仲裁(ARBITRATION)为止。原创 2023-12-10 09:56:13 · 1235 阅读 · 0 评论 -
STM32F1之CAN基本概念
控制器局域网(CAN)为串行通讯协议,能有效地支持具有很高安全等级的分布实时控制。CAN 的应用范围很广,从高速的网络到低价位的多路接线都可以使用 CAN。在汽车电子行业里,使用 CAN 连接发动机控制单元、传感器、防刹车系统、等等,其传输速度可达 1 Mbit/s。同时,可以将 CAN 安装在卡车本体的电子控制系统里,诸如车灯组、电气车窗等等,用以代替接线配线装置。这本技术规范的目的是为了在任何两个 CAN 仪器之间建立兼容性。可是,兼容性有不同的方面,比如电气特性和数据转换的解释。原创 2023-12-10 09:06:06 · 1274 阅读 · 0 评论 -
STM32F1的TIM输出比较(PWM)
天下武功,唯快不破,增加频率,频闪。PWM(Pulse Width Modulation)脉冲宽度调制在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域。PWM参数: 频率 = 1 / TS 占空比 = TON / TS 分辨率 = 占空比变化步距TIM_TypeDef* TIMx:选择定时器TIM_OCInitTypeDef* TIM_OCInitStruct:输出比较参数。原创 2023-12-08 06:00:00 · 1672 阅读 · 2 评论