C代码从stm32F修改为stm32L

C code modification from stm32F to stm32L

我正在努力学习和掌握嵌入式 C,所以我只是想测试我在 Github 上找到的代码,它是为 STM32F4 发现板构建的。我实际使用的板是 STM32L152。当我尝试 build/run 代码(显然它不会工作)时,我得到的错误主要与未定义的函数或“identifier 'function_name' is undefined",注意代码文件包含一个库(lib)。 看一下代码文件: https://github.com/TDAbboud/STM32F4_Examples/tree/master/04_PWM_Servo

一般来说,STM32L1上的代码需要做哪些修改才能成功运行?

谢谢

这是两种不同的芯片。仅仅因为它们来自 ST 只是因为它们是基于 ARM 的,所以它们不是同一个芯片。对于初学者来说,stm32f4 是 cortex-m4 而 stm32l 可能不是,99.9% 的代码不会关心,只是一些汇编可能。如果 stm32l 是一个 cortex-m0,那么你的指令就少得多,所以如果它是一个 cortex-m3,那么程序集就会很重要,那么它就不会了。

真正的问题是外围设备不是这是两个 st 芯片不是这是两个 arm 芯片,外围设备 can/will 各不相同。 ST 有许多芯片使用相同的 uart 或相同的 gpio 或其他,但他们有不止一个用于 STM32 芯片的 uart,以及不止一个 GPIO。它们在制造新芯片时混合搭配,因此如果你想从一个移植到另一个,你需要通过外围设备阅读新旧文档以查看是否有任何变化。

听起来您正在使用一个库,所以该工具可能会从芯片上知道您选择了您拥有的外围设备以及您需要哪个库,因此它可能找不到它们,因为对于该芯片而言,该外围设备以及该功能这些定义不适用。一次接一个外围设备,在芯片之间进行端口连接。

stm32 (L) 系列 incloud EEPROM,当他们进入睡眠模式并希望在唤醒后恢复变量时很重要。因此,请确保应用程序处于 运行 睡眠模式,需要在某处保存数据。所以如果你使用 STM (F) 系列,需要附加一个外部 EEPROM