C代码从stm32F修改为stm32L

标签 c embedded microcontroller stm32 stm32ldiscovery

我正在尝试学习和掌握嵌入式 C,所以我只是要测试我在 Github 上找到的代码,该代码是为 STM32F4 发现板构建的。我实际正在开发的板是STM32L152。当我尝试构建/运行代码(显然它不起作用)时,我收到的错误主要与未定义的函数或“标识符'function_name'未定义”有关,请注意代码文件包含一个库(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 芯片,外设可以/将会有所不同。 ST有许多芯片使用相同的uart或相同的gpio或其他,但他们有不止一个用于STM32芯片的uart,以及不止一个GPIO。它们在制造新芯片时会进行混合和匹配,因此如果您想从一种芯片移植到另一种芯片,您需要逐个外围设备阅读新旧文档,看看是否有任何变化。

听起来您正在使用一个库,因此该工具可能会从芯片中知道您选择了哪些外设以及您需要哪个外设,因此它可能找不到它们,因为对于该芯片而言,该外设以及该功能和那些定义不适用。一次取出一个外围设备并在芯片之间进行移植。

关于C代码从stm32F修改为stm32L,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43640408/

相关文章:

c - 宏定义函数

C scanf格式字符串警告

c - 以更快的方式找出变量中没有设置的位

c - 变量声明与定义

c++ - 如何计算非方(矩形)矩阵的正交基

security - 根据指纹检查自签名证书是否安全?

linux - 将USB连接到linux emb设备时如何打开localhost

python -/256和%256在里面有什么用,地址是怎么分高位和低位的?

c - avr-c atmega324a 中的定时器

linux - 将对 SNMP MIB 对象的访问类型更改为读写