- 博客(322)
- 资源 (16)
- 收藏
- 关注
原创 keil watch 里面的值不实时变化,要打断点才可以看到变化,想不打断点,就可以实时看到变化,如何办
有些 ST-Link / CMSIS-DAP 不支持。2. 👉 打开 Keil 的「Run-time Watch」1. 把变量声明为 volatile。这个变量随时可能被“外部改变”ULINK 支持最好。
2026-02-03 17:57:29
114
原创 写 flash 时,FLASH_SR = 0x80, PGSERR 错误
写 flash 时,FLASH_SR = 0x80, 即 PGSERR 错误(编程顺序错误)// 如果hiwdg.Instance == 0x00000000 或随机值。我把看门狗初始化关掉后,程序还在喂狗,就会导致这个PGSERR错误。(HardFault或BusFault)PGSERR意味着"编程序列被打断"// 这将访问无效的内存地址!任何总线错误都会污染总线事务。→ 产生PGSERR。需要稳定的AHB总线。
2026-02-03 13:53:58
56
原创 高压高频电源的pid算法
在直流逆变交流系统中,PID控制器的离散化实现是一个关键的技术点。PID控制器的离散化通常涉及到将连续时间域的PID控制算法转换为离散时间域的算法,以便在数字系统中实现。下面我们将详细介绍PID控制器的离散化公式及其在电流控制环中的应用。
2026-01-31 22:21:32
573
原创 数码管驱动(一):ET6226M -数据手册主要点分析
在接收到一组指令信号后,等待一个时钟脉冲,不做确认。在收到每一个指令信号后即会产生一个“确认”信号,否则在第九个时钟脉冲 (CLOCK。和 CLK 串行信号,可以使 6226 与 MCU之间进行信号传输。对“确认”信号的检测,可使用一种简单的传输方式。信号在低电平时, DAT 上的信号才能做高低电平的转换。信号由高电平切换为低电平时表示串行信号传输“开始”。信号由低电平切换为高电平时表示串行信号传输“结束”。上的信号才会被认为是正确而稳定的信号。1.4.6 无“确认”信号的传输。
2026-01-26 17:55:50
587
原创 嵌入式产品开发流程,以及个人能力侧重点
第二件事情:把需求定义搞清楚,产品要做什么功能,性能指标是多少,用在什么场景,全部写成需求规格书。第一件事情:可行性分析,技术能不能实现,市场有没有需求,成本能不能控制,输出可行性报告书。第三件事情:方案设计:硬件选芯片,画原理图。第四件事情:开发调试:硬件打板调试,软件编码调试,软硬件联调。第七件事情:小批量市场验证工艺验证没有问题后,正式量产。第五件事情:集成测试:功能,性能,稳定性,EMC。第八件事情:量产后,还要持续优化处理,售后反馈。第二需求拆分能力,把大功能拆分小模块,语言和框架交给AI就行。
2026-01-21 10:31:01
192
原创 有源和无源蜂鸣器的区别
内部自带振荡电路,你给它(到额定电压)它就自己“滴——”响,频率基本固定。:内部没有振荡器,本质更像“线圈/压电片 + 机械结构”,你必须给它才能响,声音的。
2026-01-09 13:49:07
394
原创 c 文件生成 库文件的方法,防止代码被别人抄袭
2. OBJ文件夹下,打开cmd命令框,并且输入命令"D:\Keil_v5\ARM\ARMCC\bin\armar.exe" -r error.lib error.o ,即可。我们写keil程序时,为了保护代码,经常以库文件给到别人用,而lib的好处是不能被别人剽窃。1. *.o 的文件位置,项目生成的*.o 的文件位置,一般在OBJ文件夹下。1. error.lib 直接替代error.c文件,参与项目编译。(keil项目生产的.o文件,可以是任何文件)网上大部分的方法在项目里修改,太复杂,又费时。
2025-12-23 16:38:31
176
原创 RDP(读保护)出厂流程
ST-LINK 接:SWDIO / SWCLK / GND / VTref(3.3V)-(可选)尝试 Read Flash,会提示受保护(不同版本提示不一样)看日志:Programming OK + Verify OK。(F4 常见显示:Level1 =Option Bytes 里确认。,按提示复位或断电重启。
2025-12-23 16:17:28
352
原创 SVN转移服务器仓库后,旧服务器不能被访问的解决办法
我自己的电脑上,有服务器和客户端,客户端可以访问自己的服务器的文件。但是有一天,我把自己服务器的文件夹(即转移服务器仓库)复制到本局域网内的另一台电脑上,但是从那以后,我自己的电脑的客户端访问不了自己的服务器了。需要把旧的服务器仓库的文件,转移到新的服务器上,我直接 拷贝Repositories文件在新服务器上,虽然新的服务器和客户端,可以正常工作了。但是原先旧的服务器却不能正常工作。解决办法如下,已经解决。
2025-12-23 11:57:51
197
原创 项目管理需要的文档
装配工艺指导书》:怎么组装光学腔、如何锁螺丝、上胶、接线。每块板卡的功能划分:本安电源板、主控板、光学探测板等。设计落实位置:本安电源板 + 限流电阻 + 保险丝。(你可以要求嵌入式工程师写,但你要帮他们列清需求)使用场景:巷道、综采面、固定监测点 or 便携式。关键器件降额分析:电压、电流、功耗裕量。这一份很关键,否则后面可能设计完发现。把“这台仪表的大脑长什么样”说清楚。面向最终使用者(矿方电工/安全员)。设计落实位置:壳体接合面结构。条款:本安电路功耗限制。要求:U/I/P 上限。
2025-12-02 10:45:57
621
原创 实时状态机框架 QP/C
QP/C 是一种专门用于嵌入式系统开发的实时状态机框架,全称为 “Quantum Platform for C”,由 Miro Samek 博士提出,基于层次化状态机(HSM,Hierarchical State Machine) 理论,是 QP(Quantum Platform)系列框架(包括 QP/C++、QP-nano 等)中针对 C 语言的版本。QP/C 的核心思想传统的有限状态机(FSM)难以处理复杂系统中 “状态嵌套” 和 “行为复用” 的问题(例如,多个子状态共享父状态的通用行为)。
2025-11-07 11:32:21
794
原创 嵌入式开发中,状态机的实现方法
可读性稍差,状态转换逻辑不够直观。:状态多时代码冗长,维护困难。:需要C++支持,资源占用多。:减少重复代码,支持状态复用。:符合OOP原则,扩展性好。:可视化设计,自动生成代码。:结构清晰,易于扩展维护。:学习成本高,依赖工具链。:执行效率高,模块化好。:简单直观,易于理解。:调试困难,状态分散。
2025-11-07 11:15:40
538
原创 状态机实现的方法
状态机实现的方法,可以按两条线来理解“实现方法”:一条是(输出何时产生/状态如何组织),另一条是(代码怎么写、怎么派发事件/定时器)。
2025-11-07 09:59:45
896
原创 表面处理-电晕机
电晕机(Corona Treater)是一种的工业设备,主要用来给塑料薄膜(如 PE、PP、BOPP、CPP、PET 等)、金属箔或复合膜做,让油墨、胶黏剂、涂层“更容易沾上去、粘得牢、耐久性更好”。包装印刷、涂布、复合、金属化前处理等场景最常见。
2025-10-31 16:40:15
784
原创 can 错误HAL_CAN_ERROR_NOT_READY,HAL_CAN_ERROR_TIMEOUT
• 后果:从机的CAN控制器可能无法正确锁定波特率,或者在等待总线空闲的超时过程中失败,导致初始化函数返回错误。• 问题:当从机初始化时,如果主机正在密集地发送数据帧,总线会一直处于“活跃”状态,很难出现长的空闲时段。因为从机设备热插拔,can初始化的时候,主机可能此刻正在发送数据,总线不空闲,导致从机can初始化失败。把检测空闲的延时放大就好了。从机设备一上电,can初始化的时候,HAL_CAN_Start偶发的会出现错误,1. 出现 HAL_CAN_ERROR_NOT_READY 错误的原因。
2025-10-11 13:46:08
378
原创 stm32L496 flash 分配
不同型号的STM32L4xx芯片,其FLASH容量也有所不同,最小的只有256K字节,最大 的则达到了1024K字节。
2025-09-24 15:46:47
245
原创 未来物联网大模型:物联网硬件+底层驱动+AI 自动生成和调优LUA脚本,
如果开发一套物联网大系统,硬件弄好,驱动和算法,系统弄好,上层应用用lua脚本,lua脚本又是用ai来写的话,是不是这套系统可以适应大部分的物联网大模型。这样做的好处是什么,这是不是未来的趋势,这套系统弄好,未来3年,是不是可以改变些什么。这个思路,本质上是把打造成一个稳定的“通用计算平台”,然后用(或其他解释型语言)承载上层业务逻辑,而 Lua 的脚本内容又由。如果这件事做成了,对未来 3 年的 IoT 开发模式确实可能带来很大变化。
2025-08-11 18:06:12
1445
原创 “底层闭源 + Lua 脚本” 开发模式
从隔离到高效:揭秘 “底层闭源 + Lua 脚本” 开发模式 —— 智能锁领域的落地实践(驱动、框架等)+(业务逻辑可扩展)。这种分层方式既能保护核心技术,又能快速迭代业务,被视为。在物联网智能锁行业,这种模式更是展现出独特价值。本文将结合行业特点,深入解析其。
2025-08-11 17:36:53
853
原创 HAL_UART_Transmit_DMA(),通过DMA发送数据后,如何判断数据是否发送完成
在STM32 HAL库中,使用HAL库会在DMA传输完成后触发中断,并调用相应的回调函数。
2025-08-06 09:01:30
1158
原创 push/pop字节对齐使用场景
不同编译器或平台的默认对齐规则可能不同(如x86通常按4字节对齐,嵌入式平台可能按2字节)。设置的字节对齐方式。
2025-08-04 17:03:03
370
原创 调试打印信息实现
* 调试等级宏定义 */1234/* 若未定义 LOG_LEVEL,则默认启用所有级别 */#endif/* Error 级别日志 */#if。
2025-07-29 07:58:13
1240
原创 C ,关键字 volatile
这几个变量被声明为 volatile,意味着它们的值可能会因为硬件中断、多线程等外部因素而改变,编译器不会对这些变量进行优化,每次访问这些变量时都会从其实际内存地址中读取,而不是从寄存器缓存中读取,以确保程序能获取到变量的最新值。比如在一个多线程程序中,一个线程可能会修改 “lastHeartbeatTime” 变量的值,另一个线程需要及时获取到这个修改后的值,使用 volatile 关键字修饰就能保证这种及时性。它用于修饰变量,告知编译器该变量的值可能会在程序的控制或检测之外被改变。
2025-07-28 10:06:34
345
原创 沿线 IO 板配置ID的流程
顺序配置:通过“查询时序唯一性”保证 IO 板一对一配置,避免总线冲突。状态依赖:配置命令仅触发“当前查询成功”的 IO 板,利用状态匹配实现精准控制。可重置性:重查机制通过“广播 + 状态初始化”,支持总线设备批量重置与二次配置,适配系统调试、故障恢复场景。
2025-07-22 08:30:58
349
原创 程序总是进入 Error_Handler(),排查和解决方法
说明某个硬件或软件初始化失败。:说明错误地址未记录(可能是通用内存违规)。:错误地址无效(可能是间接访问错误)。(如访问了未分配的地址或只读区域)。(如访问了不存在的寄存器或外设)。时,如果程序总是进入。:错误未精确定位到指令。
2025-07-17 09:20:23
1405
原创 can 收发器 SN65HVD230DR的使用说明
高速模式 和 斜率模式都是 正常工作模式,可监听 可发送数据,只是斜率模式功耗低一点,还有EMI的问题。低功耗监听模式下,接收器打开,可以接受到数据,但是驱动器是关闭的,mcu 的can 控制器无法驱动 ACK, 只能NAK.正常工作模式下(高速或者斜率),接受器 (RX)和 驱动器(TX) 打开,mcu 的can 控制器可以ACK.配置成开漏输出,输出置1的情况下单片机引脚此时处于浮空,高阻态,此时才是真正的。RS 接地的时候,can 收发器处于高速模式。在推挽模式下,输出低电平,这时CAN的功耗要大。
2025-07-08 10:08:10
1111
原创 修改外部参数C实现
某些RTOS或特殊框架可能强制使用u32传递指针。函数签名直接表明需要什么类型的参数。IDE和文档工具能正确识别参数类型。回调函数注册时参数类型受限的情况。系统级API需要通用参数类型时。编译器能直接检查类型是否正确。后续开发者一看就明白参数意义。与不支持指针类型的语言交互时。受限于特定的框架或系统要求。不需要危险的强制类型转换。不需要额外的类型转换注释。需要实现某种通用接口设计。需要隐藏实际数据结构时。有明确的跨语言交互需求。符合C语言的最佳实践。
2025-06-26 13:09:57
288
原创 Modbus调试工具的使用方法---- Modbus Poll 和Modbus Slave详细图文教程
Modbus Poll官网详细资料: Modbus 主站模拟器 Modbus Poll 快速入门指南: Modbus Poll Quick start Modbus Poll 用户手册: Modbus Poll 用户手册Modbus 从站模拟器Modbus Slave 用户手册或者:Modbus仿真器 Modbus Poll 和Modbus Slave详细图文教程 - 知乎
2025-06-21 18:09:27
792
原创 Modbus 主机(Master)和从机(Slave)的区别
主机和从机是Modbus通信中互补的两个角色,主机负责控制和调度,从机负责数据提供和执行。在设计Modbus设备时,需要根据设备在系统中的角色选择实现相应的功能。
2025-06-19 16:57:37
2037
转载 STMCUBEMX中直接更改单片机型号
第一种方法就是使用cube选择一个新使用的MCU型号,然后使用导入功能导入原来的工程,只要同系列同管脚的,就能把原来的配置完全复制过来,这种方法仅限于同系列。用这样的方法导入的话,原来工程中自己编写的代码不能导入,导入的只是STM32Cube的配置相关。第二种方法,直接拷贝一个正在使用的工程,包含.ioc文件,我使用Nopad++打开这个.ioc文件,搜索"ZGT",在文件中能搜索到3个地方是ZGT的,把这个ZGT更换成VET,然后保存。替换成功,原来的参数配置不变,但是需要重新配置时钟树。
2025-06-17 14:16:04
908
原创 stm32f207zet6,通过网口(W5500)升级程序,详细过程说明及代码
fromelf --bin -o "$L@L.bin" "#L"12.完整升级过程的调试信息,可参考。3. 从14例程摘取有用的驱动及应用文件到新建stm32F207ZET6工程(注意是驱动和应用文件,没有协议文件哦,W5500自带协议,不需要移植LWIP。只需修改wiz_platform.c即可,这个官方给用户的平台文件,修改接口,对上驱动就可。1. 使用CubeMx软件,新建stm32F207ZET6工程,RCC使能,主频120M,并且调通spi3, ,定时器2,uart3(调试口)
2025-06-16 16:30:31
816
详细介绍linux下移植wifi的步骤
2018-07-12
linux 下 移植 wifi . 概念讲解, iw ,wpa, dhco, hostapd每个步骤都有。
2018-07-17
svn 服务器和客户端
2018-01-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