博主头像
ThincHEr-L

STM32的标准库环境搭建

一、建立文件夹

合理规划文件分类
合理规划文件分类

Buid文件夹存放编译后的输出文件,如HEX文件等。

Doc文件夹存放开发所需的资料,如芯片的参考手册等。

Driver文件夹存放寄存器库和标准库,这将是移植的重点。

Lib文件夹存放开发中的模块库,如MPU6050库等。

Project文件夹存放keil的项目文件。

USER文件夹存放我们的用户文件,如main.c文件等。

keilkill.bat文件是用来快速清理编译后产生的文件的,可以减轻文件的体积。

二、移植寄存器库和标准库文件

下载标准库文件

前往ST官网下载标准库文件

点击系列图标进行下载
点击系列图标进行下载

解压得到

开始移植文件

打开之前建立的Driver文件夹,新建一个名为CMSIS的文件夹和一个名为StdPeriph_Driver

前者来存放基本的固件库(寄存器库),我们依次放入内核文件、启动文件、系统初始化文件。后者来存放我们的标准库文件

这些文件我们可以从之前解压的STM32F10x_StdPeriph_Lib_V3.6.0文件中找到。
已F10x为例,
内核文件

E:\STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\CoreSupport

启动文件

E:\STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm

宏定义文件系统初始化文件

E:\STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x

全部将其移入CMSIS文件夹。

然后打开之前建立的StdPeriph_Driver文件夹

我们将移入这些文件

已F10x为例,
标准库源代码文件

E:\STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\STM32F10x_StdPeriph_Driver

用户配置文件中断回调函数文件

E:\STM32F10x_StdPeriph_Lib_V3.6.0\Project\STM32F10x_StdPeriph_Template

将文件移入StdPeriph_Driver文件夹。

提示

这里提供stm32f10x下载链接,直接从我服务器里下载,速度较慢。(点此下载)
启动文件HD、MD、LD为单片机FLASH容量,如果是f103c8t6选md就可以

三、新建项目并配置

打开keil新建项目选择对应芯片,如没有该芯片前往官网下载芯片支持包点此前往搜索下载,将项目新建在之前创建的Project文件夹下。
依次添加组

将文件全部移入对应文件夹(可只移入.c文件和.s文件)。

点开魔法棒添加全局宏定义USE_STDPERIPH_DRIVER来启用标准库。

勾选C99Mode

添加include Paths,将所有有代码的文件路径都添加上

转到Output栏和Listing栏,设置路径到之前建立的Build文件夹,并勾选Create HEX File

提示

点开系统初始化文件可以配置时钟频率

最后在main.c里copy一下代码点灯测试即可。

#include "stm32f10x.h"

void Delay(uint32_t nCount)
{
  for(; nCount != 0; nCount--);
}

int main(void){
    GPIO_InitTypeDef GPIO_InitStructure;
  
  RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC , ENABLE);                               
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 
  GPIO_Init(GPIOC, &GPIO_InitStructure);
    while(1){
        GPIO_ResetBits(GPIOC, GPIO_Pin_13);
        Delay(0xfffff);
        GPIO_SetBits(GPIOC, GPIO_Pin_13);
        Delay(0xfffff);
    }
}
已有 2 条评论
  1. 评论头像

    0w0

    陌生人 January 28th, 2025 at 12:02 pm 回复
  2. 评论头像

    ST已经停止了对标准库的支持,建议使用Hal或LL库进行学习和开发( ๑´•ω•)

    404 February 20th, 2025 at 02:46 pm 回复
发表新评论