当前位置: 首页 > article >正文

STM32——新建工程并使用寄存器以及库函数进行点灯

本文是根据江协科技提供的教学视频所写,旨在便于日后复习,同时供学习嵌入式的朋友们参考,文中涉及到的所有资料也均来源于江协科技(资料下载)。

新建工程并使用寄存器以及库函数进行点灯操作

    • 新建工程步骤
    • 1.建立工程
    • 2.配置寄存器进行点灯操作
    • 3.添加库函数
      • 使用库函数进行点灯操作

新建工程步骤

  • 建立工程文件夹,Keil中新建工程,选择型号
  • 工程文件夹中建立Start、Library、User等文件夹,复制固件库里的文件到工程文件夹
  • 在工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加到工程分组里(Keil不能直接添加文件夹,所以需要建立组进行添加相应文件。.h文件不参与编译过程,但是为了方便看,也加入了.h文件)
  • 工程选项中,C/C++, Include Paths内需要声明所有包含头文件的文件夹(Start、Library都是自己建的,Keil软件并不知道,所以必须申明路径,将所有新建文件夹都进行申明,这样不会出现.h文件找不到的情况)
  • 工程选项中,C/C++, Define内定义USE_STDPERIPH_DRIVER(使用库函数就必须定义USE_STDPERIPH_DRIVER)
  • 工程选项中,Debug, 下拉列表选择对应调试器,Settings,Flash Download里勾选Reset and Run

在这里插入图片描述

conf.h包含了所有库函数的头文件
在stm32f10x.h最后包含了conf.h,所以在使用库函数时,只需要包含stm32f10x.h这一头文件,就相当于包含了所有库函数的头文件

在这里插入图片描述

1.建立工程

建立工程文件夹,Keil中新建工程,选择型号

在这里插入图片描述

STM32是从启动文件开始执行的,所以新建工程时首先加的就是启动文件。启动文件有很多类,需要根据芯片型号选择对应的启动文件。STM32F103需要选择带有LD、MD、HD、XL的启动文件

在这里插入图片描述

找到STM32的启动文件,复制所有的启动文件

在这里插入图片描述

在工程文件目录下新建一个文件夹Start,用来存放启动文件

在这里插入图片描述

回到固件库中STM32F10x目录下,复制下面三个文件到刚刚新建的文件夹Start中

在这里插入图片描述

cm3文件是内核寄存器的描述,同样复制到Start目录下

在这里插入图片描述

此时,你的新建文件夹中应该包含这些文件

在这里插入图片描述

在Keil5中,将Source Group1重命名为Start(选中,单击进行修改),右键Add Existing Files to Group’Start’

在这里插入图片描述

在这里插入图片描述

CTRL选中所有.c以及.h文件,点击添加,添加好的文件如下,这些文件是只读文件

在这里插入图片描述

接着需要在工程选项里添加Start文件夹的头文件路径,否则无法找到.h文件

在这里插入图片描述

这样就添加好了该文件夹的头文件路径
在这里插入图片描述

写一个main函数测试该工程是否可行。打开工程文件夹,新建一个User文件夹

在这里插入图片描述

右键Target 1,点击Add Group,新建好的组改为User

在这里插入图片描述

右键User,点击Add New item to Group ‘user’

在这里插入图片描述

在这里插入图片描述

在main.c中右键插入头文件

在这里插入图片描述

文件的最后一行必须是空行,否则会warning。写好之后点击编译变建立工程按钮,0 Error,0 Warning说明工程没有问题

在这里插入图片描述

该工程目前是一个基于寄存器开发STM32的工程(还没有添加STM32的库函数)

2.配置寄存器进行点灯操作

如何调整字体

在这里插入图片描述

为了防止中文乱码问题,选择UTF-8编码

在这里插入图片描述

按照下图进行连接,STLINK插在电脑上,电源灯应该会常亮,另一个连接在PC13口上的灯默认闪烁状态

在这里插入图片描述

在Keil中配置调试器

在这里插入图片描述

重新编译,没有错误

在这里插入图片描述

点击Load,程序会下载到STM32中,板子的灯不再闪烁

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

以上就是通过配置寄存器进行点灯的过程,需要不断查询手册进行配置,比较麻烦

3.添加库函数

为了存放库函数,在工程文件目录下新建文件夹Library
找到固件库目录下的src以及inc,将目录下内容全部复制到工程文件目录下新建的Library中

