硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2809|回复: 3
收起左侧

[UART] H750 用cubemx配置串口有问题,总是进入hardfault

[复制链接]

3

主题

4

回帖

13

积分

新手上路

积分
13
发表于 2020-1-25 16:58:12 | 显示全部楼层 |阅读模式
本帖最后由 onepagememory 于 2020-1-26 08:49 编辑

cubemx,固件库都是最新版的。我使用了UART2,就用cubemx做了相应配置。但是在执行UART2初始化,调用下边这个函数的时候就会进入hardfault。



uint32_t HAL_RCC_GetPCLK2Freq(void)
{
  /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/
#if defined(RCC_D2CFGR_D2PPRE2)

   // return HAL_RCC_GetHCLKFreq();  本来是应该执行下边那条指令的,为分析问题我简化成这样,还是会进入hardfault
  return (HAL_RCC_GetHCLKFreq() >> ((D1CorePrescTable[(RCC->D2CFGR & RCC_D2CFGR_D2PPRE2)>> RCC_D2CFGR_D2PPRE2_Pos]) & 0x1FU));
#else
  return (HAL_RCC_GetHCLKFreq() >> ((D1CorePrescTable[(RCC->CDCFGR2 & RCC_CDCFGR2_CDPPRE2)>> RCC_CDCFGR2_CDPPRE2_Pos]) & 0x1FU));
#endif
}


看上去是HAL_RCC_GetPCLK2Freq 这个函数导致的,但是如果我把这个函数放到main.c初始化时单独执行,也是可以执行通过的,如下:

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_QUADSPI_Init();
  MX_TIM1_Init();
  val = HAL_RCC_GetHCLKFreq();   //这样执行就能通过,奇怪
  MX_USART2_UART_Init();



肺炎肆虐加天气不好,只能在家工作了,却碰上这么个低级问题。请大家帮忙看看,谢谢。
好像老板是武汉的吧,祝身体健康,肺炎不侵。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2020-1-25 22:59:21 | 显示全部楼层
参考我们的吧,8串口FIFO的案例:

http://www.armbbs.cn/forum.php?m ... 6980&extra=page%3D1


QQ图片20200125225935.png
回复

使用道具 举报

3

主题

4

回帖

13

积分

新手上路

积分
13
 楼主| 发表于 2020-1-26 08:51:13 | 显示全部楼层
eric2013 发表于 2020-1-25 22:59
参考我们的吧,8串口FIFO的案例:

http://www.armbbs.cn/forum.php?m ... 6980&extra=page%3D1

我在卡死的程序那里手动给个频率值也能过去,解决办法还是有的。但是我想知道为什么会这样
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2020-1-26 09:05:23 | 显示全部楼层
onepagememory 发表于 2020-1-26 08:51
我在卡死的程序那里手动给个频率值也能过去,解决办法还是有的。但是我想知道为什么会这样

用我们H7-TOOL和V7帮你测试了,都无此问题。

具体你那里什么情况,自己检查下吧。
QQ截图20200126091745.png
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-13 20:19 , Processed in 0.269970 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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