【STM32】Keil RTE使用记录

0 前言

  最近因为任务需要,再次开始研究STM32,打算过一遍之前记录的笔记,在创建工程模板时,突然发现一个之前被自己忽略的东西,那就是创建项目时会弹出的Run-Time Environment,抱着好奇的心态去找了一些资料,结果发现这貌似也不简单。

1 概述

  在新版Keil(UV5)中,新建一个project,选定芯片型号之后,就会自动弹出这个窗口:
在这里插入图片描述
大多数教程在这里就直接跳过了,但是通过查找资料,我发现这个Run-Time Environment,缩写RTE,实际上是Keil官方针对新版Keil出的一个快速配置项目工程的一个运行时环境。其包含了常用外设的驱动(UART、I2C、SPI、USB等),还有常用的实时操作系统(RTX、FreeRTOS、RTT等),常用的一些库和协议栈(FatFs、Jansson、MQTT、mbed TLS等),可以基本满足产品开发的需求。 在我看来,实际上就是除ST官方给出的标准库和HAL库之外的一种开发框架,也可以叫做是库。

  很明显,它最大的好处在于不用添加杂七杂八的库文件,直接在Keil中就能创建工程,十分快捷,易用。

3 GPIO示例

  接下来,将以最简单的外设——GPIO为例,来展示这个RTE框架的使用方法。

  • 首先新建项目文件,然后选择一个芯片型号,比如STM32F103C8T6,然后进入到RTE配置页面。必须选择的内容:

    • CMSIS/CORE
    • Device/Startup


    在这里插入图片描述

  • 外设选择,在Device/StdPeriph Drivers中选择。比如要选择GPIO,那么就找到GPIO,然后勾选。但是这个时候下面output可能会出现警告:
    在这里插入图片描述
    这是因为GPIO对其他外设,如RCC等有依赖关系。可以点击左下角的Resolve按钮解决依赖。
    在这里插入图片描述
    然后再点击OK,工程就创建完毕。展开创建的工程可以发现,其实这种方式也是将一些库文件添加到文件夹下,并解决了依赖关系。新建一个main文件,加上一个main函数,编译测试一下,没有意外的话应该是"0 Error(s), 2 Warning(s).,这两个警告是代码上的一些小问题,不影响。

  • GPIO实践。将以下代码复制到main.c文件,然后编译下载,正常PA4引脚下对应的LED会闪烁。

    #include "stm32f10x_gpio.h"             // Keil::Device:StdPeriph Drivers:GPIOvoid Delay_us(uint32_t xus);
    void Delay_ms(uint32_t xms);int main()
    {RCC_AHBPeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);while(1){GPIO_ResetBits(GPIOA, GPIO_Pin_4);Delay_ms(500);GPIO_SetBits(GPIOA, GPIO_Pin_4);Delay_ms(500);}
    }void Delay_us(uint32_t xus)
    {SysTick->LOAD = 72 * xus;				//设置定时器重装值SysTick->VAL = 0x00;					//清空当前计数值SysTick->CTRL = 0x00000005;				//设置时钟源为HCLK,启动定时器while(!(SysTick->CTRL & 0x00010000));	//等待计数到0SysTick->CTRL = 0x00000004;				//关闭定时器
    }void Delay_ms(uint32_t xms)
    {while(xms--){Delay_us(1000);}
    }
  • 更改配置。类似于HAL库,RTE框架生成的项目可以重新配置。在Keil中点击“绿色小饼干”按钮,就可以重新配置。
    在这里插入图片描述

4 参考链接

  • 链接1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/698683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

防御保护--入侵防御系统IPS

目录 DFI和DPI技术 --- 深度检测技术 入侵防御(IPS) 签名 入侵防御策略的配置 内容安全:攻击可能只是一个点,防御需要全方面进行 IAE引擎 DFI和DPI技术 --- 深度检测技术 DPI--深度包检测技术--主要针对完整的数据包&#xff0…

冒泡排序法的名字由来,排序步骤是什么,最坏情况下的排序次数如何计算得来的呢?

问题描述:冒泡排序法的名字由来,排序步骤是什么,最坏情况下的排序次数如何计算得来的呢? 问题解答: 冒泡排序法的名字来源于排序过程中较大的元素会像气泡一样逐渐“冒”到序列的顶端,而较小的元素则会逐…

员工离职倾向分析工具

很多公司都担心员工离职,尤其是工龄久的老员工,为什么呢? 很多离职员工带走上家机密,还有的辞职后开公司成为了上家企业的对手公司等等,这类事件非常常见,因此员工离职是一个敏感的话题。 员工离职的原因 …

基于springboot+vue的植物健康系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

力扣随笔之两数之和 Ⅱ -输入有序数组(中等167)

思路:在递增数组中找出满足相加之和等于目标数 定义左右两个指针(下标)从数组两边开始遍历,若左右指针所指数字之和大于目标数,则将右指针自减,若左右指针所指数字之和小于目标数,则左指针自加&…

前端(vue)数据存储方案

