OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5475|回复: 5

关于__HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState)的问题

[复制链接]

2

主题

6

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2022-8-1
在线时间
10 小时
发表于 2023-2-1 18:29:40 | 显示全部楼层 |阅读模式
5金钱
最近开始学习MiniPro STM32H750开发板。使用DAP进行烧录程序后发现正点的所有程序均无法使用,程序均会进入HardFault_Handler()。进一步调试发现为__HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState)出现异常,位置为stm32h7xx_hal_rcc.c第433行。
该宏完整展开为
#define __HAL_RCC_HSE_CONFIG(__STATE__)                        
                    do {                                       
                      if ((__STATE__) == RCC_HSE_ON)            
                      {                                         
                        SET_BIT(RCC->CR, RCC_CR_HSEON);         
                      }                                         
                      else if ((__STATE__) == RCC_HSE_OFF)      
                      {                                         
                        CLEAR_BIT(RCC->CR, RCC_CR_HSEON);      
                        CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP);      
                      }                                         
                      else if ((__STATE__) == RCC_HSE_BYPASS)   
                      {                                         
                        SET_BIT(RCC->CR, RCC_CR_HSEBYP);        
                        SET_BIT(RCC->CR, RCC_CR_HSEON);         
                      }                                         
                      else                                      
                      {                                         
                        CLEAR_BIT(RCC->CR, RCC_CR_HSEON);      
                        CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP);      
                      }                                         
                    } while(0)


根据输入参数知问题出现于这一段                      if ((__STATE__) == RCC_HSE_ON)            
                      {                                         
                        SET_BIT(RCC->CR, RCC_CR_HSEON);         
                      }     

在测试中发现,如果程序全速执行,则必然进入HardFault_Handler(),但是如果在该宏后加一断点,等待一段时间再运行,则程序正常。
环境7℃,干燥
猜想可能是硬件没有加载完毕,需要时间。但官方教程和代码中并没有与该情况有关内容,或许是我没学习到。
是否是我的开发板出现硬件问题?
请大家解惑,谢谢。

最佳答案

查看完整内容[请看2#楼]

试一下新的代码就应该没问题了 http://www.openedv.com/docs/boards/stm32/zdyz_stm32h750_minipro.html
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

96

帖子

0

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2022-7-23
在线时间
92 小时
发表于 2023-2-1 18:29:41 | 显示全部楼层
回复

使用道具 举报

4

主题

96

帖子

0

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2022-7-23
在线时间
92 小时
发表于 2023-2-2 09:52:37 | 显示全部楼层
flash算法添加对了吗
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2022-8-1
在线时间
10 小时
 楼主| 发表于 2023-2-2 16:58:28 | 显示全部楼层
羊sir 发表于 2023-2-2 09:52
flash算法添加对了吗

添加了,正点提供的flash算法。不添加的话仿真是打不开的
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2022-8-1
在线时间
10 小时
 楼主| 发表于 2023-2-2 17:55:32 | 显示全部楼层
我将stm32h7xx_it.h中的Systick_Handler原封不动移动到了main函数中,程序开始正常跑了。。
但在第一次调用HAL_GetTick()之前,也就是__HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState)之后,
打上断点再进行调试也会正常跑程序。
虽然能跑了,但更晕了
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2022-8-1
在线时间
10 小时
 楼主| 发表于 2023-2-3 16:52:13 | 显示全部楼层
羊sir 发表于 2023-2-1 18:29
试一下新的代码就应该没问题了
http://www.openedv.com/docs/boards/stm32/zdyz_stm32h750_minipro.html

非常感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 20:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表