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

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.xdnf.cn/news/62857.html

相关文章:

  • DeepSeek 大模型 + LlamaIndex + MySQL 数据库 + 知识文档 实现简单 RAG 系统
  • electron从安装到启动再到打包全教程
  • Python 网络编程:TCP 与 UDP 协议详解及实战代码
  • uni-app 开发企业级小程序课程
  • LangChain、LlamaIndex 和 ChatGPT 的详细对比分析及总结表格
  • 【Flink SQL实战】 UTC 时区格式的 ISO 时间转东八区时间
  • 2025.04.20【Lollipop】| Lollipop图绘制命令简介
  • python——函数
  • Unocss 类名基操, tailwindcss 类名
  • 分数线降低,25西电马克思主义学院(考研录取情况)
  • RESTful学习笔记(一)
  • 国产仪器进化论:“鲁般号”基于无人机的天线测试系统
  • 微软Entra新安全功能引发大规模账户锁定事件
  • 【Vue】组件基础
  • Linux系统下docker 安装 redis
  • Mybatis延迟加载、懒加载、二级缓存
  • 统计图表ECharts
  • 2025年世界职业院校技能大赛实施方案(意见稿)
  • 【单片机 C语言】单片机学习过程中常见C库函数(学习笔记)
  • 由Ai生成的Linux 入门到精通学习路径
  • 记录seatunnel排查重复数据的案例分析
  • ESP8266_ESP32 Smartconfig一键配网功能
  • qt 配置 mysql 驱动问题:Cannot load library qsqlmysql;QMYSQL driver not loaded
  • 如何编写单元测试
  • 运维工程师面试总结21/4
  • 前端笔记-Axios
  • 3步拆解Linux内核源码的思维模型
  • 汽车动力转向器落锤冲击试验台
  • Java+nanomsg快速实现去broker的数据通信
  • 2025年最新服务器、中间件安全(面试题)