开始学习STM32,用的是 秉火F429挑战者开发板,把学习中一些查倒的资料汇总,以及各种解决的问题汇总在此,也算是对自己的一个督促。
1、缺少编译器配置文件
开始编程,用STM32控制LED灯。代码稍微改了一下没反应,把原始代码拷过去还是没反应。
结果是工程文件夹下没有 JLinkSettings.ini 配置文件
2、编译出错
(1)宏定义出错
编译出错error:command-line:#992:inva maco definition:STM3210X_HD.USE_STDPERIPH_DRIVER
全局宏定义标识符中间用逗号隔开,你用的点号。。。
STM3210X_HD.USE_STDPERIPH_DRIVER
中间那个换成逗号(半角)而不是点, 改为:STM3210X_HD,USE_STDPERIPH_DRIVER
来自 http://www.openedv.com/posts/list/48091.htm
(2)重复定义去掉不用的C文件
编译出错 Symbol SystemCoreClock multiply defined (by system_stm32f10x_1.o and system_stm32f10x.o).
来自 http://www.firebbs.cn/thread-15533-1-1.html
把system_stm32f10x_1.c这个C文件从工程里面去掉。
(3)TimingDelay函数问题
TimingDelay_Decrement编译相关问题
出现stm32f10x_it.c(143): warning: #223-D: function "TimingDelay_Decrement" declared implicitly
解决方案:去掉stm32f4xx_it.c中的 TimingDelay_Decrement()函数
void SysTick_Handler(void)
{
TimingDelay_Decrement();
}
其它决方案:在stm32f10x_it.c文件中,外部声明extern void TimingDelay_Decrement(void);
来自 https://blog.csdn.net/u013199724/article/details/22782805stm32编译出错,Undefined symbol TimingDelay_Decrement (referred from stm32l1xx_it.o).
来自 http://www.openedv.com/thread-32917-1-1.html
TimingDelay_Decrement所在的头文件没加到stm32l1xx_it.c中或者stm32l1xx_it.h中
void SysTick_Handler(void)
{
TimingDelay_Decrement();
}
去掉TimingDelay_Decrement()函数
有些数据结构使用extern声明了,但是原型的声明无法找到,可能是因为被删除,或者忘了把对应模块的.c文件添加到工程中。