原文:https://blog.csdn.net/xiuhua_wu/article/details/85237418
背景
前几天有个新需求,使用 STM32 的标准库(STD)做个产品的例程。之前已经做了个 HAL 的,但人家客户不干,非要 STD 的。拖了一周,想起来了,今天就开始做,但是懒啊,直接在网上找了个封装好了的 STD 例程,想直接修修改改,就完事了。
没想到,例程的芯片型号(STM32F103VC)和我手上的开发板(STM32F103C8)不一样,虽然说是都是 STM32F10x 系列,如果要直接在 Keil 上直接调试程序,还是需要把型号选成一样的。没想到在 “Options” 的 Device 把芯片信号选对了之后,就报了一堆的库错误,如下图所示:

其实这种错误,在以前的时候就有遇到过,当时直接就重新下载个一样的芯片型号的例程,直接把问题规避了。老姐长大了,该解决问题了,然后就想了想、查了查。果然,我果然长大了,能解决问题了。
本文就是记录如果解决此问题。

启动文件
咱们先从启动文件《startup_stm32f10x_XX.s》说起。
在工程目录中的 “CMSIS\startup” 文件中有好几个启动文件。不同 Flash 容量的芯片型号选择不同的启动文件,否则会报上述的错误。

具体怎么根据芯片容量选呢?
咱们来看看~~~下图是摘至 STM32F103C8T6 官方的 Product Specifications 文档《DS5319: Medium-density performance line ARM®-based 32-bit MCU with 64 or 128 KB Flash, USB, CAN, 7 timers, 2 ADCs, 9 com. interfaces》,这里面就列出了 3 个 Flash 容量等级:

Low-density :16KB 、32KB Flash
Medium-density :64KB、128KB Flash
High-density : 256KB、384KB 、512KB
Attention:这里只是针对 STM32F103 而言的。


咱们知道了芯片的 Flash 容量等级划分,咱们再回过头来看看,怎么依据容量等级去选择芯片:

Low-density :16KB 、32KB Flash 选择 startup_stm32f10x_ld.s 或 startup_stm32f10x_ld_vl.s
Medium-density :64KB、128KB Flash 选择 startup_stm32f10x_md.s 或 startup_stm32f10x_md_vl.s
High-density : 256KB、384KB 、512KB 选择 startup_stm32f10x_hd.s 或 startup_stm32f10x_hd_vl.s
Attention:这里只是针对 STM32F103 而言的。

那倒这里,咱们就可以尝试着把启动文件加入到工程中,再编译下。
是不是有的童鞋的工程还在报错呢?
从报错信息里面可以发现,报错信息都是来自《stm32f10x.h》部分的 Interrupt Number 部分。那咱们来看看这部分有什么特殊?
typedef enum IRQn 枚举类型中出现了以下几个条件编译语句,这几个条件编译语句决定了Interrupt Number 。那这些条件在哪里定义的呢?

#ifdef STM32F10X_LD......
#endif /* STM32F10X_LD */ #ifdef STM32F10X_LD_VL
.......
#endif /* STM32F10X_LD_VL */#ifdef STM32F10X_MD
.......
#endif /* STM32F10X_MD */  #ifdef STM32F10X_MD_VL
......
#endif /* STM32F10X_MD_VL */#ifdef STM32F10X_HD
......
#endif /* STM32F10X_HD */  #ifdef STM32F10X_HD_VL
......
#endif /* STM32F10X_HD_VL */#ifdef STM32F10X_XL
......
#endif /* STM32F10X_XL */  #ifdef STM32F10X_CL
#endif /* STM32F10X_CL */   

它们的定义来自 Option 中的 C/C++的 Define 里,只要咱按容量输入对应的宏,再编译,是不是就没有问题了呢~~~

总结
1.依据芯片容量选择对应的启动文件
2.依据芯片容量输入对应的宏条件

