STM32F7系列微控制器:资源访问与存储器结构解析

需积分: 46 149 下载量 151 浏览量 更新于2024-08-05 收藏 20.95MB PDF 举报
"STM32F7系列微控制器的响应格式及SpringBoot读取资源文件问题" 在STM32F7系列微控制器中,响应格式遵循特定的SDMMC(Secure Digital Memory Card Multi-Media Card)协议,该协议规定了命令与响应的方式。在描述中提到的响应类型主要有五种,包括R1、R1b、R3、R2和R6,这些响应类型具有不同的参数和格式。例如,CMD42用于设置或重置密码并锁定/解锁卡,CMD55用于告知卡接下来的命令是应用程序特定的而非标准命令,而CMD56则用于数据块的传输。 CMD42是一个Adaptive Data Transfer Count (adtc) 命令,它允许设置32位的数据长度,且响应格式为R1b,这意味着响应中包含了填充位和结束位,同时对于非R3响应,都有CRC校验保护以确保数据传输的准确性。 CMD55是一个Application Command,它需要一个16位的Argument字段,用于传递Relative Address (RCA),并且响应格式为R1。这个命令通知卡,下一个命令是针对特定应用的,不是标准的SDMMC命令。 CMD56也是一个Adaptive Data Transfer Count命令,可以用来从卡中读取或向卡中写入数据块,数据块大小由SET_BLOCK_LEN命令预先设定。它的响应格式根据RD/WR位来确定数据传输的方向。 这些响应格式的定义和使用对于理解STM32F7微控制器如何与SD卡进行通信至关重要,特别是对于涉及数据传输和卡状态管理的应用。 至于SpringBoot项目中遇到的jar包运行后无法读取resources目录下的文件问题,这通常是因为SpringBoot默认的类路径加载机制导致的。当项目被打包成jar时,静态资源如配置文件或其它文件会被包含在jar的内部,而不是像在开发环境中那样位于文件系统的某个目录下。因此,需要使用特定的方式来访问这些资源: 1. 使用`ClasspathResource`:可以通过`org.springframework.core.io.ClassPathResource`类来加载jar内的资源文件,例如`new ClassPathResource("filename")`。 2. 使用`ResourceUtils`:Spring框架提供的`org.springframework.util.ResourceUtils`工具类可以帮助获取classpath中的资源。 3. `@Value`注解:在配置类中,可以使用`@Value("${classpath:filename}")`来注入资源文件的内容,其中`classpath:`指定资源路径。 4. 配置`spring-boot-devtools`:这个模块可以提供热部署等功能,并且能够正确处理类路径资源,但在生产环境中通常不推荐使用。 5. 使用`FileSystemResource`:如果资源文件是在运行时的外部文件系统中,可以使用`FileSystemResource`来访问。 确保正确地引用和加载资源文件,是解决SpringBoot应用运行在jar环境下无法访问资源的关键。理解不同类型的响应格式和资源加载方法,有助于在嵌入式系统和Java应用开发中更好地进行通信和资源管理。