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

news2025/4/22 9:16:02

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

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

    • 新建工程步骤
    • 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,查找
经过函数的包装,就不需要查询手册来确定某一位的功能,而且库函数的配置不会影响到寄存器的其他位。只需要调用库函数,按照提示,填好参数即可

在这里插入图片描述

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

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

相关文章

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 ** 这…

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

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

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

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

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

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

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

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

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等多种通信方式…

静态网页的开发

文章目录 基于 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 异常的中断服务函数中处理的。…

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

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

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

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

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;到可执行文件所在的目录。这样你就可以将应用程序和这些依赖项一…

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

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

Linux系统下docker 安装 redis

docker安装最新版的redis 一、docker拉取最新版redis镜像 拉取镜像若没有指定版本&#xff0c;代表拉取最新版本 二、查询redis镜像 三、挂载配置文件 在docker容器内修改redis配置文件不方便&#xff0c;所以挂载配置文件&#xff0c;这样可以在外边修改redis配置 3.1 创建…

深度学习框架PyTorch——从入门到精通(3.3)YouTube系列——自动求导基础

这部分是 PyTorch介绍——YouTube系列的内容&#xff0c;每一节都对应一个youtube视频。&#xff08;可能跟之前的有一定的重复&#xff09; 我们需要Autograd做什么&#xff1f;一个简单示例训练中的自动求导开启和关闭自动求导自动求导与原地操作 自动求导分析器高级主题&…

【基础算法】二分算法详解

🎯 前言:二分不是找某个数,而是找一个满足条件的位置/值 所以最关键的是:找到单调性,写好 check() 函数,剩下交给模板! 什么是二分算法 二分算法是一种在有序区间中查找答案的方法,时间复杂度:O(log n)。核心思想是: 每次把搜索区间分成两半,只保留可能存在答案的…

mysql——基础知识

关键字大小写不敏感 查看表结构中的 desc describe 描述 降序中的 desc descend 1. 数据库的操作 1. 创建数据库 create database 数据库名;为防止创建的数据库重复 CREATE DATABASE IF NOT EXISTS 数据库名;手动设置数据库采用的字符集 character set 字符集名;chars…