在这里插入图片描述

在这里插入图片描述

在Keil5中右键Target新建组,改名为Library,右键Add Existing Files to Group’Start’,CTRL全部添加。这样就添加好了所有的库函数文件,但是还不能使用

在这里插入图片描述

在固件库目录下找到STM32F10x_StdPeriph_Template文件,复制以下三个文件

在这里插入图片描述

将复制的三个文件添加到工程目录下User文件夹中

在这里插入图片描述

在User组中添加刚刚复制的三个文件

在这里插入图片描述

在这里插入图片描述

最后还需要一个宏定义,右键打开文件

在这里插入图片描述

找到 USE_STDPERIPH_DRIVER

在这里插入图片描述

在这里插入图片描述

基于库函数的工程就建好了
我们只能对User组中的文件修改,通过以下步骤可以更改文件夹顺序

在这里插入图片描述

使用库函数进行点灯操作

右键可以跳转到函数定义,选中,使用CTRL F,查找
经过函数的包装,就不需要查询手册来确定某一位的功能,而且库函数的配置不会影响到寄存器的其他位。只需要调用库函数,按照提示,填好参数即可

在这里插入图片描述

相关文章:

STM32——新建工程并使用寄存器以及库函数进行点灯

本文是根据江协科技提供的教学视频所写,旨在便于日后复习,同时供学习嵌入式的朋友们参考,文中涉及到的所有资料也均来源于江协科技(资料下载)。 新建工程并使用寄存器以及库函数进行点灯操作 新建工程步骤1.建立工程2.…...

java集合框架day1————集合体系介绍

在进入正文之前&#xff0c;我们先来思考一下之前学过的数组有什么缺点&#xff1f; <1>长度开始时必须指定&#xff0c;而且一旦指定&#xff0c;不能更改 <2>保存的必须为同一类型的元素 <3>使用数组进行增加/删除元素的代码比较麻烦 为了方便读者理解&…...

百度热力图数据获取,原理,处理及论文应用18

目录 0、数据简介0、示例数据1、百度热力图数据日期如何选择1.1、其他实验数据的时间1.2、看日历天气 2、百度热力图几天够研究&#xff1f;部分文章统计3、数据原理3.1 Bd09mc即百度墨卡托投影坐标系200单位的距离是可以自己设置的吗&#xff1f;3.2 csv文件字段说明3.3 ** 这…...

【区块链技术解析】从原理到实践的全链路指南

目录 前言&#xff1a;技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块技术选型对比 二、实战演示环境配置要求核心代码实现&#xff08;10个案例&#xff09;案例1&#xff1a;创建简单区块链案例2&#xff1a;工作…...

【身份证扫描件识别表格】如何识别大量身份证扫描件将内容导出保存到Excel表格,一次性处理多张身份证图片导出Excel表格,基于WPF和腾讯云的实现方案

基于WPF和腾讯云的身份证扫描件批量处理方案 适用场景 本方案适用于需要批量处理大量身份证扫描件的场景,例如: 企业人事部门批量录入新员工身份信息银行或金融机构办理批量开户业务教育机构收集学生身份信息政府部门进行人口信息统计酒店、医院等需要实名登记的场所这些场景…...

可穿戴设备待机功耗需降至μA级但需保持实时响应(2万字长文深度解析)

可穿戴设备的功耗与响应需求之矛盾 在过去十年中&#xff0c;可穿戴设备以惊人的速度融入我们的日常生活&#xff0c;成为现代科技与个人健康管理的重要交汇点。从智能手表到健身手环&#xff0c;从医疗监测设备到增强现实眼镜&#xff0c;这些设备不仅仅是科技产品的延伸&…...

Django视图(未分离)

ListView、DetailView、CreateView、UpdateView 和 DeleteView 是 Django 框架中基于类的通用视图&#xff08;Class-Based Generic Views&#xff09; 配置 URL 路由 在 urls.py 中为这些视图配置路由&#xff1a; from django.urls import path from .views import (PostLis…...

[Python] 入门核心笔记

目录 一、Python简介重点 二、编程语言基础重点 三、Python安装重点 四、第一个Python程序重点 五、Python解释器重点 六、Python开发环境重点 一、Python简介重点 起源&#xff1a;1989年Gudio van Rossum开发&#xff0c;1991年诞生&#xff0c;名字源于电视剧《Monty Python…...

计算机视觉与深度学习 | Transformer原理,公式,代码,应用

