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

在这里插入图片描述

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

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

相关文章

Unocss 类名基操, tailwindcss 类名

这里只列出 unocss 的可实现类名&#xff0c;tailwindcss 可以拿去试试用 1. 父元素移入&#xff0c;子元素改样式 <!-- 必须是 group 类名 --> <div class"group"><div class"group-hover:color-red">Text</div> </div>2…

深度学习入门(一)

一、简介 深度学习是机器学习领域新兴且关键的研究方向。机器学习重点在于让计算机从数据中挖掘规律以预测未知&#xff0c;而深度学习借助构建多层神经网络&#xff0c;自动学习数据的复杂特征&#xff0c;从而实现更精准的模式识别&#xff0c;在图像、语音等众多领域广泛应…

element-plus中,Steps 步骤条组件的使用

目录 一.基本使用 1.代码 2.效果展示 3.代码解读 二.案例&#xff1a;修改用户的密码 1.期望效果 2.代码 3.展示效果 结语 一.基本使用 1.代码 从官网复制如下代码&#xff1a; <template><div><el-stepsstyle"max-width: 600px":space&quo…

jax 备忘录

https://zhuanlan.zhihu.com/p/532504225 https://docs.jax.dev/en/latest/index.html

NLTK 基础入门:用 Python 解锁自然语言处理

自然语言处理&#xff08;NLP&#xff09;是人工智能领域的重要分支&#xff0c;它让计算机能够理解、处理和生成人类语言。而 NLTK&#xff08;Natural Language Toolkit&#xff09; 作为 Python 生态中最经典的 NLP 库之一&#xff0c;提供了丰富的工具和资源&#xff0c;是…

ElementUI中checkbox v-model绑定值为布尔、字符串或数字类型

这篇博客介绍了在Vue.js中使用El-Checkbox组件时&#xff0c;如何设置和处理v-model的布尔值和类型转换。通过示例代码展示了如何设置true-label和false-label属性来改变选中状态的值&#xff0c;适用于需要特定类型&#xff08;如字符串或整数&#xff09;的场景。v-model不能…

JBoss 项目修复笔记:绕开 iframe 安全问题,JSF 与 Angular 最小代价共存方案

JBoss 项目修复笔记&#xff1a;绕开 iframe 安全问题&#xff0c;JSF 与 Angular 最小代价共存方案 本篇笔记衔接的内容为&#xff1a;JBoss WildFly 本地开发环境完全指南&#xff0c;里面简单的描述了一下怎么配置 docker&#xff0c;在本地启动一个可以运行的 JBoss 和 W…

Linux文件时间戳详解:Access、Modify、Change时间的区别与作用

在 Linux 系统中&#xff0c;文件的这三个时间戳&#xff08;Access、Modify、Change&#xff09;分别表示不同的文件状态变更时间&#xff0c;具体含义如下&#xff1a; 1. Access Time (Access) 含义&#xff1a;文件最后一次被访问的时间&#xff08;读取内容或执行&#xf…

SpringBoot项目打包为window安装包

SpringBoot项目打包为window安装包 通过jpackage及maven插件的方式将springboot项目打包为exe或msi pom.xml 添加插件 <plugin><groupId>org.codehaus.mojo</groupId><artifactId>exec-maven-plugin</artifactId><version>3.1.0</vers…

pip永久换镜像地址

要将 pip 永久设置为阿里云镜像源&#xff0c;可以通过修改 pip 的全局配置文件来实现。以下是具体步骤&#xff1a; 步骤 1&#xff1a;创建或修改 pip 配置文件 根据你的操作系统&#xff0c;配置文件的路径略有不同&#xff1a; Linux/macOS 配置文件路径&#xff1a;~/.…

PI0 Openpi 部署(仅测试虚拟环境)

https://github.com/Physical-Intelligence/openpi/tree/main 我使用4070tisuper, 14900k,完全使用官方默认设置&#xff0c;没有出现其他问题。 目前只对examples/aloha_sim进行测试&#xff0c;使用docker进行部署, 默认使用pi0_aloha_sim模型(但是文档上没找到对应的&…

XAttention

XAttention: Block Sparse Attention with Antidiagonal Scoring 革新Transformer推理的高效注意力机制资源​​ ​​论文链接​​&#xff1a;XAttention: Block Sparse Attention with Antidiagonal Scoring ​​代码开源​​&#xff1a;GitHub仓库 XAttention是韩松团队提…

前端中的浮动、定位与布局

在前端开发中&#xff0c;布局是构建网页结构的基础。而浮动&#xff08;float&#xff09;、定位&#xff08;position&#xff09;以及各种布局方法则是实现网页布局的关键工具。 一、浮动&#xff08;Float&#xff09; 浮动是CSS中用于控制元素在页面中排列方式的一种属性…

Linux 动、静态库的实现

前言&#xff1a;当我们写了一段代码实现了一个方法&#xff0c;如果我们不想把方法的实现过程暴露给别人看&#xff0c;可以把代码打包成一个库&#xff0c;其中形成后缀为.a的是静态库&#xff0c;后缀为.so的为动态库&#xff1b;当别人想使用你的方法时&#xff0c;把打包好…

ubuntu--字体设置

样式和字体大小 在终端右键-->选择"Preferences"-->勾选"Custom font": 选择自己喜欢的样式&#xff0c;然后通过size滑动条调整字体大小&#xff0c;选择即可&#xff1a;

Qt核心知识总结

Qt核心知识总结 Qt 是一个功能强大、跨平台的 C 应用程序开发框架&#xff0c;广泛应用于图形用户界面&#xff08;GUI&#xff09;应用程序的开发&#xff0c;同时也支持非 GUI 应用程序的开发。本文将从入门到精通的角度&#xff0c;详细解析 Qt 的核心知识点&#xff0c;帮…

Linux 进程概念补充 (自用)

进程概念 内核进程进程状态内存泄漏进程调度。Linux真实调度算法环境变量 内核 狭义上的操作系统指的是 内核就是进程管理进程调度&#xff0c;文件系统等等。 广义上的操作系统其实在外壳指令这些。封装了系统调用的东西。 进程 课本概念程序的一个基本实例 内核观点&#…

【dify实战】agent结合deepseek实现基于自然语言的数据库问答、Echarts可视化展示、Excel报表下载

使用dify agent实现数据库智能问答&#xff0c;echarts可视化展示&#xff0c;excel报表下载 观看视频&#xff0c;您将学会 在dify下如何快速的构建一个agent&#xff0c;来完成数据分析工作&#xff1b;如何在AI的回复中展示可视化的图表&#xff1b;如何在AI 的回复中加入E…

macos下 ~/.zshrc~ 和 ~/.zshrc

macos下 ~/.zshrc~ 和 ~/.zshrc ~/.zshrc通常是备份文件或临时文件&#xff0c;可能由编辑器&#xff08;如vim&#xff09;创建&#xff0c;通常可以安全删除&#xff0c;不会影响系统运行。 在Mac下&#xff0c;这种带~后缀的备份文件通常是由以下情况产生&#xff1a; 常…

位运算---总结

位运算 基础 1. & 运算符 : 有 0 就是 0 2. | 运算符 : 有 1 就是 1 3. ^ 运算符 : 相同为0 相异为1 and 无进位相加位运算的优选级 不用在意优先级,能加括号就加括号给一个数 n ,确定它的二进制位中第 x 位是 0 还是 1? 规定: 题中所说的第x位指:int 在32位机器下4个…