- 博客(21)
- 资源 (2)
- 收藏
- 关注
原创 Keil搭建GD32F103标准库工程
如果用GD32标准库编码,烧录到STM32的芯片,一定要用STM32 ST-LINK Utility烧录。1、keil,Project - New μVision Project...,填写工程名,新建工程。(1)APP:keil,File - New,新建两个文件main.c和main.h,放到该APP目录。(2)BSP:User文件夹下的 gd32f10x_it.c 和 systick.c。(如果没有你想要的芯片型号,说明前边芯片支持包安装的不对)(1)将官网下载的标准库。
2026-03-18 17:21:33
345
原创 GD32标准库写的程序,烧录到STM32的芯片,烧录报错
它的Flash算法是固化在工具内部的,经过ST官方验证的,针对STM32各系列优化的,它不关心你代码用的是什么库(GD32/STM32),只关心芯片是不是STM32。keil 和 vscode,芯片与Flash算法的匹配有各自的逻辑原理,一旦它找到的Flash算法与你用的芯片不能匹配,烧录必然失败。项目配置是 GD32F103ZE(兆易创新),但实际打板用的是 STM32F103ZET6(意法半导体)。(1)可能是我设置的问题,我在用STM32 ST-LINK Utility烧录完成后,需要。
2026-03-18 16:49:32
188
原创 speckit + AI IDE开发前后端项目,AI加持开发
speckit.constitution 后端采用java8、springboot、maven,前端采用vue3+elementui+vite开发,数据库采用h2,定义好前端、后端、sql、接口文档目录,相关文档主要采用中文。/speckit.specify 做一个用户的列表页,实现增删改查,用户信息包括用户名、密码、性别、年龄、出生年月。拆分出的任务阶段和子任务描述,在 specs/需求名称/tasks.md 中有详细说明。所有生成的需求内文档,都在 specs/需求名称 目录下。
2026-03-12 21:15:36
60
原创 STM32F103中的RAM和Flash
/ 错误理解:// "这个100写在代码里,应该在Flash吧?// 正确理解:// 编译后:// 1. 初始值100存放在Flash的.data段// 2. 上电时,启动代码把100从Flash复制到RAM// 3. 程序运行中,my_variable在RAM中被修改// 4. 断电后,RAM中的值丢失,Flash中的100不变记住这个黄金法则:Flash= 程序代码 + 常量数据(文件柜)RAM= 运行时的变量 + 堆栈(工作台)问自己:这个数据断电后还需要吗?
2026-01-29 10:40:45
591
原创 RAM和SRAM有什么区别。什么是内部SRAM,什么是外部SRAM?内部SRAM和外部SRAM分别如何使用?
SRAM是RAM的一种:静态RAM,不需要刷新内部SRAM:芯片内置,速度快,容量小,零等待外部SRAM:通过总线连接,速度较慢,容量大,有等待周期使用原则任务栈、频繁访问的数据 → 内部SRAM大缓冲区、不频繁访问的数据 → 外部SRAM实时性要求高的 → 内部SRAM需要大内存的 → 外部SRAM小而快的数据放里面,大而慢的数据放外面。
2026-01-29 10:32:47
629
原创 嵌入式程序运行过程中栈溢出导致卡死现象
(1)将改为static全局变量(2)将栈大小从0x800(2KB) 改为0x2000(8KB) 或更大。
2026-01-22 16:09:50
305
原创 嵌入式程序运行过程中栈溢出导致卡死现象(小篇)
0x800 = 8 × 16² + 0 × 16¹ + 0 × 16⁰ = 8 × 256 = 2048字节。(3)局部变量、函数参数、返回地址等等,存储在栈上。随着函数的调用,地址会常变化。(1)全局变量和静态变量,存储在全局存储区(数据段)。(2)malloc动态分配的存储在堆上,需要手动free。1、在嵌入式系统中,内存大小常用十六进制表示。比如:0x800 = 2KB。1 KB = 1024 字节。所以,0x800 = 2KB。
2026-01-22 15:22:52
20
原创 W5500芯片通过TCP/IP连接局域网内的计算机,connect返回-13 或 -4
解决方案:把W5500的端口改为了7777 或 8888都可以。(可能1000以内的端口,有限制?问题:创建Socket客户端可以成功,但是connect服务端时总是返回-13 或 -4。另外,需要注意,服务端的ip一定要可以ping通,并且8181端口打开了侦听。W5500集成了 TCP/IP 协议栈,用户使用单芯片就能够拓展网络连接。局域网内PC:IP:192.168.38.37 PORT:8181。W5500芯片:IP:192.168.38.137。
2026-01-21 21:01:01
41
原创 AT6558R GPS模块使用的NMEA协议与USART协议的关系
USART是传输管道NMEA是管道中的内容规范,两者协同工作实现GPS数据的可靠传输。
2026-01-17 20:11:00
64
原创 [日常问题] Flash Download failed - Target DLL has been cancelled
默认是:C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility。使用STM32 ST-LINK Utility的ST-LINK_CLI.exe命令行工具,执行如下命令。
2026-01-07 14:34:42
207
原创 TIM6的CR1的URS位 与 TIM6的EGR的UG位,二者先后顺序问题
也就是说,计划在TIM6的初始化提前切换一次LED的状态,执行到这行代码时,LED还没初始化,无法切实完成LED状态的提前一次切换。如上TIM6的EGR寄存器的UG位 和 CR1寄存器的URS位设置的写法,左侧main初始化能实现双灯同时闪烁,右侧main初始化却是双灯交替闪烁。使用TIM6的EGR寄存器的UG位和CR1寄存器的URS位,实现:产生更新事件,使得PSC设置的值立即生效,同时又不会触发更新中断。,EGR的UG位用到CR1的URS位,应该先配置CR1的URS,再执行EGR的UG。
2025-12-28 02:00:31
301
原创 本地已有文件夹目录提交到gitee
1、在gitee.com中新建仓库2、在本地要提交的文件夹目录中,打开cmd命令行窗口,依次执行如下命令(注意仓库地址)
2025-12-25 10:19:26
215
原创 Visual Studio Code开发STM32项目(Keil Assistant插件、Better Comments插件)
HAL库开发,HAL库生成的代码本身有大量的注释。为了区分开我们自己写的注释,可以装这个插件。比如,在我们的注释前加!
2025-12-18 10:56:19
408
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