- 博客(29)
- 收藏
- 关注
原创 STM32F427 CubeIDE 移植 FREERTOS
本文介绍了在STM32CubeIDE 2.2.0中移植FreeRTOS至STM32F427芯片的完整流程。由于新版工具移除直接创建工程功能,采用STM32CubeMX生成基础工程后导入CubeIDE进行移植。重点包括:添加FreeRTOS内核文件、配置port.c/port.h及heap4.c、设置FreeRTOSConfig.h(时钟16MHz、32位、任务优先级等),并修改中断向量表与定时器时间基准。最后通过两个闪烁任务验证,实现LED1每500ms闪烁,LED2每2.3s循环亮灭,成功运行多任务调度。
2026-10-13 17:40:14
72
原创 【硬件SPI】STM32 AD5422芯片手册学习/例程
AD5422是一款高精度12/16位DAC芯片,支持可编程电流源(4-20mA/0-20mA/0-24mA)和电压输出(0-5V/0-10V/±5V/±10V)。本文详细介绍了其SPI接口操作:1. 写数据通过24位字(8位地址+16位数据)在SCLK上升沿传输,LATCH上升沿锁存;2. 读数据需先发送0x020001指令,再发送NOP指令获取返回值。典型操作流程包括:复位寄存器(0x56)、配置控制寄存器(0x55)、设置数据寄存器(0x01)及状态读取。文中提供了完整的SPI读写函数实现及初始化代码,
2026-06-25 17:28:49
409
原创 自我介绍 我是代码之神 胡-冰-杰
五岁同龄人还在惧怕插座电流,他有幸亲手摸过三相电,电弧在指尖滋滋跳跃,不伤分毫,自此打通电气与代码两道天关,肉身堪比硬件防护盾,电路击穿不了他分毫。世人皆知粮价听胡家,却不知掌控胡家话语权的,是一个从小通代码、肉身抗强电,以一行代码定五谷,一缕电流镇中州的,绝世代码大师。郑州藏着一个没人敢招惹的怪人,江湖名号:郑州杀手胡兵J,本名胡冰杰,圈内公认的代码之神,整片中原大地,无人敢忤逆他半分。“我五岁摸过生死一线的三相电,三岁看透0和1的世间逻辑,如今23岁,守的从来不是粮价,是中州大地,分毫不乱的秩序。
2026-06-24 15:23:52
229
原创 CMSIS-ARM_Driver架构下的SPI通信源码分析
摘要: 本文详细阐述了一个基于RXNE接收中断驱动的SPI通信框架实现方案。该方案支持普通中断和双DMA两种传输模式,适配8/16位数据帧,包含完整的错误检测机制。核心设计采用结构体管理SPI资源(SPI_RESOURCES)和传输控制块(SPI_TRANSFER_INFO),通过SPI_Send和SPI_Receive函数实现单向发送/接收操作。中断服务程序处理RXNE事件、错误状态,并调用SPI_TxData/SPI_RxData完成数据收发。DMA模式下,发送使用有效数据,接收则处理无效数据或存储有效
2026-06-18 14:35:29
200
原创 SPI通信时序分析-主/从模式的发送和接收
F407芯片SPI主从模式通信时序解析:主模式下,主机通过TXE标志控制数据发送(0xF1、0xF2等),硬件自动完成8时钟位移位,接收数据存入缓冲区(如0xA1)并置位RXNE。BSY全程高电平确保连续传输,帧间无间隔。从模式类似,但BSY会有2时钟周期低电平作为帧分隔标志,防止数据粘连。需注意单级接收缓存可能导致的覆盖丢数问题。整个过程展示高效的主控时序与硬件自动处理机制。
2026-06-17 18:41:03
187
原创 SPI数据收发的时候 TXE与RXNE标志位置位的时机
本文探讨了SPI通信中关于TXE标志位的疑问。通过分析F407手册和AI解答,指出:1)TXE检测的是发送缓存区而非移位寄存器;2)数据收发过程在移位寄存器完成,8个时钟周期后数据才会移入接收缓存区触发RXNE标志。发送和接收缓存区是独立工作的,因此TXE标志仍会正常置位。这种机制确保了SPI全双工通信的同步性。
2026-06-16 20:15:56
195
原创 CMSIS-ARM_DRIVER架构下的SPI通信-1数据“收发”
本文深入分析了STM32 F407系列SPI通信的底层驱动机制。一段看似简单的6行SPI数据收发函数,实际通过中断方式实现全双工通信:1. 核心流程由RXNE接收中断驱动,每次中断读取接收数据并填充下一发送数据;2. 通过状态寄存器busy标志实现同步,数据传输完成后清除busy标志;3. 支持8/16位数据帧格式,采用指针操作实现高效数据搬运。研究发现官方驱动采用"中断触发+状态机"的设计思路,通过CR2寄存器的RXNEIE中断使能位控制通信流程,展现了SPI外设"硬件触发+
2026-06-16 14:37:34
366
原创 STM32F407系列IWDG独立看门狗
本文介绍了独立看门狗(IWDG)的工作原理与应用。IWDG是一个基于独立RC振荡器的计数器,可在32kHz时钟下工作,当计数器归零时触发系统复位。通过定期"喂狗"重载计数值可防止复位,适用于检测程序跑飞或电磁干扰等异常情况。文章详细说明了F407芯片的IWDG配置方法,包括预分频系数设置(32分频)和重装载值计算(1000*3),实现3秒超时复位功能。最后通过实验验证,若不执行喂狗操作,系统会按预期每3秒复位一次。IWDG是系统异常处理的最后保障手段,但应尽量避免依赖它。
2026-06-15 17:26:00
368
原创 【记录】TD21S485H + MODBUS RTU 协议通信
本文介绍了RS485通信协议及其应用。首先简述了OSI七层模型,指出RS485属于物理层,定义了电气接口规范。RS485采用差分信号传输,具有抗干扰强、距离远(可达1500米)、支持多节点连接等优势。文章详细说明了RS485的接线方式和代码实现,包括初始化、数据收发控制等。然后重点讲解了Modbus RTU协议,分析了标准帧结构和功能码,并以读取输入寄存器为例,给出了请求帧和响应帧格式示例,同时提供了相应的代码实现框架。文章强调通过理解帧格式可以分析其他功能码,为RS485和Modbus协议的学习提供了实用
2026-06-13 23:29:12
408
原创 MODBUSPOLL和MODBUSSLAVE工具的使用
摘要:ModbusPoll作为主站主动发起通信,用于轮询、读写从站数据,适用于PLC测试和监控;ModbusSlave作为从站被动响应请求,常用于模拟设备和联调测试。本文重点探讨03(读保持寄存器)和04(读输入寄存器)功能码的使用,澄清了03功能码仅支持读取的特性,并通过数据帧分析证实写入操作实际转换为06功能码(写单一寄存器)实现。
2026-04-29 22:01:19
66
原创 【嵌入式】KEIL debug调试流程
DEBUG调试作为KEIL软件最重要的功能之一。从主函数开始调试的,一步一步的运行调试程序检查错误,或者直接运行到某处。
2026-03-27 11:19:47
379
原创 [嵌入式入门]一篇文章读懂STM32F103ADC采样
ADC(Analogto-Digital Converter)模拟数字转换器,是将模拟信号转换成数字信号的一种外设。我们所熟悉的温度值、电压值其实都是模拟信号,但是单片机只认识高低电平,如果我们希望单片机去处理这些模拟信号,那就需要通过 ADC 将模拟信号转换成数字信号。
2026-03-20 10:21:54
831
原创 【嵌入式】IIC时序理论分析篇
IIC总线是一种主从式同步半双工串行通信协议,核心硬件仅需SCL时钟线和SDA数据线(均需上拉电阻)。主设备(如MCU)控制通信时序,通过起始/停止信号控制通信启停,支持一主多从架构(通过7位地址区分从设备)。数据传输以字节为单位(高位在前),在SCL高电平时采样SDA状态,每个字节传输后需接收方发送ACK应答信号。典型速率100Kbps,支持标准/快速/高速三种模式。关键操作包括指定地址写入、当前地址读取和复合型指定地址读取三种数据帧格式。
2026-02-28 19:55:02
632
原创 [STM32F103标准库]嵌入式模拟平台通用定时器TIM3模PWM控制舵机模拟实验
1. 定义:PWM,就是脉冲宽度调制,也就是占空比可变的脉冲波形。 2. 适用条件:PWM所应用的场景必须为惯性系统,像led,当立即变为低电平时,led并不会瞬间熄灭,而是具有惯性,在短时间内为逐渐熄灭。 3. 应用:智能车,机器人等项目。呼吸灯、驱动电机等。
2026-02-05 17:01:08
610
原创 [STM32F103标准库]嵌入式模拟平台通用定时器TIM3模拟实验
STM32F1 系列中,除了互联型的产品,共有 8个定时器,分为基本定时器,通用定时器和高级定时器。 基本定时器 TIM6 和 TIM7 是一个 16位的只能向上计数的定时器,只能定时,没有外部 IO。 通用定时器 TIM2/3/4/5是一个 16位的可以向上/下计数的定时器,可以定时,可以输出比较,可以输入捕捉, 每个定时器有四个外部IO。高级定时器 TIM1/8是一个 16位的可以向上/下计数的定时器,可以定时,可以输出比较, 可以输入捕捉,还可以有三相电机互补输出信号,每个定时器有8 个外部 IO
2026-02-03 15:04:43
626
原创 [嵌入式STM32F407基本定时器]定时器的基本配置,PWM的配置
本期主要学习定时器的基本配置,以及周期和PWM占空比的设置。不涉及其他介绍,仅供个人理解和学习记录。代码例程来自正点原子 芯片是STM32F407系列
2026-01-31 15:51:49
733
原创 【知识点】嵌入式中联合体的常见用法
C 语言中位段 + 联合体的经典组合用法(嵌入式 BMS / 电控开发高频使用),核心目的是既可以按「单个位」精准操作 DI 信号(比如单独判断急停、告警),又可以按「16 位整数值」快速读写 / 传输整个 DI 数据(比如和外设通信、寄存器赋值),两种操作共用同一块内存,互不冲突且实时同步。
2026-01-29 20:29:12
397
原创 [STM32F103标准库]嵌入式模拟平台DMA储存器到外设实验
当我们使用从存储器到外设传输时,以串口向电脑端发送数据为例。DMA外设寄存器的地址对应的就是串口数据寄存器的地址, DMA存储器的地址就是我们自定义的变量(相当于一个缓冲区,用来存储通过串口发送到电脑的数据)的地址。方向我们设置外设为目标地址。
2026-01-25 23:33:15
446
原创 [STM32F103标准库]嵌入式模拟平台DMA储存器到储存器模拟实验
DMA(Direct Memory Access)—直接存储器存取,是单片机的一个外设,它的主要功能是用来搬数据,但是不需要占用CPU, 即在传输数据的时候,CPU可以干其他的事情,好像是多线程一样。数据传输支持从外设到存储器或者存储器到存储器, 这里的存储器可以是SRAM或者是FLASH。DMA控制器包含了DMA1和DMA2,其中DMA1有7个通道,DMA2有5个通道, 这里的通道可以理解为传输数据的一种管道。要注意的是DMA2只存在于大容量产品和互联型产品中。
2026-01-24 23:01:52
900
原创 [STM32F103标准库]嵌入式模拟平台USART串口通信模拟实验
通用同步异步收发器(Universal Synchronous Asynchronous Receiver and Transmitter)是一个串行通信设备, 可以灵活地与外部设备进行全双工数据交换。 有别于USART还有一个UART(Universal Asynchronous Receiver and Transmitter), 它是在USART基础上裁剪掉了同步通信功能,只有异步通信。 简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用的串口通信基本都是UART。
2026-01-21 20:56:05
1154
原创 [STM32F103标准库]嵌入式模拟平台SYSTICK系统滴答定时器实验
SysTick属于CM3 内核中的一个外设,内嵌在NVIC中,是一个24bit的向下递减的计数器,计数器每计数一次的时间为1/SYSCLK。 一般我们设置系统时钟SYSCLK等于72M,当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次中断,以此循环往复。 因为SysTick 是属于CM3 内核的外设,所以所有基于CM3 内核的单片机都具有这个系统定时器,使得软件在CM3 单片机中可以很容易的移植。 系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。
2026-01-21 01:06:03
886
原创 [STM32F103标准库]嵌入式模拟平台按键KEY控制LED灯的亮灭/外部中断方式实现
本期将采用外部中断方式重构按键控制逻辑。中断机制能够显著提升系统响应效率,释放CPU资源,使主程序得以执行更多并发任务。
2026-01-20 12:24:29
309
原创 [STM32F103标准库]嵌入式模拟平台按键KEY控制LED灯的亮灭
对于嵌入式初学者来说 跟着网上的大部分教学学习的时候 可能是一时心血来袭 面临没有板子无法跟教程实操的困境 今天使用一款嵌入式在线模拟的平台来实现STM32标准库按键KEY控制LED灯的亮灭
2026-01-20 10:53:56
100
原创 [STM32F103HAL库]嵌入式模拟平台点亮第一颗LED灯
对于嵌入式初学者来说 跟着网上的大部分教学学习的时候 可能是一时心血来袭 面临没有板子无法跟教程实操的困境 今天使用一款嵌入式在线模拟的平台来实现比STM32标准库/HAL库点亮LED灯的操作
2026-01-19 15:17:32
104
原创 [STM32F103标准库]嵌入式模拟平台点亮第一颗LED灯
对于嵌入式初学者来说 跟着网上的大部分教学学习的时候 可能是一时心血来袭 面临没有板子无法跟教程实操的困境 今天使用一款嵌入式在线模拟的平台来实现比STM32标准库/HAL库点亮LED灯的操作
2026-01-19 14:39:18
103
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