【STM32】修改芯片型号后报 Error 的解决方案相关推荐

  1. 在STM32的官方库切换芯片型号

    对象:在STM32F10X的3.5官方库的进行芯片的切换 例子:f103切换成f107 资源吸取自:野火的<[野火®]零死角玩转STM32-F103霸道>.网上大神 所需材料:STM32F ...

  2. 基于STM32系列芯片的 IAP实现的探索

    基于STM32系列芯片的 IAP实现的探索 什么是IAP? 如何实现IAP? 第一步:学习官方源代码 第二步:了解STM32芯片基本硬件参数 第三步.搞清除STM32内置Flash 第四步. STM3 ...

  3. STM32单片机不同型号之间程序适配

    STM32的单片机中,同一系列(如F0.F1.F4)不同型号(拿F1来说,如F103xB.F103xC.F103xE等)的芯片FLASH大小.RAM大小.外设会有所差异,但一般在程序编程的时候,这些芯 ...

  4. 服务器上安装ffmpeg后报错及解决方案libavdevice.so.58: cannot open shared object file: No such file or directory

    服务器上安装ffmpeg后报错及解决方案 问题描述 实习的时候要求复现从视频中提取3D骨架的论文,其中一篇源码中要用到ffmpeg来对视频进行预处理.安装完ffmpeg之后导入ffmpeg的时候出错, ...

  5. 最新MTK芯片型号汇总,MTK开发资料大全下载

    前面总结的MTK芯片资料有点混乱,不好查看,现在重新整理一份全面的MTK芯片,MTK开发设计资料,方便大家学习,下载. MTK芯片分类: MTK芯片型号大全:http://bbs.16rd.com/c ...

  6. 高通Atheros所有WiFi芯片型号参数一览

    Atheros是一家年轻的公司,该公司是基于OFDM的无线网络技术厂商,提供基于IEEE802.11a 5-GHz的芯片组,还拓展了蓝牙.GPS.以太网等领域的开发.Atheros 的主力 WiFi ...

  7. vivado2019.2修改clk_wizard时钟后报错FREQ_HZ不匹配

    vivado2019.2修改clk_wizard时钟后报错FREQ_HZ不匹配 一.问题描述: 使用clock_wizard创建一路时钟,连接到了各个模块,时钟频率设置为300M,编译固件无报错且固件 ...

  8. 华为海思芯片型号和处理器应用领域参考

    这里给大家整理了海思平台芯片型号和处理器所对应的用途,后续会持续更新/添加,大家知道的也可以在留言处告诉我 华为海思半导体(Hisilicon) 监控设备 Hi3559AV100 高端行业IP摄像头S ...

  9. 关于keil uvision5打开程序device没有芯片型号选择的问题

    通过项目直接打开--这个时候你可以留意一下你项目工程的文件类型后缀 在Device中找不到芯片型号,当我打开相同文件进行一系列的比较之后发现: 它们的后缀名并不一致,打开没有芯片型号的后缀是没有 x ...

最新文章

  1. GARFIELD@11-07-2004
  2. Android Property Animation属性动画:scale缩放动画(4)
  3. 皮一皮:爸爸的地位...
  4. 基于Linux命令行KVM虚拟机的安装配置与基本使用
  5. 贡献一个连jquery都觉的大的时候可以用的 js库
  6. 更精炼更专注的RTMPClient客户端EasyRTMPClient,满足直播、转发、分析等各种需求...
  7. docker mysql 阿里云_阿里云docker部署mysql
  8. python怎么去掉换行符_python去除字符串中的换行符
  9. Javascript 加载详解
  10. Fedora7安装后的配置
  11. 小甲鱼C++笔记(上)1-24
  12. 百度迁徙大数据整理(2019-2020)
  13. 人口各省预测模型matlab_MATLAB实验9河南省人口预测模型马尔萨斯人口模型.doc
  14. JDBC在jsp中的使用
  15. Java语言学习指导与习题解答_Java语言程序设计(第3版)学习指导与习题解析
  16. 智联招聘 'python数据分析'职位分析第一篇
  17. 一元三次方程求解(洛谷)c语言
  18. EndNote20 快捷键
  19. !!return——执行了return语句,后面的语句将不会执行!!
  20. 2022年自考专业考试(公关关系)人际关系学练习题

热门文章

  1. docker 磁盘问题:device or resource busy
  2. [转载]ns2在linux安装过程
  3. 添加栏目HyperLink
  4. 14.JAVA整型变量
  5. windows server 2008 r2 定时关机_电脑怎么定时关机 秒懂的Win10定时关机命令使用方法...
  6. 清华大学计算机系主任应明生,清华大学计算机科学与技术系导师简介:应明生...
  7. linux系统的安全机制有哪些内容,系统安全机制
  8. linux dns 问题吗,Linux下DNS的问题
  9. 输入法画面_搜狗输入法:用AI技术谱写诗意生活
  10. android rn 和webview,RN Webview与Web的通信与调试