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


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

    一、标准库

    标准库的启动文件是:

    	startup_stm32f10x_ld.s
        startup_stm32f10x_md.s
        startup_stm32f10x_hd.s
    
    • 1
    • 2
    • 3

    对应的宏定义是:

    	STM32F10X_LD
        STM32F10X_MD
        STM32F10X_HD
    
    • 1
    • 2
    • 3

    分别对应小容量、中容量、大容量产品。这里的容量是指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
    
    • 1
    • 2
    • 3
    • 4

    对应的宏定义是:

    	STM32F103x6
        STM32F103xB
        STM32F103xE
        STM32F103xG
    
    • 1
    • 2
    • 3
    • 4

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

    注意这里不要对号入座,四个宏定义对应四类产品,并不是说和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

    在这里插入图片描述

  • 相关阅读:
    常用排序算法总结对比
    Springboot旅游餐饮服务平台r1n3j计算机毕业设计-课程设计-期末作业-毕设程序代做
    Python之第六章 内置容器 --- 字典(映射)
    python+vue+elementui校园运动场地体育器材管理系统
    Golang学习之路6-goroutine并发
    自学CFD:我在实习岗速成无人机设计和仿真的故事
    华为设备配置攻击溯源命令
    Chai的入门
    使用docker运行应用程序
    java毕业设计汽车4S服务管理系统mybatis+源码+调试部署+系统+数据库+lw
  • 原文地址:https://blog.csdn.net/qq_30267617/article/details/134554478