【STM32】使用RTE ,从 0 开始创建一个 (keil) ARM MDK工程(纯keil,标准库,以STM32F103C8T6为例)

这篇具有很好参考价值的文章主要介绍了【STM32】使用RTE ,从 0 开始创建一个 (keil) ARM MDK工程(纯keil,标准库,以STM32F103C8T6为例)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

学习相关的基础知识请阅读本专栏其他文章,一定有你想要的。

https://blog.csdn.net/weixin_43764974/category_11021363.html

本文软硬件:

  • STM32F103C8T6
  • ARM MDK 5.38
  • ARM complier 6
  • ST-Link v2
  • StdPeriph Drivers(标准库)

文章开始前,我想再次说一下:keilμvisionARM MDK这几个名词(尽管前面的额文章已经说过好几次了)

  • Keil是一家德国公司,提供了一系列用于嵌入式系统开发的软件工具。其中,Keil MDK(Microcontroller Development Kit)是Keil推出的一套集成开发环境(IDE),用于开发基于ARM处理器的嵌入式应用程序。

  • μVision(MicroVision)是Keil MDK的核心组件,是一个强大的集成开发环境,提供了代码编辑、编译、调试、仿真和烧录等功能。μVision作为Keil MDK的前端工具,为用户提供了友好的图形界面和便捷的开发体验。

  • ARM MDK(ARM Microcontroller Development Kit)是由ARM公司授权Keil开发的一套完整的软件开发工具套件。它结合了Keil的软件开发工具和ARM提供的CMSIS(Cortex Microcontroller Software Interface Standard)等软件库,用于开发基于ARM Cortex-M系列处理器的嵌入式系统。

通常,用 keil 代指上面3个。

一、工程结构

在Keil环境中创建STM32工程时,通常遵循以下结构:

  1. 工程文件(Project Files)

    • 工程文件.uvprojx):Keil工程的主文件,保存了工程的设置和配置信息。
    • 工程选项文件.uvoptx):保存了编译器、链接器和调试器的配置选项。
    • 工程配置文件.uvproj.user):保存了工程的用户配置选项,如源文件列表、编译选项等(这里的user是你创建工程时的Windows用户名)。
  2. 源文件(Source Files)

    • C/C++源文件(.c、.cpp):包含应用程序的主要源代码。
    • 汇编源文件(.s):可选的汇编语言文件,用于特定的处理器指令或启动代码。
    • 头文件(.h):包含各种配置和宏定义。
  3. 库文件(Library Files)

    • STM32标准外设库(.a):包含STM32芯片的标准外设库文件,提供了访问STM32外设的函数和常量。
    • 第三方库文件:如果你使用了第三方库(如FreeRTOS、CMSIS等),这些库的文件也可以放在此处。
  4. 中间文件(Intermediate Files)

    • 目标文件(.o):编译源文件生成的目标文件,用于后续的链接操作。
    • 列表文件(.lst):包含了编译后的汇编代码,可以用于调试和分析。
  5. 输出文件(Output Files)

    • 可执行文件(.axf、.elf):链接器将目标文件链接成可执行文件,用于烧录到STM32芯片上运行。
    • HEX文件(.hex):可执行文件的十六进制格式,常用于烧录器烧录。
    • BIN文件(.bin):可执行文件的二进制格式,也常用于烧录器烧录。
  6. 调试文件(Debug Files)

    • 调试信息文件(.axf、.elf):包含了调试器需要的符号信息和调试信息。
    • 调试输出文件(.txt):包含了调试过程中的输出信息和日志。

除了上述文件之外,Keil工程中还可能包含其他辅助文件,如:

  • 启动文件(startup_xxx.s):包含处理器的启动代码,初始化处理器和外设。
  • 配置文件(xxx.h):包含各种配置选项和宏定义。
  • 驱动文件(xxx.c、xxx.h):用于特定外设的驱动程序代码和头文件。
  • 中断处理函数(xxx.c):处理中断请求的函数。

这个是为了方便你读别人的代码做的说明,你想怎样就怎样(但别随意),不过都大同小异。最核心的就是 用户程序+系统文件 (启动文件、驱动文件等等)。

二、实操

关于keil的详细介绍,可以看本专栏之前的文章。

(1)点击project—>new μVision project,选择一个工程的保存位置

(2)选择设备:STM32F103C8(这里的pack要先安装,前面文章已经详细介绍过)

【STM32】使用RTE ,从 0 开始创建一个 (keil) ARM MDK工程(纯keil,标准库,以STM32F103C8T6为例),Embedded Systems,stm32,实时互动,arm开发,原力计划

