硬汉嵌入式论坛

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

[有问必答] CubeMX STM32F411 64MHz Flash等待时间配置异常

[复制链接]

3

主题

17

回帖

26

积分

新手上路

积分
26
发表于 2020-6-16 19:26:47 | 显示全部楼层 |阅读模式
CubeMX 配置STM32F411系列单片机Flash延时配置异常问题
CubeMX Version 5.6.1
单片机:STM32F411CEU6

根据RM0383 Reference manual STM32F411xC/E advanced Arm ® -based 32-bit MCUs文件描述,在3.3V供电时,当主时钟频率为64M时,CPU读取Flash等待时间应该为1个时钟周期。
图片1.png
而CubeMX配置结果为0个周期,导致程序运行失败。以下为CubeMX配置的keil5工程截图。

1.设置主频为63M Hz(正常)

1

1

Keil5工程void SystemClock_Config(void)函数内容

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
  {
    Error_Handler();
  }

2.设置主频为64M Hz(异常)

2

2

Keil5工程void SystemClock_Config(void)函数内容

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
  {
    Error_Handler();
  }
此处应该为FLASH_LATENCY_1

3.设置主频为65M Hz(正常)

3

3

Keil5工程void SystemClock_Config(void)函数内容

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
  {
    Error_Handler();
  }

我也测试了407 412等芯片,无此问题,但不排除其他STM32系列也可能存在该问题,大家使用CubeMX时如果发现工程配置后运行就出现死机现象时请注意检查是否是该问题引起。
另外,我也反馈给ST官方了,希望他们能尽快解决。


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2020-6-17 00:26:10 | 显示全部楼层
没看懂你的描述。关键问题没有描述清楚。
64MHz的时候,你配置的FLASH_LATENCY_0是怎么个测试思路
回复

使用道具 举报

3

主题

17

回帖

26

积分

新手上路

积分
26
 楼主| 发表于 2020-6-17 08:28:40 | 显示全部楼层
eric2013 发表于 2020-6-17 00:26
没看懂你的描述。关键问题没有描述清楚。
64MHz的时候,你配置的FLASH_LATENCY_0是怎么个测试思路

这个不是配置的,是CubeMX生成的,时钟配置为64M时,应该生成FLASH_LATENCY_1,但CubeMX却错误的生成了FLASH_LATENCY_0,导致无法运行。我觉得这是CubeMX本身的Bug.
回复

使用道具 举报

21

主题

481

回帖

544

积分

金牌会员

积分
544
发表于 2020-6-17 11:04:28 | 显示全部楼层
帖子上面说的延迟应该是指初始化static变量(变量的初始化值保存在片内flash)的速度吧?不知道这样理解对不对
有个问题请教,假设CPU运行频率为64M(即HCLK=64M),片内flash运行代码指令(假设指令是单周期指令)速度是否为64M?还是要打个折扣?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2020-6-17 11:07:29 | 显示全部楼层
zysxdg 发表于 2020-6-17 08:28
这个不是配置的,是CubeMX生成的,时钟配置为64M时,应该生成FLASH_LATENCY_1,但CubeMX却错误的生成了FL ...

明白你的意思了,这个处理的确是欠妥。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2020-6-17 11:10:55 | 显示全部楼层
h_007 发表于 2020-6-17 11:04
帖子上面说的延迟应该是指初始化static变量(变量的初始化值保存在片内flash)的速度吧?不知道这样理解对 ...

STM32的flash有个Chrome ART加速,可以试下类似0等待周期。
回复

使用道具 举报

21

主题

481

回帖

544

积分

金牌会员

积分
544
发表于 2020-6-17 11:19:26 | 显示全部楼层
非常感谢@eric2013,0等待周期在有些场合很重要,类似GD32的技术
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2020-6-17 12:02:06 | 显示全部楼层
h_007 发表于 2020-6-17 11:19
非常感谢@eric2013,0等待周期在有些场合很重要,类似GD32的技术

早期M3内核芯片刚出来那会,有个流明MCU,TI后来收购了,

是真正做到主频速度下0等待周期的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-17 03:55 , Processed in 0.042540 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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