0

亲爱的,

我是嵌入式系统的新手。

我已经从 st.com 下载了为目标设备 STM32F072B 编写的代码示例。由于我将 Nucleo-64 与 STM32F030r8 MCU 一起使用,我需要转换下载的代码示例以支持我的目标设备 STM32F030r8。

我可以在 Keil 中构建代码示例(为 STM32F072B 编写),但是当我将目标设备更改为 STM32F030r8 时出现错误:

..\system_stm32f0xx.c(301): error:  #20: identifier "RCC_CFGR_PLLSRC_HSI48_PREDIV" is undefined

请告诉我如何转换下载的代码示例以支持我的目标设备 STM32F030r8。

问候尼亚斯

4

2 回答 2

1

谢谢亲爱的, 我找到了答案。Guillaume Petitjean 的回复让我阅读了更多的文件,最终我做到了。

问:从https://www.st.com/en/embedded-software/stm32snippetsf0.html#overview下载的 STM32SnippetsF0(C 代码示例)旨在在 STM32F072B Discovery 板上运行。因此,更改目标设备(我的案例 STM32F030r8)需要进行许多更改,例如添加支持的头文件等。 *我之前得到了提到的错误,因为我只是在设置中更改目标设备后编译但没有添加正确的头文件。:(

*我在问这个。不知道我问得对不对。无论如何,我找到的解决方案是与大家分享。

回答:

本文档说明如何在其他目标设备上使用代码片段

https://www.st.com/resource/en/data_brief/stm32snippetsf0.pdf

阅读文档并添加必要的驱动程序头文件后,我能够编译和构建代码

于 2019-11-18T12:53:31.260 回答
1

欢迎来到令人兴奋的嵌入式系统世界,其中外围设备甚至在设备的子系列中发生变化。

您的编译器抱怨的丢失的宏实际上是一个很好的提示,说明出了什么问题。查看STM32F072B 参考手册ST 列出了以下可用时钟源:

各种时钟源可用于驱动系统时钟(SYSCLK):

  • HSI 8 MHz RC 振荡器时钟
  • HSE 振荡器时钟
  • 锁相环时钟
  • HSI48 48 MHz RC 振荡器时钟(仅适用于 STM32F04x、STM32F07x 和 STM32F09x 器件)

将其与STM32F030 参考手册进行比较,我们可以看到该设备上明显缺少 HSI48 时钟。

各种时钟源可用于驱动系统时钟(SYSCLK):

  • HSI 8 MHz RC 振荡器时钟
  • HSE 振荡器时钟
  • 锁相环时钟

我猜您下载的代码片段的某些部分试图以某种方式使用丢失的 HSI48 时钟。在 IDE 中切换设备很可能会导致您的项目使用另一个设备头,其中宏“RCC_CFGR_PLLSRC_HSI48_PREDIV”根本没有定义。您也许可以改用另一个时钟源,但您的问题没有包含足够的信息来肯定地回答这个问题。

通常,在使用嵌入式设备时,从一个微控制器切换到另一个微控制器时必须非常小心。即使是最微小的差异(即使是单个寄存器或单个位)也可能会破坏您的构建,甚至会破坏您的硬件。

于 2019-11-18T11:16:51.827 回答