(3)点击 OK会弹出一个运行时的配置界面

【STM32】使用RTE ,从 0 开始创建一个 (keil) ARM MDK工程(纯keil,标准库,以STM32F103C8T6为例),Embedded Systems,stm32,实时互动,arm开发,原力计划


Manage Run-Time Environment是keil软件中用来管理软件组件的一个功能。可以在这个窗口中选择或取消需要的组件,例如CMSIS、Device、Middleware等。这些组件可以提供一些预编译的库文件、头文件、源代码等,方便开发STM32工程。

  • 在弹出的Manage Run-Time Environment窗口中,你可以在左侧的树状列表中看到不同类别的组件,例如CMSIS、Device、Middleware等。右侧显示了对应的描述、版本、文档等信息。

  • 在右侧的复选框中选择或取消需要的组件。一般来说,至少需要选择CMSIS->COREDevice->Startup这两个组件,它们提供了一些基本的定义和启动代码。其他的组件根据工程需求而定,例如我来点个灯,就再选一个GPIO(这里使用标准库,选择stdPeriph Drivers下的GPIO)。
    【STM32】使用RTE ,从 0 开始创建一个 (keil) ARM MDK工程(纯keil,标准库,以STM32F103C8T6为例),Embedded Systems,stm32,实时互动,arm开发,原力计划

  • 在选择完组件后,点击Resolve按钮来解决一些依赖关系或者冲突问题,帮你勾选其他的依赖选项。 (如果你只知道要使用GPIO,不知道还要勾选其他的什么,就只选一个GPIO然后让系统自动勾选)

在之后的开发中,你依旧可以点击工具栏的绿色菱形来选择需要的组件。


(4)在解决完所有的问题后,点击OK按钮来关闭Manage Run-Time Environment窗口,并生成相应的工程文件。
【STM32】使用RTE ,从 0 开始创建一个 (keil) ARM MDK工程(纯keil,标准库,以STM32F103C8T6为例),Embedded Systems,stm32,实时互动,arm开发,原力计划
前面的操作,keil已经为我们生成了工程所需的必要文件:

  • 系统初始化文件:system_stm32f10x.c,包含了一些系统初始化函数的定义。
  • 启动文件:startup_stm32f10x_md.s,包含了复位向量表和复位处理函数的定义。
  • GPIO驱动:stm32f10x_gpio.c,可以在这个文件中查看GPIO驱动的功能和参数。
  • 等等。

其中,带有黄色钥匙的文件,是无法修改的,并且不会显示在工程的文件夹中。当然,这些生成的文件通常都不需要修改。此外,有的文件还带有+号,可以展开,这体现了文件的包含关系,方便查看文件依赖。

这可能与你用的“工程模板”有点不同,因为有的项目是旧版本的keil创建的,可能没有使用软件包或者RTE(即Run-Time Environment)功能,或者是基于CubeMX创建的,比如这样:
【STM32】使用RTE ,从 0 开始创建一个 (keil) ARM MDK工程(纯keil,标准库,以STM32F103C8T6为例),Embedded Systems,stm32,实时互动,arm开发,原力计划

现在的工程目录的内容:
【STM32】使用RTE ,从 0 开始创建一个 (keil) ARM MDK工程(纯keil,标准库,以STM32F103C8T6为例),Embedded Systems,stm32,实时互动,arm开发,原力计划
后面3个是工程文件,之前介绍过了,几个文件夹分别是:

  • RTE:这个文件夹包含了你选择的软件组件的配置文件、头文件和源文件。您可以在这里查看或修改您的组件设置和代码。
  • DebugConfig:这个文件夹包含了你的调试配置文件,例如目标设置、调试器设置、跟踪设置等。可以在这里查看或修改调试参数。
  • Listings:这个文件夹包含了工程编译后生成的汇编代码、符号表、映射文件等。可以在这里查看或分析您的编译结果。
  • Objects:这个文件夹包含了工程编译后生成的目标文件、库文件、可执行文件等。

5)编写用户程序

  • 可以在工程文件夹中新建一个用户程序文件夹,比如User

  • 然后新建文件,另存为.c文件,保存到刚才的文件;

  • 编写代码;

  • 把他们添加到keil中:

    • 点击Manage project items ,新建Group,添加刚刚的源文件,如图:
      【STM32】使用RTE ,从 0 开始创建一个 (keil) ARM MDK工程(纯keil,标准库,以STM32F103C8T6为例),Embedded Systems,stm32,实时互动,arm开发,原力计划
    • option for target中,勾选生成hex文件

