基于江协标准库所出现的定时器5678以及串口45等无法使用的问题解析
文章目录
- 出现的问题:
- 原因分析
- 芯片支持包太老
- 启动文件需要更改
 
基于江协标准库所出现的定时器5678以及串口45等无法使用的问题解析,保姆级教程
出现的问题:
- 当正确的初始化配置定时器5\6\7\8等(除TIM1\2\3\4以外的定时器)时,使用定时器所对应的中断函数后,出现0错误0警告但是单片机运行卡死的现象。
- 当正确的初始化配置串口4、5等(除串口1、2、3以外的串口)时,使用串口中断函数,发现无法接收和发送数据,且单片机出现运行卡死的现象。
原因分析
芯片支持包太老
在正确配置的前提下:
 基于江协的STM32标准库中所使用的芯片支撑包太过古老,用的还是2011年的老古董。
 

 然而目前已经更新到了2.4.1了(2022~2023年版本的),芯片包获取:Kell.ARM官网
 以下是详细步骤:
 访问Keil官网
-  打开 Arm Keil 官方网站(www.keil.arm.com 或 www.keil.com)。  
-  点击顶部菜单栏的 Products 或 Hardware,选择 Device List 进入芯片列表页面。  
-  选择STM32芯片型号 
-  在 Vendor 下拉菜单中选择 STMicroelectronics,然后在 Core 中选择对应的 Cortex-M 内核(如不确定可不选)。  
 或直接在搜索栏输入芯片型号(如STM32F103)筛选。 
 找到目标型号(例如 STM32F103C8)后点击进入详情页。
 下载芯片支持包(DFP)
-  在芯片详情页找到 STM32F1xx_DFP 或类似命名的选项,点击 Download Recommended Pack 或 Get Pack 下载。 
-  部分型号可能需要通过 CMSIS Pack 链接下载。 
-  注意事项: 
 若需离线安装,双击下载的 .pack 文件即可自动安装。
  
 保持默认路径安装即可,记住刚才的路径回到路径下的文件夹,把之前版本的支持包删掉。
启动文件需要更改
- 江协的工程模板下用的是startup_stm32f10x_md.s打开这个文件会发现里面并没有TIM5\6\7\8等,UART4、5等的中断回调函数,这会导致及时准确的配置好并调用了中断回调函数,但依然无法识别到它,造成卡死。!
解决:
 重新添加:startup_stm32f10x_hd.s,
 并将startup_stm32f10x_md.s移出工程,
 
 否则会有以下报错:error: L6235E: More than one section matches selector - cannot all be FIRST/LAST.
 
 如果在添加完以后出现如下的报错:FCARM - Output Name not specified, please check 'Options for Target - Utilities'这是因为将文件添加到工程中以后,文件的类型不对
 应该如下图方式解决:
 
 
 然后OK即可!
