新闻详情

新闻详情

首页 / 资讯中心 / 详情

STM32F427将函数设定在固定位置

发布时间:2026/10/2 17:13:02来源:尧图网络
STM32F427将函数设定在固定位置
STM32F427 基于 Cortex-M4F、GD32/STM32 通用编译器Keil MDK、GCC/STM32CubeIDE、IAR都支持通过「编译器段属性 链接脚本」两步把函数放到固定地址。核心思路是__attribute__((section(...)))只负责把函数放进自定义段真正决定地址的是链接脚本里对该段的定位。方法一Keil MDK最常用于 STM32F4Keil 用分散加载文件.sct控制内存布局。第 1 步在.sct文件中新增 Flash 段LR_IROM1 0x08000000 0x00100000 { ; 加载域地址按你的工程实际Flash起点/大小调整 ; ...其他默认段... ER_MYFUNC 0x08060000 0x2000 { ; 执行域函数固定到 0x08060000 *(.my_func) ; 收集所有标记为 .my_func 的代码 } ; ...其余段... }【也可用 FIXED 属性】ER_MYFUNC 0x08060000 FIXED { *(.my_func) }第 2 步在 C 代码中用段属性标记函数#define MY_FLASH __attribute__((section(my_func))) MY_FLASH void test_function(void) { return 1; }编译后在 map 文件中即可确认test_function是否定位到 0x08060000。方法二GCC / STM32CubeIDEGCC 同样用__attribute__((section))标记然后在.ld链接脚本中指定段地址。C 代码标记void my_function(void) __attribute__((section(.my_func))); void my_function(void) { /* 函数体 */ }链接脚本.ld中定位SECTIONS { ... .my_section 0x10000000 : { *(.my_section) /* 所有标记 .my_section 的部分 */ } }也可以使用 ARM 编译器提供的「__at 段」直接以地址命名void Communication_Test(u8 *in, u8 *out, u8 len) __attribute__((section(.ARM.__at_0x00031000)));其中.ARM.__at_address的地址即该函数被放置的位置。方法三IARIAR 用#pragma location指定地址例如#pragma location 0x00031000 void my_func(void);关键注意事项段属性≠地址__attribute__((section))只决定函数进入哪个段最终地址必须由链接脚本分配二者缺一不可。防止被优化丢弃若函数未被调用链接器可能剔除它。GCC 下用__attribute__((used))或链接脚本中的KEEP(...)保留例如KEEP((*(.boot.init)))Keil 下也建议用__attribute__((used))。地址对齐Flash 段建议使用ALIGN(4)因为 Cortex-M 指令尤其 Thumb-2要求按半字/字对齐函数地址通常需 4 字节对齐。.my_func 0x08060000 : ALIGN(4) { *(.my_func) }多函数顺序同一段内多个函数按声明顺序存放GCC/IDE 下可据此安排相对位置。验证编译后务必打开 map 文件或使用反汇编、nm工具确认目标函数确实位于期望地址这是最可靠的检查方式。未使用函数保留若函数不在调用链中且开-ffunction-sections链接时可能被 section GC 移除需配合KEEP/used处理。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Python文本驱动知识图谱构建实战:从非结构化文本到可查询图谱 2026/10/2 18:09:14

Python文本驱动知识图谱构建实战:从非结构化文本到可查询图谱

简介:这是一套面向Python开发者与知识图谱初学者的自动化文本分析实践项目,聚焦从非结构化文本中高效提取实体关系、构建可扩展知识图谱的核心流程。资源共26个文件,含9个Python源码(涵盖config.py配置管理、scrach.py/sink.py主控…

阅读更多 →
Java电影网站开发实战:Spring Boot从零搭建与避坑指南 2026/10/2 18:09:14

Java电影网站开发实战:Spring Boot从零搭建与避坑指南

简介:这是一套基于SSM框架与Vue前端的完整电影网站系统源码,面向Java Web初学者与课程设计学生,解决毕业设计、实训项目中缺乏可运行全栈案例的问题。资源包含880个文件,涵盖144个Java后端逻辑类、53个Vue组件、167个JS交互脚本、…

阅读更多 →
【电路笔记 信号】DBPSK 波形查找表+脉冲成形(升余弦+根升余弦滤波) 2026/10/2 18:09:08

【电路笔记 信号】DBPSK 波形查找表+脉冲成形(升余弦+根升余弦滤波)

文章目录DBPSK 波形查找表提升每比特的周期数量脉冲成形理想波形矩形包络发送波形基带成形脉冲(升余弦方式)成形后的发送信号收发两端用根升余弦成型滤波器的影响CGDBPSK 波形查找表 // // DBPSK 波形查找表 // int16 DBPSK_Signal[2][SYMBLE_LEN] {…

阅读更多 →
EfficientVMamba实战:状态空间模型在图像分类中的高效应用与落地 2026/10/2 18:09:08

EfficientVMamba实战:状态空间模型在图像分类中的高效应用与落地

简介:面向图像分类任务与轻量级模型实战需求,这份资源围绕EfficientVMamba_T模型提供了一套完整可运行的植物幼苗分类方案。内容涵盖数据预处理、模型搭建、训练与评估等环节,适合有一定深度学习基础、希望借助视觉状态空间模型(S…

阅读更多 →
基于Node.js+Vue的校园信息共享系统:从开发到部署全流程实战 2026/10/2 18:09:08

基于Node.js+Vue的校园信息共享系统:从开发到部署全流程实战

做校园信息共享系统这个选题,最常被问到的问题就是:为什么非要用Node.js和Vue这套组合?我的答案一直很直接:因为这套技术栈能让一个两三个人的小团队,在最短时间内把"信息发布、分类检索、实时聊天"这些核心…

阅读更多 →
SQL Server备份还原修复实战:从维护计划到MDF损坏恢复 2026/10/2 18:09:08

SQL Server备份还原修复实战:从维护计划到MDF损坏恢复

简介:SQL Server备份、还原与修复全流程知识整理文档,面向需要保障数据库安全与业务连续性的DBA、开发人员及运维新手,涵盖从日常备份到故障恢复的完整链路。内容首先区分完整备份、差异备份与事务日志备份的适用场景,随后详解SSM…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