error: #5: cannot open source input file “stm32f10x_lib.h“:
Posted 何事误红尘
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了error: #5: cannot open source input file “stm32f10x_lib.h“:相关的知识,希望对你有一定的参考价值。
一、问题概述
一个旧程序使用了keil 4.10版本,需要统一到keil 5.17上。结果发现使用5.17编译报错:
提示缺少stm32f10x_lib.h文件,查看了下工程目录,确实没有这个文件。而且对这个头文件完全没印象。可是为什么在4.10版本就能编译呢?
二、问题解决
网上查了一下,不少人遇到这个问题,一种解决方法是为工程添加一个stm32f10x_lib.h文件。不过我测试了下,找了一个stm32f10x_lib.h加进去,结果又报另一个头文件缺失:
把这个头文件加进去,又继续报一个新头文件丢失,于是放弃这种方式。
从工程结构和代码风格上看,应该是参考了原子的程序。找到原子的代码看一下,终于找到了最合适的升级方法:
- 将程序内包含的stm32f10x_lib.h全部替换为stm32f10x.h
- 将sys.c文件也更新替换下
这时再编译,配置中断时的中断线均未定义:
需要将后缀IRQChannel
更改为IRQn
即可。
三、stm32f10x_lib.h和stm32f10x.h
查询了下两个文件的区别:
stm32f10x_lib.h是ST公司V2.0版本的库函数使用的头文件,stm32f10x.h是ST公司V3.5之后统一使用的头文件,去掉了lib几个字,代表了新的版本,这个版本规范了代码,不需要包含那么多的头文件了。(链接)
怪不得没有见过stm32f10x_lib.h这个头文件,我生君已老呀。刚学STM32的时候就是下载3.5版本标准库。
可以看下stm32f10x_lib.h文件,实际是通过宏定义包括不同的头文件,如:
#ifdef _NVIC
#include "stm32f10x_nvic.h"
#endif /*_NVIC */
所以在刚开始报错的时候,手动为工程添加一个stm32f10x_lib.h文件,会继续报错找不到头文件。再看stm32f10x_nvic.h中则定义了中断线:
#define TIM1_CC_IRQChannel ((u8)0x1B) /* TIM1 Capture Compare Interrupt */
#define TIM2_IRQChannel ((u8)0x1C) /* TIM2 global Interrupt */
#define TIM3_IRQChannel ((u8)0x1D) /* TIM3 global Interrupt */
而stm32f10x.h文件中则是直接定义:
TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */
TIM2_IRQn = 28, /*!< TIM2 global Interrupt */
TIM3_IRQn = 29, /*!< TIM3 global Interrupt */
所以在升级工程时,就有了将后缀IRQChannel
更改为IRQn
的修改。
以上是关于error: #5: cannot open source input file “stm32f10x_lib.h“:的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No su
Ubuntu: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No su
Ubuntu: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No su
nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No
nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No
nmon安装出现错误error while loading shared libraries: libncurses.so.5: cannot open shared object file: No