关于使用CLion开发STM32外扩SRAM/SDRAM注意事项

当使用Clion开发STM32时,与Keil不同的点很多,这里使用的是ST官方的CLT工具链,也就是GCC编译,因此相比Keil,多了个链接文件(.ld),因此如果你在外扩了SRAM/SDRAM的时候,如果想要显式声明一个大数组而不是通过指针去访问,就需要去修改.ld文件里的内容,

链接文件是为了给链接器看如何分配管理内存还有Flash用的,因此在链接文件前面,需要声明有哪些存储空间以及大小还有属性

所以我们在配置好FMC/FSMC后需要手动来.ld文件里面添加一行以声明你外扩的RAM,但是在声明之后,链接器只是知道有这么一块空间而不知道该把什么样的数据以什么样的形式链接到这块空间,因此我们还需要写Section,

这里规定了各个数据都应该放在哪里

因此我们需要创建一个存在于外部RAM上的数组就需要创建一个Section

到这里,链接器就满足知道外部RAM也知道什么样的数据该放在这里,下一步我们需要让链接器知道,我们要创建的数组就是这一类数据,

使用关键字attribute__来指定某一个section,这样链接器就知道该把这个数组以32位对齐的方式链接到外部SDRAM了,

当我们使用H7的时候链接器可能会默认把定义的变量链接到DTCMRAM里面

,这是一块直接位于内核的RAM,有单独的数据总线,访问速度远大于其他RAM,但是大小有限,因此也可以通过直接修改.ld让链接器把数据默认存储在普通的片内SRAM

使用 CLion 开发 STM32 项目时,如果遇到 `FAILED: CMakeFiles/LED.dir/Core/Src/main.c.obj` 错误,通常意味着编译器在处理 `main.c` 文件时出现了问题。这种错误可能由多种原因引起,包括但不限于以下几点: - **编译器路径配置错误**:CLion 默认使用的编译器路径可能与 STM32 工具链不匹配。需要确保在 `Settings` -> `Build, Execution, Deployment` -> `Toolchains` 中正确配置了交叉编译工具链(如 ARM GCC)的路径 [^1]。 - **CMakeLists.txt 文件配置错误**:`CMakeLists.txt` 文件中的编译规则可能未正确设置。确保 `file(GLOB_RECURSE SOURCES ...)` 正确包含了 `main.c` 文件所在的目录,并且 `include_directories(...)` 中包含了所有必要的头文件路径 [^1]。 - **源文件路径问题**:`main.c` 文件可能未被正确包含在 CMake 的源文件列表中。检查 `CMakeLists.txt` 文件中是否遗漏了 `Core/Src/main.c` 或其所在目录的通配符匹配。 - **编译器选项配置错误**:在 `CMakeLists.txt` 文件中,可能缺少针对 STM32 平台的特定编译器选项。例如,需要添加 `-mcpu=cortex-m4`、`-mthumb` 等选项以匹配目标处理器架构 [^1]。 - **环境变量问题**:某些情况下,环境变量(如 `PATH`)可能未正确设置,导致 CLion 无法找到所需的编译工具。确保所有必要的工具链路径已添加到系统环境变量中。 - **缓存问题**:有时,CMake 缓存可能损坏或过时。尝试清除 CMake 缓存并重新生成项目。可以通过删除 `CMakeCache.txt` 文件和 `CMakeFiles` 目录后重新运行 CMake 来解决此问题。 - **代码语法错误**:`main.c` 文件中可能存在编译器无法识别的语法错误或不兼容的代码结构。检查 `main.c` 文件中的最新更改,并确保所有代码符合 C 标准(如 C99 或 C11)。 ### 示例:检查 CMakeLists.txt 文件配置 ```cmake cmake_minimum_required(VERSION 3.10) project(LED) # 设置目标处理器架构 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mcpu=cortex-m4 -mthumb") # 包含头文件路径 include_directories( Core/Inc UserApp ) # 收集源文件 file(GLOB_RECURSE SOURCES "startup/*.*" "Drivers/*.*" "Core/*.*" "UserApp/*.*" "3rdParty/*.*" ) # 添加可执行文件 add_executable(LED ${SOURCES}) ``` ### 示例:清除 CMake 缓存 1. 删除 `CMakeCache.txt` 文件。 2. 删除 `CMakeFiles` 目录。 3. 重新运行 CMake 生成构建系统。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值