完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用STM32CUBEMX 生成 H745双核代码,利用cubeide debug时发现M7核因为以下代码阻塞进入error_handler, 请问是为什么?
/* USER CODE BEGIN Boot_Mode_Sequence_1 */ /* Wait until CPU2 boots and enters in stop mode or timeout*/ timeout = 0xFFFF; while((__HAL_RCC_GET_FLAG(RCC_FLAG_D2CKRDY) != RESET) (timeout-- > 0)); if ( timeout < 0 ) { Error_Handler(); } |
|
相关推荐
1 条评论
1个回答
|
|
根据您提供的代码片段,问题可能出现在以下部分:
```c while((__HAL_RCC_GET_FLAG(RCC_FLAG_D2CKRDY) != RESET) & (timeout-- > 0)); ``` 这段代码的目的是等待CPU2启动并进入停止模式,或者超时。但是,这里存在一个语法错误,导致代码逻辑不正确。正确的代码应该是: ```c while((__HAL_RCC_GET_FLAG(RCC_FLAG_D2CKRDY) != RESET) && (timeout-- > 0)); ``` 这里的问题是 `&` 运算符被错误地使用了,它应该是 `&&` 运算符。`&` 是按位与运算符,而 `&&` 是逻辑与运算符。按位与运算符会将两个数的二进制表示进行逐位相与操作,而逻辑与运算符会根据两个操作数的真值进行判断。 由于这个语法错误,代码的实际执行逻辑与预期不符,可能导致M7核阻塞并进入error_handler。 解决方法是将代码中的 `&` 替换为 `&&`,如下所示: ```c while((__HAL_RCC_GET_FLAG(RCC_FLAG_D2CKRDY) != RESET) && (timeout-- > 0)); ``` 这样,代码将按照预期的逻辑执行,等待CPU2启动并进入停止模式,或者超时。如果超时发生,将调用Error_Handler()函数。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1641 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1562 浏览 1 评论
988 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
691 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1608 浏览 2 评论
1869浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
655浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
525浏览 3评论
541浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
512浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 04:04 , Processed in 1.066321 second(s), Total 96, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号