
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
在机器人领域,掌握无刷电机的控制相当于掌握机器人设计的“半壁江山”。这个年代,对个人来说学习一种新技术最好是通过开源项目了。通过开源项目快速将项目搭建起来,接着结合实践与理论才能真正掌握技术。未来的一段很长的时间里,将分享simpleFOC学习的笔记。通过分享笔记的方式,进一步提高自己对FOC的理解。大家互相学习,共同进步吧。

摘要:禁用C++异常处理优化STM32内存占用 在STM32G431RBT6(128KB内存)上开发FOC电机控制项目时,通过添加"-fno-exceptions"编译选项禁用C++异常处理机制,使程序大小从53,884B降至49,444B,节省了4.335KB空间。该优化会禁用try-catch异常处理,并使标准库函数在失败时直接终止而非抛出异常。由于嵌入式开发通常不使用C+

摘要 在嵌入式开发中,使用--specs=nano.specs选项可让编译器采用newlib-nano代替默认的newlib库,显著减少代码体积。newlib-nano针对资源受限的MCU(如STM32G431)进行了优化,裁剪了不必要的功能(如完整printf/scanf、浮点支持等)。测试结果显示,启用该选项后,RAM占用从13.03KB降至10.56KB,FLASH占用从73.34KB降至4

文章目录一、前言**二、VSCODE + ESP-IDF****2.1、快速创建项目****2.2、选择串口通道,ESP芯片型号**三、代码3.1、头文件3.2、全局变量3.3、app_main( )函数3.4、实验代码四、相关API4.1、uart_param_config( )4.2、uart_set_pin( )4.3、uart_driver_install( )4.4、uart_write

本文总结了STM32项目从Keil迁移到GCC开发环境时遇到的几个关键问题及解决方案。主要问题包括:1)EIDE插件与J-Link+RTT日志方案不兼容,改为USART2输出日志;2)GCC编译的Bootloader跳转APP时出现HardFault故障,通过注释SCB->VTOR设置解决。文章还提供了OTA升级流程图和项目开源地址,分析了不同编译器导致行为差异的原因(中断时机与向量表处理的

一、前言我写CANopen系列博文的初衷是分享如何使用STM32单片机开发一款CANopen产品,所谓实战为主,理论为辅。光看CANopen协议的理论是很枯燥的,而且无论看多少遍都无法掌握CANopen协议。我认为掌握CANopen协议的唯一方法是自己设计一个CANopen从站。以前我在电气研发的时候,看了很多遍讲CANopen协议的pdf与书籍,最后也没看懂CANopen是什么东西。害的我在工作

上一章节《》完成三相无刷电机的开环速度控制。接下来,开始调试编码器(位置传感器)。为接下来的位置闭环控制,速度闭环控制做准备。项目源码:https://github.com/q164129345/MCU_Develop/tree/main/simplefoc06_stm32f103_encoder_align。

摘要 QML中使用console.log打印中文时出现乱码,原因是QML输出UTF-8编码,而Windows终端默认使用GBK/CP936编码。通过在Python中调用qInstallMessageHandler模块,将日志消息重定向到print()函数,可自动完成编码转换,解决乱码问题。该方法无需修改QML代码,仅需在Python主文件中添加一行拦截代码即可实现兼容性输出。 关键词:QML乱码、

crc_add.bat脚本有没有将改动固件的内容呢?让ChatGPT帮我检查一下。

在嵌入式系统的生命周期中,固件更新(IAP,In-Application Programming)是不可或缺的一环。一个设计精良的Bootloader不仅是产品迭代的基石,更是系统稳定性的最后一道防线。在本系列之前的文章中,我们已经成功实现了通过Ymodem协议进行固件的下载、校验与搬运。这个问题看似简单,背后却隐藏着巨大的风险。想象一下,当现场的设备收到一条进入IAP模式的指令后,它跳转到了Bo








