从stm32F到stm32L

时间:2017-04-26 17:02:28

标签: c embedded microcontroller stm32 stm32ldiscovery

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

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

由于

2 个答案:

答案 0 :(得分:1)

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

真正的问题是外围设备不是说这是两个芯片而不是这是两个臂芯片,外设可以/将会变化。 ST有许多芯片使用相同的uart或相同的gpio或其他,但他们有多个用于STM32芯片的uart和多个GPIO。当他们制作新芯片时,他们会混合搭配,所以如果你想从一个芯片移植到另一个芯片,你需要通过外围设备读取新旧文档,看看有什么变化。

听起来你正在使用一个库,所以工具可能从芯片中知道你选择了哪些外设以及你需要哪个库,所以它可能找不到它们,因为那个芯片是外设,因此那个功能和那些定义不适用。一次拿一个外围设备和芯片之间的端口。

答案 1 :(得分:0)

stm32(L)设置incloud EEPROM,这对他们进入睡眠模式并希望在唤醒后恢复变量很重要。因此,请确保应用程序以睡眠模式运行,需要将数据保存在某处。因此,如果您使用STM(F)系列​​,则需要连接一个外部EEPROM