Transformer 详解 Transformer 是 Google 在 2017 年提出的基于自注意力机制的深度学习模型,彻底改变了序列建模的范式,解决了 RNN 和 LSTM 在长距离依赖和并行计算上的局限性。以下是其原理、公式、代码和应用的详细解析。 一、原理 核心架构 Transformer 由 编码器(Encod…...

基于语义网络表示的不确定性推理

前文我们已经了解了: 1.不确定与非单调推理的基本概念:不确定与非单调推理的基本概念-CSDN博客 2.不确定与非单调推理的概率方法:不确定与非单调推理的概率方法-CSDN博客 3.不确定与非单调推理的可信度方法:不确定与非单调推理的可信度方法-CSDN博客 4.不确定与非单调推…...

ICMAN防水触摸芯片 - 复杂环境下精准交互,提升触控体验

▍核心优势 ◆ 超强抗干扰能力 ◆ 工业级设计&#xff0c;一致性和稳定性好 ▍提供场景化解决方案 【智能厨电矩阵】抽油烟机档位调节 | 电磁炉火力触控 | 洗碗机模式切换 【卫浴设备方案】淋浴房雾化玻璃控制 | 智能马桶触控面板 | 浴缸水位感应 【工业控制应用】仪器仪…...

WWW和WWWForm类

WWW类 WWW类是什么 //WWW是Unity提供的简单的访问网页的类 //我们可以通过该类上传和下载一些资源 //在使用http是&#xff0c;默认的请求类型是get&#xff0c;如果想要用post上传需要配合WWWFrom类使用 //它主要支持的协议&#xff1a; //…...

如何在LangChain中构建并使用自定义向量数据库

1. 自定义向量数据库对接 向量数据库的发展非常迅速&#xff0c;几乎每隔几天就会出现新的向量数据库产品。LangChain 不可能集成所有的向量数据库&#xff0c;此外&#xff0c;一些封装好的数据库可能存在 bug 或者其他问题。这种情况下&#xff0c;我们需要考虑创建自定义向…...

【java实现+4种变体完整例子】排序算法中【希尔排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格

以下是希尔排序的详细解析&#xff0c;包含基础实现、常见变体的完整代码示例&#xff0c;以及各变体的对比表格&#xff1a; 一、希尔排序基础实现 原理 希尔排序是插入排序的改进版本&#xff0c;通过分步缩小增量间隔&#xff0c;将数组分成多个子序列进行插入排序&#…...

回车键监听

全局添加回车监听 // 定义一个具名函数function globalEnterHandler(event) {if (event.key Enter) {$scope.getsearch();}}// 添加监听document.addEventListener(keydown, globalEnterHandler);// 需要移除的时候&#xff0c;调用这个document.addEventListener(keydown, gl…...

matlab 处理海洋数据并画图的工具包--ocean_data_tools

matlab 处理海洋数据并画图的工具包–ocean_data_tools matlab 处理海洋数据并画图的工具包–ocean_data_tools ocean_data_tools 简化了提取、格式化和可视化免费可用的海洋学数据的过程。虽然可以在线访问大量海洋学数据&#xff0c;但由于获取这些数据并将其格式化为可用数据…...

多级缓存架构,让系统更快的跑起来!

大家好,今天,咱们来聊聊一个超级实用的话题——多级缓存架构。别一听“架构”俩字就头大,我保证,这篇文章既有趣又易懂,让你秒变缓存小达人! 一、多级缓存,为啥这么火? 在互联网的汪洋大海里,数据就是咱们的宝藏。但每次从数据库里捞数据,都跟挖宝藏似的,慢得很!…...

MCP:AI时代的“万能插座”,开启大模型无限可能

摘要&#xff1a;Model Context Protocol&#xff08;MCP&#xff09;由Anthropic在2024年底开源&#xff0c;旨在统一大模型与外部工具、数据源的通信标准。采用客户端-服务器架构&#xff0c;基于JSON-RPC 2.0协议&#xff0c;支持stdio、SSE、Streamable HTTP等多种通信方式…...

使用 PCL 和 Qt 实现点云可视化与交互

下面我将介绍如何结合点云库(PCL)和Qt框架(特别是QML)来实现点云的可视化与交互功能&#xff0c;包括高亮选择等效果。 1. 基本架构设计 首先需要建立一个结合PCL和Qt的基本架构&#xff1a; // PCLQtViewer.h #pragma once#include <QObject> #include <pcl/point…...

静态网页的开发

文章目录 基于 idea 开发静态网页添加web框架前端配置服务器并启动服务资源名字不是 index 静态网页 流转 基于 idea 开发静态网页 添加web框架 方法1 方法2 前端 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&quo…...

【CPU】结合RISC-V CPU架构回答中断系统的7个问题(个人草稿)

结合RISC-V CPU架构对中断系统七个关键问题的详细解析&#xff0c;按照由浅入深的结构进行说明&#xff1a; 一、中断请求机制&#xff08;问题①&#xff09; 硬件基础&#xff1a; RISC-V通过CLINT&#xff08;Core Local Interrupter&#xff09;和PLIC&#xff08;Platfor…...

uCOS3实时操作系统(任务切换和任务API函数)

文章目录 任务切换任务API函数 任务切换 C/OS-III 将 PendSV 的中断优先级配置为最低的中断优先级&#xff0c;这么一来&#xff0c; PendSV 异常的中断服务函数就会在其他所有中断处理完成后才被执行。C/OS-III 就是将任务切换的过程放到 PendSV 异常的中断服务函数中处理的。…...

【Python网络爬虫开发】从基础到实战的完整指南

目录 前言&#xff1a;技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块技术选型对比 二、实战演示环境配置要求核心代码实现&#xff08;10个案例&#xff09;案例1&#xff1a;基础静态页面抓取案例2&#xff1a;动…...

科学养生指南:解锁健康生活新方式

在快节奏的现代生活中&#xff0c;健康养生已成为人们关注的焦点。科学合理的养生方式&#xff0c;能帮助我们增强体质、预防疾病&#xff0c;享受更优质的生活。​ 饮食是健康养生的基石。遵循 “均衡饮食” 原则&#xff0c;每日饮食需包含谷类、蔬菜水果、优质蛋白质和健康…...

第十四届蓝桥杯 2023 C/C++组 有奖问答

目录 题目&#xff1a; 题目描述&#xff1a; 题目链接&#xff1a; 思路&#xff1a; 核心思路&#xff1a; 思路详解&#xff1a; 代码&#xff1a; 代码详解&#xff1a; 题目&#xff1a; 题目描述&#xff1a; 题目链接&#xff1a; 蓝桥云课 有奖问答 思路&…...

解决Chrome浏览器访问https提示“您的连接不是私密连接”的问题

如何绕过Chrome的“您的连接不是私密连接”证书警告页面 在使用Chrome浏览器访问一些自签名或测试用的HTTPS网站时&#xff0c;常常会遇到这样一个拦截页面&#xff1a; “您的连接不是私密连接” 虽然这是Chrome出于安全考虑的设计&#xff0c;但对于开发者或测试人员来说&am…...

transformer注意力机制

单头注意力机制 import torch import torch.nn.functional as Fdef scaled_dot_product_attention(Q, K, V):# Q: (batch_size, seq_len, d_k)# K: (batch_size, seq_len, d_k)# V: (batch_size, seq_len, d_v)batch_size: 一次输入的句子数。 seq_len: 每个句子的词数。 d_mo…...

QT 5.15 程序打包

说明&#xff1a; windeployqt 是 Qt 提供的一个工具&#xff0c;用于自动收集并复制运行 Qt 应用程序所需的动态链接库&#xff08;.dll 文件&#xff09;及其他资源&#xff08;如插件、QML 模块等&#xff09;到可执行文件所在的目录。这样你就可以将应用程序和这些依赖项一…...

秒杀抢购系统架构与优化全解:从业务特性到技术落地

一、秒杀抢购业务的本质 秒杀&#xff0c;顾名思义&#xff0c;就是“以秒为单位”的限时限量抢购活动。它的核心是短时间内聚集高流量&#xff0c;以超低价格进行引流。 这种业务场景对系统架构提出了极高的要求&#xff0c;主要表现为&#xff1a; 高并发访问量 极短的处理…...

【路由交换方向IE认证】BGP选路原则之AS-Path属性

文章目录 一、路由器BGP路由的处理过程控制平面和转发平面选路工具 二、BGP的选路顺序选路的前提选路顺序 三、AS-Path属性选路原则AS-Path属性特性AS-Path管进还是管出呢&#xff1f;使用AS-Path对进本AS的路由进行选路验证AS-Path不接收带本AS号的路由 四、BGP邻居建立配置 一…...