6)下载

我使用ST-Link下载的,如果不会可以看我之前的文章:

【STM32】自举模式 和 程序下载(ST-Link和串口示例)

三、注意事项

3.1 我好像少了一些设置?

本文中,我使用的是STM32F103C8T6,在项目中,只是简单实现了LED灯的亮灭控制。上面只有一个mian.c文件。
【STM32】使用RTE ,从 0 开始创建一个 (keil) ARM MDK工程(纯keil,标准库,以STM32F103C8T6为例),Embedded Systems,stm32,实时互动,arm开发,原力计划

我的完整工作流概述是:

  1. 新建工程,选择型号;
  2. 配置RTE;
  3. 编写程序;
  4. 将程序添加到keil;
  5. 选择生成hex文件;
  6. 编译;
  7. 设置ST-Link下载;
  8. Download。

由于我是使用RTE创建的工程,RTE会自动处理必要的包含路径和库文件,以确保正确的编译和链接过程。它会基于你在RTE配置向导中选择的设备和外设驱动程序,自动生成相应的配置文件,包括正确的包含路径。RTE也会根据你选择的设备和外设驱动程序自动生成相应的处理器符号和宏定义。

也就是说,这些设置通常都不用管(当然,如果你自己编写了头文件,可能需要指定包含路径):
【STM32】使用RTE ,从 0 开始创建一个 (keil) ARM MDK工程(纯keil,标准库,以STM32F103C8T6为例),Embedded Systems,stm32,实时互动,arm开发,原力计划

3.2 RTE中驱动库API的选择

【必看】如何选择SPL库、HAL库、LL库?详细的介绍看新文章:https://blog.csdn.net/weixin_43764974/article/details/132416118

CMSIS DriverARM 公司定义的通用驱动接口标准,用于各种 Cortex-M 微控制器的外设控制。它提供了一致的编程接口和移植性,使得驱动代码可以在不同厂商的微控制器之间共享和重用。STMicroelectronics 提供了符合 CMSIS Driver 标准的驱动实现,以便与其 STM32 系列微控制器兼容。

HAL (Hardware Abstraction Layer)STMicroelectronics 提供的一种高层次的库,用于 STM32 微控制器的外设编程。HAL 提供了对 STM32 系列特定外设的功能函数和配置选项,使得开发人员可以相对简单地编写和控制外设。HAL 位于 CMSIS Driver 之上,使用 CMSIS Driver 提供的底层接口进行外设的控制。

stdPeriph Drivers 是由 STMicroelectronics 提供的旧版外设驱动库。stdPeriph Drivers 提供了较高层次的 API,使编程相对简单,但对于不同系列的 STM32 微控制器,其外设功能和寄存器定义可能有所差异。

附录、代码

简单的LED闪烁,标准库:

复制后如果中文乱码,修改编码为UTF-8即可。

#include "stm32f10x.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_gpio.h"

void LED_Init(void); //LED初始化函数声明
void Delay(uint32_t nCount); //延时函数声明

int main(void)
{
  LED_Init(); //调用LED初始化函数
  while (1)
  {
    GPIO_ResetBits(GPIOC, GPIO_Pin_13); //将PC13置低,点亮LED
    Delay(0x0FFFFF); //延时一段时间
    GPIO_SetBits(GPIOC, GPIO_Pin_13); //将PC13置高,熄灭LED
    Delay(0x0FFFFF); //延时一段时间
  }
}


void LED_Init(void) //LED初始化函数定义
{
  GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO初始化结构体变量
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能GPIOC端口时钟
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; //选择PC13引脚
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置为推挽输出模式
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置IO口速度为50MHz
  GPIO_Init(GPIOC, &GPIO_InitStructure); //根据参数初始化GPIOC
  GPIO_SetBits(GPIOC, GPIO_Pin_13); //将PC13置高,熄灭LED
}

void Delay(uint32_t nCount) //延时函数定义
{
  for(; nCount != 0; nCount--); //循环减计数
}

效果:

【STM32】使用RTE ,从 0 开始创建一个 (keil) ARM MDK工程(纯keil,标准库,以STM32F103C8T6为例),Embedded Systems,stm32,实时互动,arm开发,原力计划



~ 文章来源地址https://www.toymoban.com/news/detail-596728.html

