这种错误是由于stm32函数库版本问题引起

2024-08-21 02:48

本文主要是介绍这种错误是由于stm32函数库版本问题引起,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这种错误是由于stm32函数库版本问题引起 

#include <stm32f10x_lib.h> 是旧版的 头文件

#include "stm32f10x.h"  是新版的头文件

把他们互换就好了。


compiling core_cm3.c...

compiling system_stm32f10x.c...
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h(23): error:  #256: invalid redeclaration of type name "s32" (declared at line 487 of "..\CMSIS\stm32f10x.h")
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:   typedef signed long  s32;
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:                        ^
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h(27): error:  #256: invalid redeclaration of type name "sc32" (declared at line 491 of "..\CMSIS\stm32f10x.h")
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:   typedef signed long  const sc32;  /* Read Only */
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:                              ^
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h(31): error:  #256: invalid redeclaration of type name "vs32" (declared at line 495 of "..\CMSIS\stm32f10x.h")
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:   typedef volatile signed long  vs32;
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:                                 ^
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h(35): error:  #256: invalid redeclaration of type name "vsc32" (declared at line 499 of "..\CMSIS\stm32f10x.h")
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:   typedef volatile signed long  const vsc32;  /* Read Only */
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:                                       ^
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h(39): error:  #256: invalid redeclaration of type name "u32" (declared at line 503 of "..\CMSIS\stm32f10x.h")
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:   typedef unsigned long  u32;
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:                          ^
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h(43): error:  #256: invalid redeclaration of type name "uc32" (declared at line 507 of "..\CMSIS\stm32f10x.h")
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:   typedef unsigned long  const uc32;  /* Read Only */
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:                                ^
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h(47): error:  #256: invalid redeclaration of type name "vu32" (declared at line 511 of "..\CMSIS\stm32f10x.h")
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:   typedef volatile unsigned long  vu32;
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:                                   ^
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h(51): error:  #256: invalid redeclaration of type name "vuc32" (declared at line 515 of "..\CMSIS\stm32f10x.h")
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:   typedef volatile unsigned long  const vuc32;  /* Read Only */
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:                                         ^
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h(57): error:  #101: "RESET" has already been declared in the current scope
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:   typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus;
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:                 ^
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h(57): error:  #101: "SET" has already been declared in the current scope
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:   typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus;
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:                            ^
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h(57): error:  #256: invalid redeclaration of type name "FlagStatus" (declared at line 519 of "..\CMSIS\stm32f10x.h")
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:   typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus;
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:                                          ^
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h(57): error:  #256: invalid redeclaration of type name "ITStatus" (declared at line 519 of "..\CMSIS\stm32f10x.h")
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:   typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus;
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:                                                      ^
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h(59): error:  #101: "DISABLE" has already been declared in the current scope
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:   typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:                 ^
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h(59): error:  #101: "ENABLE" has already been declared in the current scope
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:   typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:                              ^
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h(59): error:  #256: invalid redeclaration of type name "FunctionalState" (declared at line 521 of "..\CMSIS\stm32f10x.h")
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:   typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:                                                 ^
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h(62): error:  #101: "ERROR" has already been declared in the current scope
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:   typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus;
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:                 ^
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h(62): error:  #101: "SUCCESS" has already been declared in the current scope
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:   typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus;
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:                            ^
E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h(62): error:  #256: invalid redeclaration of type name "ErrorStatus" (declared at line 524 of "..\CMSIS\stm32f10x.h")

E:\Program Files\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h:   typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus;


互换后:

.\main.c(2): #include "stm32f10x.h" //#include "stm32f10x_lib.h"  
.\stm32f10x_it.h(23): #include "stm32f10x.h" //#include "stm32f10x_lib.h"
.\Functions\AppProc.c(10): #include "stm32f10x.h" //#include <stm32f10x_lib.h>
.\Functions\buzzer.c(10): #include "stm32f10x.h" //#include <stm32f10x_lib.h>               
.\Functions\Delay.c(1): #include "stm32f10x.h" //#include "stm32f10x_lib.h"
.\Functions\Display.c(10): #include "stm32f10x.h" //#include <stm32f10x_lib.h>
.\Functions\EEPRom.c(1): #include "stm32f10x.h" //#include <stm32f10x_lib.h>               
.\Functions\HostUsart.c(10): #include "stm32f10x.h" //#include "stm32f10x_lib.h" 
.\Functions\IO4094.c(1): #include "stm32f10x.h" //#include <stm32f10x_lib.h>  
.\Functions\KeyProc.c(10): #include "stm32f10x.h" //#include <stm32f10x_lib.h>
.\Functions\Keyscanf.c(1): #include "stm32f10x.h" //#include <stm32f10x_lib.h>
.\Functions\Memory.c(1): #include "stm32f10x.h" //#include <stm32f10x_lib.h>               

这篇关于这种错误是由于stm32函数库版本问题引起的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1091903

相关文章

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

numpy求解线性代数相关问题

《numpy求解线性代数相关问题》本文主要介绍了numpy求解线性代数相关问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 在numpy中有numpy.array类型和numpy.mat类型,前者是数组类型,后者是矩阵类型。数组

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

Redis缓存问题与缓存更新机制详解

《Redis缓存问题与缓存更新机制详解》本文主要介绍了缓存问题及其解决方案,包括缓存穿透、缓存击穿、缓存雪崩等问题的成因以及相应的预防和解决方法,同时,还详细探讨了缓存更新机制,包括不同情况下的缓存更... 目录一、缓存问题1.1 缓存穿透1.1.1 问题来源1.1.2 解决方案1.2 缓存击穿1.2.1

Debian如何查看系统版本? 7种轻松查看Debian版本信息的实用方法

《Debian如何查看系统版本?7种轻松查看Debian版本信息的实用方法》Debian是一个广泛使用的Linux发行版,用户有时需要查看其版本信息以进行系统管理、故障排除或兼容性检查,在Debia... 作为最受欢迎的 linux 发行版之一,Debian 的版本信息在日常使用和系统维护中起着至关重要的作