更新 linux下stm32开发 📅 发布时间:2026/7/14 7:37:50 👁️ 浏览次数: 更新 linux下stm32开发完整文章 linux下stm32开发gcc版本问题产生如下报错 (注这些报错如果在修改后编译器后仍然出现则使用此方式修改否请向下看)…/…/Drivers/CMSIS/Include/cmsis_gcc.h:833: 错误 number of operands mismatch for ds’…/…/Drivers/CMSIS/Include/cmsis_gcc.h:823: 错误 no such instruction: isb sy’解决方案修改cmsis_gcc.h文件__STATIC_FORCEINLINE void __ISB (void) { // __ASM volatile (isb sy:::memory); __builtin_arm_isb (0xF); } __STATIC_FORCEINLINE void __DSB (void) { // __ASM volatile (dsb sy:::memory); __builtin_arm_dsb (0xF); }报错错误 no such instruction: wfe 错误 no such instruction: wfi 错误 no such instruction: sev解决方案 修改cmsis_gcc.h#define__WFI()__builtin_arm_wfi()#define__WFE()__builtin_arm_wfe()#define__SEV()__builtin_arm_sev()报错no such instruction: cpsid i最终解决方案tmd cmake配置的编译器错了添加cmake#设置交叉编译器 set(CMAKE_C_COMPILER /home/lkb/tools/xpack-arm-none-eabi-gcc-14.2.1-1.1/bin/arm-none-eabi-gcc) set(CMAKE_CXX_COMPILER /home/lkb/tools/xpack-arm-none-eabi-gcc-14.2.1-1.1/bin/arm-none-eabi-g) set(CMAKE_ASM_COMPILER /home/lkb/tools/xpack-arm-none-eabi-gcc-14.2.1-1.1/bin/arm-none-eabi-gcc) set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_SYSTEM_PROCESSOR ARM) # Setup compiler settings set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_C_EXTENSIONS ON) # 设置ARM编译选项 set(CPU_FLAGS -mcpucortex-m3 -mthumb) set(COMMON_FLAGS ${CPU_FLAGS} -masm-syntax-unified -Wa,-mimplicit-itthumb) set(CMAKE_C_FLAGS ${COMMON_FLAGS} -ffunction-sections -fdata-sections -fno-builtin -fno-common -Wall -Wextra -Wpedantic) set(CMAKE_CXX_FLAGS ${COMMON_FLAGS} -fno-rtti -fno-exceptions) set(CMAKE_ASM_FLAGS ${COMMON_FLAGS} -x assembler-with-cpp) # 链接器标志 set(CMAKE_EXE_LINKER_FLAGS ${CPU_FLAGS} -Wl,--gc-sections -specsnano.specs -specsnosys.specs CACHE STRING Linker flags) # 预处理器定义 add_definitions(-DUSE_HAL_DRIVER) add_definitions(-DSTM32F103x6) # 请根据你的芯片型号修改 add_definitions(-D__ARM_ARCH_7M__1) add_definitions(-D__CORTEX_M3)# 设置链接脚本路径 - 使用正确的文件名 set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/STM32F103XX_FLASH.ld) # 这是你的实际文件名 # 检查链接脚本是否存在 if(NOT EXISTS ${LINKER_SCRIPT}) message(FATAL_ERROR 链接脚本不存在: ${LINKER_SCRIPT}) else() message(STATUS 使用链接脚本: ${LINKER_SCRIPT}) endif()最后是烧录这个算是里面最简单的也是坑最少的了首先stlink已经连接并检查到端口则/dev/tty下是否检测到设备其次检测是否出现端口占用情况因为ubunto有点坑会有默认的驱动占用端口 emmm咱也不敢说。。。这些都没有问题则可以选择 使用elf bin hex 这三种格式烧录采用elf 这个是最简单也是最常见的 因为相比于hex 与二进制文件 这个烧录的起始地址已经记录在其文件内so并不用我们去指定起始地址我们可以采用arm-none-eabi-readelf此指令来检测文件头看到起始地址为0x08000000注此为stm32f103的如果是其他系列还需查找,搞错了就唧唧了。2. 开始烧录 采用gdb# 终端1启动 OpenOCDopenocd-finterface/stlink.cfg-ftarget/stm32f1x.cfg# 终端2启动 GDBcd/stm32test/build arm-none-eabi-gdb stm32test# 在 GDB 中输入(gdb)target remote localhost:3333#3333为openocd的端口resethaltflash write_image erase /home/lkb/stm32test/build/stm32test verify_image /home/lkb/stm32test/build/stm32test reset runexit上述有点麻烦建议写个shell脚本直接烧录 可惜无法调试不过配合终端串口查看其输出也可以openocd-finterface/stlink.cfg-ftarget/stm32f1x.cfg-cprogram path{stm32test} verify reset exit然后就可以成为一个快乐的点灯大师然可能发现stm32cubeMX并没有用到emm其实使用他进行cmake文件和其他配置文件的生成但是发现其生成的cmake需要修改的地方较多上面给出了所以注意里面的时钟配置与SYS DEBUG 设置为Servial Wire 不然烧一次废了 另外他是基于java所以需要一个java环境
STM32使用定时器完成精准的通用us延时函数 (一)STM32CubeMx定时器的配置创建STM32工程,首先勾选SYS里面的Debug选择Serial Wire,否则下一次将无法烧录,关闭SWD烧录接口。之后配置RCC时钟,选择高速的外部晶振。首先在直接红框1内配置输入72࿰… 2026/7/14 7:35:49
Win11 搭建 Python 开发环境:Anaconda 安装、虚拟环境创建与 PyCharm 集成配置 1. 为什么需要Anaconda和PyCharm组合?如果你刚开始接触Python编程或者数据科学领域,可能会被各种环境配置问题搞得头大。不同的项目可能需要不同版本的Python解释器,或者依赖不同版本的第三方库,这时候Anaconda和PyCharm的组合就能… 2026/7/14 7:33:48
07、 Skills定制完整指南:打造专属AI能力包的实战手册 📚 本课学习目标 完成本课学习后,你将能够: 目标 掌握内容 应用场景 理解核心价值 掌握Skills与Commands的本质区别和协作方式 技术选型决策 创建第一个Skill 5分钟内完成最简单的Skill配置并看到效果 快速原型验证 掌握SKILL.md结构 理解YAML Frontmatter和Markdown Body的… 2026/7/14 7:33:48
国产信创Linux桌面系统生态构建:从软件包仓库到桌面应用商店的演进与挑战 1. 国产信创Linux桌面系统的生态现状国产信创Linux桌面系统经过多年发展,已经形成了以银河麒麟V10和统信UOS为代表的两大主流阵营。这两款操作系统都基于Linux内核进行深度定制开发,支持多种国产CPU架构,包括龙芯、飞腾、鲲鹏等。从实际使用体… 2026/7/14 10:18:58
HTML实战:从零构建一个西式甜品展示网站 1. 甜品网站项目概述 想象一下,你刚学会几个HTML标签,现在要为自己喜欢的西式甜品制作一个展示网站。这个项目就像用乐高积木搭建甜品店模型——不需要复杂的编程基础,只要掌握HTML的结构化思维和CSS的美化技巧,就能做出让人眼前一… 2026/7/14 10:16:57
为什么企业级Spark集群都在转向CuckooSQL?三大核心优势解析 为什么企业级Spark集群都在转向CuckooSQL?三大核心优势解析 【免费下载链接】CuckooSQL A Spark SQL execution engine with vectorization optimization, which is used to replace the original execution engine of Spark SQL and provides higher performance. … 2026/7/14 10:16:57
强化学习 Reinforcement Learning(七)——好奇心驱动的稀疏奖励环境探索:从ICM到RND 1. 稀疏奖励环境下的探索困境 想象一下你被丢进一个巨大的迷宫,只有找到出口才能获得奖励。在99%的时间里,你都在黑暗的通道里摸索,得不到任何反馈。这就是强化学习中的 稀疏奖励问题 ——就像在超市找一瓶特定品牌的辣椒酱,货架… 2026/7/14 10:14:57
ARDY-G1-RP-25FPS-Horizon8 vs 其他模型变体:为什么8帧生成horizon更适合实时交互? ARDY-G1-RP-25FPS-Horizon8 vs 其他模型变体:为什么8帧生成horizon更适合实时交互? 【免费下载链接】ARDY-G1-RP-25FPS-Horizon8 项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/ARDY-G1-RP-25FPS-Horizon8 ARDY-G1-RP-25FPS-Horizon8是NV… 2026/7/14 10:12:56
MySQL多表查询实战:从学生成绩分析到教师授课统计 1. 多表查询基础与场景分析 当你面对教务系统中的学生成绩分析需求时,单表查询往往捉襟见肘。比如校长需要了解"哪位老师教授的课程平均分最高",这就涉及教师表、课程表、成绩表的三表联动。多表查询就像拼图游戏,我们需要找到表之… 2026/7/14 10:10:55
XUnity.AutoTranslator 游戏实时翻译插件:从原理到实战的完整指南 1. 项目概述:当游戏语言成为一堵墙作为一名玩了十几年日系、欧美独立游戏的“老油条”,我太懂那种面对一款心仪已久、画风玩法都戳中G点的游戏,却因为语言不通而望而却步的痛了。尤其是那些基于Unity引擎开发的、体量不大但内容精良的作品&am… 2026/7/14 0:05:14
2026普通文员学数据分析的价值 一、2026年普通文员学习数据分析的必要性随着数字化转型加速,数据分析技能正逐渐成为职场基础能力。普通文员学习数据分析可以提升工作效率、增强竞争力,并为职业转型提供更多可能性。二、数据分析对文员的价值自动化办公:通过数据分析工具&a… 2026/7/14 0:05:14
2026从计划员到主管,生产管理者学数据分析有用吗? 一、生产管理领域的职业发展路径 从计划员到主管的角色转变,是生产管理者职业发展的典型路径。计划员主要负责生产排程、库存管理和资源协调等基础工作,而主管则需要承担团队管理、决策支持和效率优化等更高级别的职责。这种转变不仅仅是职位的提升&… 2026/7/14 0:05:14
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/13 9:31:08
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/14 5:09:41