到了这里,关于【STM32】使用RTE ,从 0 开始创建一个 (keil) ARM MDK工程(纯keil,标准库,以STM32F103C8T6为例)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MDK keil5新建STM32工程文件--实践篇

    一、先下载芯片支持包 第一步 :当然是先百度搜索我们的keil官网(网址):https://www.keil.com/   第二步 :点击首页的Project,会跳转如界面,再次点击Arm Cortex-M,如图所示:    第三步 :点击后会再次跳转,这时候我们再次点击Public Software Packs,如图所示: 第四步 :点击后

    2024年02月16日
    浏览(24)
  • 还在老一套?STM32使用新KEIL5的IDE,全新开发模式RTE介绍及使用

    Keil新版本出来了,推出了一种全新开发模式RTE框架( Run-Time Environment),更好用了。然而网上的教程资料竟还都是把Keil5当成Keil4来用,直接不使用这个功能。当前正点原子或野火的教程提供的例程虽有提到Keil5,但也是基本上当Keil4来用,还是传统的模式或标准库或HAL库。当然

    2024年02月05日
    浏览(29)
  • 【正点原子STM32】STM32初体验(Keil MDK工具下载使用、DAP仿真器、MDK上配置DAP、Debug)

    一、MDK5编译例程 二、串口下载程序 2.1、串口下载程序须知 2.2、串口下载硬件连接 2.3、配置下载工具 (ATK-XISP.exe) 2.4、STM32启动模式(M3和M4) 三、DAP下载程序 3.1、DAP下载硬件连接 3.2、在MDK上配置DAP 不同开发板的下载算法有所不同 Build构建 F7、Download下载 F8 四、DAP调试程序 4.

    2024年02月20日
    浏览(19)
  • Keil5 开发 STM32 工程创建

    打开Keil5软件,点Project菜单的的下来选项New uVision Project…,然后选择工程文件夹放置的目录,新建项目目录,如:LED闪烁 点击OK后,会弹出配置运行时环境的选项框,关闭即可,该方法使用手动配置。 完成后,如下图: 打开项目目录,分别创建3个文件夹:Library, Start, User,

    2024年02月16日
    浏览(23)
  • keil_5创建STM32工程,超详细

    1、点击Project创建新的工程文件 2、新建一个文件夹作为工程目录,命名为2-2 STM32工程模板。        在该工程目录下给工程文件命名为Project 3、选择器件型号,因为使用的芯片型号是STM32F103C8T6,所以型号选STM32F103C8,后点击OK. 4、工程创建好后,里面是空的,需要为其添加

    2024年02月02日
    浏览(27)
  • Keil5创建新工程时找不到STM32芯片

    在安装完Keil5之后,需要导入STM32芯片包,但是按照网上提供的安装教程,直接点击资料包会报错,如下图:         没有显示可用STM32芯片 尝试解决: 在安装的软件目录下找到 .KEil5UV4PackUnzip.exe ,找到其属性,将其兼容性改为以管理员身份运行。如图:      设置完后,

    2024年02月11日
    浏览(30)
  • STM32 keil MDK配置FPU详解

    记录下keil对FPU的配置,及对应的宏参数。 FPU单元是芯片上一个独立于CPU处理的浮点运算单元,整个单元可以被使能和关闭。 STM32F4带有32位单精度硬件FPU支持浮点指令集。相比Cortex-M3、Cortex-M0等无FPU的芯片高出数十倍甚至上百倍的运算性能。 STM32F7/H7及以上处理器带有双精度

    2024年02月11日
    浏览(12)
  • keil官网下载MDK的STM32芯片pack包

    背景         最近重装了电脑系统,重新安装了MDK所以导致MDK芯片包需要重新下载,软件内下载又太慢,所以趁现在找到了官网下载方法把方法分享出来供大家参考。 1、在浏览器中输入网址:www.keil.arm.com进入如下界面,然后点击:Hardware -Devices 2、在Devices中选择,在红色方框

    2024年02月13日
    浏览(18)
  • 使用Git管理keil Stm32工程

    在软件开发领域,版本控制是非常重要的一环。它能够让我们追踪代码的变化、合作开发、管理不同的版本以及回滚到之前的状态。Git 是一个流行的分布式版本控制系统,本文将向你介绍如何使用 Git 来管理你的代码(以keil工程为例)。 一、Git Bush的配置 在使用git之前,我

    2024年02月04日
    浏览(15)
  • 【STM32】STM32CubeMX创建第一个工程

    STM32CubeMX是STM32Cube工具家族中的一员,从MCU/MPU选型,引脚配置,系统时钟以及外设时钟设置,到外设参数配置,中间件参数配置,它给STM32开发者们提供了一种简单,方便,并且直观的方式来完成这些工作。所有的配置完成后,它还可以根据所选的IDE生成对应的工程和初始化

    2024年04月09日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包