STM32-标准库和HAL库-不同容量系列的代码移植

使用STM32单片机过程中经常会涉及到不同芯片间的代码转换,手头上熟悉的工程需要稍作处理才能用到新的板子上。常见的是STM32F103xE、STM32F103xC(大容量)和STM32F103x8、STM32F103xB(中容量)的转换。这里做一下总结,区分标准库和HAL库。

一、标准库

标准库的启动文件是:

	startup_stm32f10x_ld.s
    startup_stm32f10x_md.s
    startup_stm32f10x_hd.s

对应的宏定义是:

	STM32F10X_LD
    STM32F10X_MD
    STM32F10X_HD

分别对应小容量、中容量、大容量产品。这里的容量是指FLASH的大小,判断方法如下:

小容量:16K<=FLASH≤32K
中容量:64K≤FLASH≤128K
大容量:256K≤FLASH<=512k
超大容量:768K≤FLASH<=1024K

常用型号的FLASH大小为:
STM32F103xE:512K,大容量;
STM32F103xC:256K,大容量;
STM32F103xB:128K,中容量;
STM32F103x8:64K,中容量;
STM32F103x6:32K,小容量;
STM32F103xG:1024K,超大容量;

工程移植需要改三个地方,器件、启动文件、宏定义

1. 更换器件:

在这里插入图片描述

2. 更换启动文件

从大容量换成中容量,例如ZE换成c8,需要把startup_stm32f10x_hd.s换成startup_stm32f10x_md.s
反之则把把startup_stm32f10x_md.s换成startup_stm32f10x_hd.s

在这里插入图片描述

3. 更改宏定义:

c/c++标签页下的Define的STM32F10X_HD更换成STM32F10X_MD

在这里插入图片描述

当然,如果你原本的工程用的是大容量产品,用到了其中的外设是中容量产品没有的,肯定会出错,这时候就要改代码,删掉没有的功能了。例如STM32F103C8没有串口4和串口5,有相关的代码就会出错。

二、HAL库

HAL库的启动文件是:

	startup_stm32f103x6.s
	startup_stm32f103xb.s
	startup_stm32f103xe.s
	startup_stm32f103xg.s

对应的宏定义是:

	STM32F103x6
    STM32F103xB
    STM32F103xE
    STM32F103xG

分别对应小容量、中容量、大容量、超大容量产品。

注意这里不要对号入座,四个宏定义对应四类产品,并不是说和STM32的明明系列一致。例如STM32F103C8STM32F103CB对应的宏定义都是STM32F103xB,千万不要自己弄一个STM32F103x8的宏定义出来。

移植的步骤如下:

1. 更换器件:

这一步与上面标准库一样

2. 更换启动文件和头文件

这一步很关键,比标准库的移植稍微麻烦一点点。容易搞错。核心:

(1)找到与自己的工程版本一致的HAL库。(HAL库版本一直在更新,不一致的HAL库可能不兼容)

(2)在HAL库中找到正确的启动文件和头文件。

首先默认你已经找到了版本一致的HAL库,如果是使用原子的例程,原子的A盘里面已经提供了。否则就要打开HAL库文件看一看版本了。

启动文件在这个目录下:STM32Cube_FW_F1_V1.8.0\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm
在这里插入图片描述

头文件在这个目录下:STM32Cube_FW_F1_V1.8.0\Drivers\CMSIS\Device\ST\STM32F1xx\Include,文件夹下有不同容量的头文件:

在这里插入图片描述

3. 更改宏定义:

与标准库步骤一样,注意使用HAL库的宏定义:STM32F103xBSTM32F103xE

在这里插入图片描述

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何为其然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值