0

我正在尝试学习和掌握嵌入式 C,所以我只是要测试我在 Github 上找到的代码,该代码是为 STM32F4 发现板构建的。我实际使用的开发板是STM32L152。当我尝试构建/运行代码(显然它不起作用)时,我得到的错误主要与未定义的函数或“标识符'function_name'未定义”有关,请注意代码文件包含一个库(库)。看一下代码文件: https ://github.com/TDAbboud/STM32F4_Examples/tree/master/04_PWM_Servo

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

谢谢

4

2 回答 2

1

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

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

听起来您正在使用库,因此该工具可能会从芯片中知道您选择了哪些外围设备以及您需要哪个库,因此它可能找不到它们,因为对于该芯片,该外围设备以及该功能和那些定义都没有申请。一次使用一个外设,并在芯片之间连接。

于 2017-04-26T18:32:23.707 回答
0

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

于 2018-09-22T01:54:54.870 回答