- 博客(24)
- 收藏
- 关注
原创 FreeRTOS学习笔记之调度机制
在讲解调度原理之前,先看一下STM32内核通用寄存器,Cortex-M3和 Cortex-M4处理器的寄存器组中有16个寄存器,其中13个为32位通用目的寄存器,其他3个则有特殊用途在进行其他的数据处理时,寄存器组中可以临时存储一些数据变量,而无须更新到系统存储器及在使用时将它们读回,这种方式一般被称作“加载一存储架构”通用目的寄存器 R0-R7被称为低组寄存器。所有指令都能访问它们。它们的字长全是 32 位,复位后的初始值是不可预料的通用目的寄存器 R8-R12被称为高组寄存器。
2025-07-23 22:12:32
978
原创 FreeRTOS学习笔记之内存管理
内存碎片化指的是内存被分割成许多小块,相邻的空闲内存无法合并,虽然总的空闲内存足够,但没有一个连续的空闲块能满足当前分配请求的情况。碎片化分为两种:外部碎片:当空闲内存分散在许多不连续的小块中,导致无法分配较大的连续内存块内部碎片:分配的内存块比实际请求的大,导致块内部分内存未被使用。
2025-07-20 19:02:05
503
原创 FreeRTOS学习笔记之队列
队列是为了任务与任务、任务与中断之间的通信而准备的,可以在任务与任务、任务与中断之间消息传递,队列中可以存储有限的、大小固定的数据项目。通常队列采用先进先出的存储缓冲机制(FIFO)往队列中发送数据称为入队,从队列中读取数据称为出队FreeRTOS中队列是通过值传递(默认)进行存储的,如果大数据的时候,也可以通过数据引用(只传递数据的指针)进行存储队列不属于某个任务,任何任务与中断都可以向队列读取/发送数据。
2025-07-19 20:05:49
978
1
原创 FreeRTOS学习笔记之任务调度
FreeRTOS 的任务(Task)是其核心概念之一,本质上是一个独立的线程或执行单元。每个任务都有自己的执行上下文(堆栈、寄存器值等),并能在 FreeRTOS 内核的调度下,以协作式或抢占式方式运行而言,CPU 在同一时刻只能够处理一个任务,但是多任务系统的任务调度器会根据相关的任务调度算法,将 CPU 的使用权分配给任务,在任务获取 CPU 使用权之后的极短时间(宏观角度)后,任务调度器又会将 CPU 的使用权分配给其他任务,如此往复,在宏观的角度看来,就像是多个任务同时运行了一样。
2025-07-16 18:02:18
906
原创 STM32F103之存储/启动流程
STM32单片机内部的FLASH为 NOR FLASH。Flash 相对容量大,掉电数据不丢失,主要用来存储代码,以及一些掉电不丢失的用户数据;内部的 RAM 为 SRAM。无需刷新,功耗较低,RAM相对容量小,速度快,掉电数据丢失,其作用是用来存取各种动态的输入输出数据、中间计算结果以及与外部存储器交换的数据和暂存数据。STM32大容量flash。
2025-07-11 23:01:55
1012
原创 STM32F103之ModBus\RS232\RS422\RS485
RS-232 是美国电子工业协会EIA制定的一种串行物理接口标准。全称是 “数据终端设备(DTE)和数据通信设备(DCE)之间串行二进制数据交换接口技术标准”。RS(Recommended Standard)是英文“推荐标准”的缩写,232为标识号接口特性常用的串口接头有两种,一种是9针串口(简称DB-9),一种是25针串口(简称DB-25)。RS-232C标准接口有25条线,其中,4条数据线、11条控制线、3条定时线以及7条备用和未定义线。那么,这些信号线在9针串口和25针串口的管脚上是如何分配的呢?
2025-07-10 23:11:27
797
原创 STM32F103之CAN总线
CAN总线(Controller Area Network Bus)控制器局域网总线,由BOSCH公司开发的一种简介易用、传输速度快、易扩展、可靠性高的通信总线,广泛应用于汽车、嵌入式、工业控制等领域特点:<1>两根通信线(CAN_H,CAN_L),线路少,无需共地;<2>差分信号通信,抗干扰能力强<3>高速CAN(ISO11898):1125k~1Mbps,<40m<4>低速CAN(ISO11519):10k~125kbps,<1km(无需时钟线,通信速率设备各自约定),
2025-07-09 20:04:20
1431
原创 STM32F103之硬件I2C读写MPU6050
1>STM32内部集成了硬件I2C收发电路,可以由硬件自动自行时钟生成、起始终止条件生成、应答为收发、数据收发功能,减轻CPU的负担<2>支持对主机模型<3>支持7位/10位地址模型<4>支持不同的的通信速度,标准速度(),快速(),高速(),速度向下兼容<5>支持DMA<6>兼容SMBus协议<7>一般用于低速外设通信<8>SDA上电平只在时钟的高电平周期有效。
2025-07-03 17:19:20
589
原创 STM32F103之软件模拟I2C读写MPU6050/AT24C02
3.1 简介<1>MPU6050是一个六轴姿态传感器,可以测量芯片自身的X\Y\Z轴的加速度、角速度参数,通过数据融合,可以进一步得到姿态角,常应用于平衡车、飞行器等需要检测自信姿态的场景<2>3轴加速度计(Accelerometer),测量X、Y、Z轴的加速度(加速度计具有静态稳定性,不具有动态稳定性)<3>3轴陀螺仪传感器(Gyroscope),测量X、Y、Z轴的角速度(陀螺仪计具有动态稳定性,不具有静态稳定性电路图MPU6050 原理图引脚定义。
2025-07-01 20:59:57
1027
原创 STM32F103之UART上位机通信
通用同步异步收发器(USART:Universal Synchronous/Asynchronous Receiver/Transmitter):串行、全双工、同步/异步通信(USART可支持同步通信,UART只支持异步通信)发送和接收共用的可编程波特率可编程数据字长度(8位或9位)(常用8位)可配置的停止位-支持1或2个停止位(常用1位停止位)可配置奇偶校验位(一般不用)
2025-06-30 17:01:52
668
原创 STM32F103之SPI软件读写W25Q64
W25Q64(Nor flash)、 24位地址,64Mbit/8MByte、是一种低成本、小型化、使用简单的非易失性存储器,常用于数据存储、字库存储、固件程序存储等场景时钟频率:最大80MHz(STM32F103系统时钟为72MHz)、160MHz(MOSI,MISO同时发送,同时接受)、320MHz(将引脚DO、DI、WP、HOLD同时接收或发送)WP: 写保护,低电平有效,当为低电平时,不可写HOLD:数据保持、低电平有效;
2025-06-28 18:48:01
1618
原创 STM32F103之SPI硬件读写W25Q64
SPI(Serial Peripheral Interface)串行外设接口总线(SPI)最早由Motorola首先提出,采用主从模式(Master—Slave)架构,支持一个或多个Slave设备;广泛应用于MCU和外设模块如E2PROM、ADC、显示驱动器等的连接。<1>通信接口特性:半/全双工、同步、串行<2>SPI通信接口有4个引脚:MOSI,MISO,SCLK,NSSMOSI(Master Out Slave In):主机输出从机输入(发送端口) - USART_TX(相当于)
2025-06-27 16:14:24
1095
原创 STM32F103之低功耗
STM32微控制器低功耗设计摘要 STM32系列MCU为电池供电设备提供了完善的低功耗解决方案。硬件方面,推荐使用STM32L系列,其待机电流低至300nA;通过多电源域设计、低功耗外设和优化电源电路(如LDO、DC-DC转换器)可显著降低功耗。软件优化包括动态调节时钟频率、使用低功耗外设模式和事件驱动架构。STM32提供三种低功耗模式:睡眠模式(保留所有外设,唤醒时间最短)、停机模式(关闭时钟,保留SRAM)和待机模式(最低功耗,相当于复位)。不同模式下唤醒源和功耗特性各异,开发者需根据应用场景(如传感器
2025-06-25 23:39:22
981
原创 STM32F103之独立看门狗/窗口看门狗
1>能产生复位信号和提前唤醒中断的7位递减计数器<2>时钟源来自于系统总线时钟<2>复位条件①计数器从0x40减到0x3F时会产生复位(即CNT的第6位变为0时)②计数器的值大于W[6:0]的值时喂狗③提前唤醒中断(EWI): 当计数器等于 0x40时可产生在窗口期内进行重装载计数器的值,防止复位用于监测单片机运行程序是否精准,主要用于检测软件异常需要精准监测程序运行时间的场合。
2025-06-23 20:51:34
1069
原创 STM32F103之UART+ADC+DMA(从0到1)
目前想要通过上位机的串口助手向板子发送格式为“0xAA+指令类型+指令+0XFF”的数据,指令类型包括设置指令与获取指令,设置指令就是设置LED的开关等,获取指令就是获取ADC转换的值;要求:①上位机发送的指令通过DMA给到板子;②ADC转换的值通过DMA搬运到内存,当得到获取指令后,DMA将ADC转换的值搬运UART_Tx,并在串口助手上输出;
2025-06-22 13:15:34
1362
原创 STM32F103之DMA+ADC
DMA:直接存储器存取(Direct Memory Access)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。两个DMA控制器有12个通道(DMA1有7个通道, DMA2有5个通道),每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA请求的优先权。
2025-06-19 21:31:14
1322
原创 STM32F103之位段操作
在STM32(基于ARM Cortex-M内核)中,位带(Bit-Banding)/位段是一种通过内存映射实现对单个比特位进行原子操作的硬件机制。它允许开发者直接读写寄存器或内存中的单个比特位,而无需执行传统的“读-修改-写”操作(避免多任务/中断环境下的竞争风险)对于Cortex-M内核来说,可以进行位段操作的存储器区有两个:<1>SRAM位段①位段区 0x20000000--0x20100000②位段别名区 0x22000000--0x23FFFFFF<2>外设位段。
2025-06-18 12:20:21
773
原创 STM32F103之ADC--电位器/内部温度
ADC即模数转换器(Analog-to-Digital Converter),是一种将连续的模拟信号转换为离散的数字信号的电子设备。在现实世界中,诸如温度、声音、光线强度等物理量通常以模拟信号的形式存在,而计算机、数字信号处理器等数字系统只能处理数字信号。ADC的作用就是搭建起模拟世界与数字世界之间的桥梁,使得这些模拟信号能够被数字系统识别、存储、处理和分析。
2025-06-15 23:04:29
1368
原创 STM32F103之(HC-SR04)超声波测距--四种方法
HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。
2025-06-14 23:19:21
1684
原创 STM32F103之定时器(TIM2~TIM5)
stm32f103共有八个定时器,高级定时器(TIM1,TIM8);基本定时器(TIM6,TIM7);通过定时器(TIM2~TIM5);本章重点讲解通用定时器的时钟模式,捕获输入,比较输出。
2025-06-10 21:01:19
1736
原创 STM32F103之定时器(TIM6,TIM7)
STM32F103的定时器分为基本定时器(TIM6-7)、通用定时器(TIM2-5)和高级定时器(TIM1,8),均采用72MHz时钟。基本定时器仅支持递增计数,包含16位自动装载计数器、预分频器和时基单元。使用时需配置预分频器(PSC)和自动重装载寄存器(ARR),并通过手动产生更新事件(设置UG位)将值加载到影子寄存器。定时器溢出时会触发中断,需清除UIF标志位。代码实现包括时钟使能、时基初始化、影子寄存器配置、事件生成和中断设置等步骤。基本定时器常用于DAC触发和时间基准功能。
2025-06-07 17:03:03
1298
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人