引言 本需求文档旨在明确前端项目中的数据存储需求,包括数据类型、数据结构、数据交互方式等。它定义了前端项目中需要存储和处理的数据,以及对这些数据进行访问和操作的要求。 功能需求 数据存储按数据类型分为 持久存储、内存存储(响应式…

AD24-蛇形走线

一、单端蛇形走线 1、公差参数 2、布线-网络等长调节 3、参数说明 ①手工输入绕线的长度 ②参照个网络的长度绕线 ③按照自身设置的规绕线(一般选用) 4、调节 5、最后 二、差分蛇形走线 1、布线-差分对网络等长调节 2、如在选中的时候出现问题,按CtrlD…

Linux学习方法-框架学习法——Linux应用程序编程框架

配套视频学习链接:https://www.bilibili.com/video/BV1HE411w7by?p4&vd_sourced488bc722b90657aaa06a1e8647eddfc 目录 Linux应用程序编程 Linux应用程序编程 Linux文件I/O(input/output) Linux文件I/O(五种I/O模型) Linux多进程 Linux多线程 网络通信(s…

集合、List、Set、Map、Collections、queue、deque

概述 相同类型的数据进行统一管理操作,使用数据结构、链表结构,二叉树 分类:Collection、Map、Iterator 集合框架 List接口 有序的Collection接口,可以对列表中的每一个元u尿素的插入位置进行精确的控制,用户可以根…

Qt事件过滤器

1. 事件过滤器 void QObject::installEventFilter(QObject *filterObj) bool eventFilter(QObject *obj, QEvent *event); filterObj表示事件筛选器对象,它接收发送到此QObject对象(安装事件过滤器的部件对象)的所有事件。筛选器可以停止事件…

SpringCloud-Gateway解决跨域问题

Spring Cloud Gateway是一个基于Spring Framework的微服务网关,用于构建可扩展的分布式系统。在处理跨域问题时,可以通过配置网关来实现跨域资源共享(CORS)。要解决跨域问题,首先需要在网关的配置文件中添加相关的跨域…

(六)激光线扫描-三维重建

本篇文章是《激光线扫描-三维重建》系列的最后一篇。 1. 基础理论 1.1 光平面 在之前光平面标定的文章中,已经提到过了,是指 激光发射器投射出一条线,形成的一个扇形区域平面就是光平面。 三维空间中平面的公式是: A X + B Y + C Z + D = 0 A X+B Y+C Z+D=0

矿产达人小程序修复前端

应用介绍 本文来自:矿产达人小程序修复前端 - 源码1688 矿产达人小程序: 矿产小游戏小程序是一款以矿产资源为主题的休闲娱乐游戏。以下是该小程序的主要功能特点: 游戏画面精美:小程序采用卡通化的设计风格,画面色…

程序媛的mac修炼手册-- 小白入门Java篇

最近因为要用CiteSpace做文献综述,间接接触Java了。所以,继Python、C之后,又要涉猎Java了。刺激!! 由于CiteSpace与Java要求版本高度匹配,有个匹配详情明天为大家讲解。总之,我的Java之旅开始于…

我们有在线社区啦!快来加入一起玩儿~

🙌大噶好呀!春节假期转瞬即逝,小陈已经正式开工啦~虽然不知道大家啥时候收假,但是 RTE 开发者社区㊗️诸位: 🧧🐲🙇2024 开工大吉🙇🐲&#x1f9…

企业级SAS盘SSDPM1643a PM1653 Nytro 2050 KPM71VUG3T20固态硬盘

今天给大家介绍一下KIOXIA铠侠PM7系列均衡性硬盘KPM71VUG3T20 存储容量:3200 GB 接口类型:SAS-4 读取速度:4,200 MB/s 写入速度:3,650 MB/s 工作温度:0 ℃ to 75 ℃ 储存温度:40 ℃ to 85 ℃ MTTF&a…

投放效果难衡量?如何精准提升ROI

在当前的移动互联网环境下,App获客和转化成为了许多应用面临的一大难题。随着广告买量成本的不断攀升,用户增长遭遇了瓶颈。同时,由于移动环境广告标识难以完整获取,投放效果的衡量也变得更加困难。那么,如何打破这一困…

高录用快见刊【最快会后两个月左右见刊】第三届社会科学与人文艺术国际学术会议 (SSHA 2024)

第三届社会科学与人文艺术国际学术会议 (SSHA 2024) 2024 3rd International Conference on Social Sciences and Humanities and Arts *文章投稿均可免费参会 *高录用快见刊【最快会后两个月左右见刊】 重要信息 会议官网:icssha.com 大会时间:202…

Shell变量类型和运算符

一、Shell变量类型 1、变量类型 Shell的3种变量: (1)局部变量:除了本地变量外,还有shell脚本中定义的变量。 (2)全局变量:和局部变量相对。比如环境变量就是一种全局变量。 &am…

MaxScale实现mysql8读写分离

MaxScale 实验环境 中间件192.168.150.24MaxScale 22.08.4主服务器192.168.150.21mysql 8.0.30从服务器192.168.150.22mysql 8.0.30从服务器192.168.150.23mysql 8.0.30 读写分离基于主从同步 1.先实现数据库主从同步 基于gtid的主从同步配置 主库配置 # tail -3 /etc/my.…