完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在STM32F103上运行正常的CRC代码,放到STM32F051上运行就触发HardFault.
u32 CRC_CalcBlockCRC(u32 pBuffer[], u32 BufferLength) { u32 index = 0; CRC_ResetDR();//RESET CRC calculator for(index = 0; index < BufferLength; index++) { CRC->DR = pBuffer[index]; } return (CRC->DR); } 运行会出发HardFault(在STM32F103不会出现问题), u32 CRC_CalcBlockCRC(u32 pBuffer[], u32 BufferLength) { u32 index = 0; CRC_ResetDR();//RESET THE CRC calculator for(index = 0; index < BufferLength; index++) { CRC->DR = 1;//pBuffer[index]; } return (CRC->DR); } 改成一个固定的数字就没问题。大家有遇到这个问题吗,怎么解决呢? |
|
相关推荐
1个回答
|
|
在STM32F103和STM32F051之间迁移CRC代码时,可能会遇到一些问题,因为这两个系列的微控制器在某些方面有所不同。在这种情况下,代码在STM32F103上运行正常,但在STM32F051上运行时触发HardFault。以下是一些可能的原因和解决方案:
1. **寄存器访问权限问题**:STM32F051可能对某些寄存器的访问权限有限制。请确保您的代码具有访问CRC寄存器的权限。您可以尝试在代码中添加以下宏定义来解决这个问题: ```c #define CRC_BASE ((uint32_t)0x40032000) #define CRC ((CRC_TypeDef *) CRC_BASE) ``` 然后,在您的CRC函数中使用这个定义: ```c CRC_ResetDR(); ``` 2. **时钟配置问题**:STM32F051可能需要不同的时钟配置才能正常工作。请确保您已经正确配置了时钟系统,特别是与CRC相关的时钟。您可以在初始化代码中添加以下代码来配置时钟: ```c RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE); ``` 3. **中断问题**:如果您的代码在STM32F103上使用了中断,请确保在STM32F051上也正确配置了中断。这可能涉及到中断向量表、优先级和中断服务例程的配置。 4. **内存对齐问题**:STM32F051可能对内存对齐有更严格的要求。请确保您的`pBuffer`数组是4字节对齐的。如果需要,您可以在数组定义时添加`__attribute__((aligned(4)))`属性: ```c u32 pBuffer[] __attribute__((aligned(4))); ``` 5. **代码优化问题**:编译器优化可能导致STM32F051上的问题。尝试在编译器设置中禁用优化,或者调整优化级别,看看是否能解决问题。 6. **硬件问题**:确保STM32F051硬件没有损坏或存在其他问题。您可以尝试使用其他代码或示例项目来验证硬件是否正常工作。 7. **库文件问题**:请确保您使用的是适用于STM32F051的正确库文件。错误的库文件可能导致寄存器定义错误或其他问题。 综上所述,解决这个问题需要检查多个方面,包括寄存器访问权限、时钟配置、中断配置、内存对齐、代码优化、硬件问题和库文件。通过逐步检查和调整这些方面,您应该能够找到导致HardFault的原因,并解决这个问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1683 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1582 浏览 1 评论
1013 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
703 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1627 浏览 2 评论
1892浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
675浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
538浏览 3评论
557浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
526浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 01:50 , Processed in 0.864064 second(s), Total 49, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号