【小宁学习日记5 stm32】LED闪烁 LED流水灯 蜂鸣器

目录

01.LED闪烁

1、搭建电路板

2、新建工程

(1)前期准备

(2)创建工程文件夹结构

(3)复制固件库文件到对应文件夹

(4)在 Keil 中创建工程

(5)配置工程选项(魔术棒设置)

(6)验证工程配置

3、编写代码点亮一个LED

02.LED流水灯

1、搭建电路板

2、代码修改与端口初始化

03.蜂鸣器

1、搭建电路板

2、程序

04.使用库函数的方法

1. 借助翻译软件

2. 库函数用户手册

3. 百度搜索


学习stm32跟学51单片机的一样诶,都是先学习点灯。以前自己真的是啥也不会,不过在这几天慢慢的学习中,也逐渐学会了很多东西,以前难以理解的东西也渐渐清楚,  

01.LED闪烁

1、搭建电路板

  • 连接要点:
    • 将面包板正极红线朝上放置,注意方向不能反接
    • STM32最小系统板需按照图示位置放置,上方和右侧各预留2个孔位,下方预留3个孔位
    • 系统板插入面包板时需确保引脚对应孔位准确
    • 使用跳线将最小系统板正负极引出至面包板供电引脚
    • GND引脚连接负极,3.3V引脚连接正极
    • 上下四排供电引脚通过此方式获得系统板提供的电源
    • 按照引脚标识符将STLINK连接到最小系统板
    • 注意引脚并非顺序排列,需仔细核对标识避免错接
2、新建工程

按照之前的步骤完成对基本电路的创建

总结概括一下:

(1)前期准备

工具与文件

安装 Keil MDK(建议 5.28 及以上版本),并安装 STM32F1 系列器件支持包(Pack Installer 中勾选STM32F1xx_DFP)。

下载 STM32 标准外设库(如STM32F10x_StdPeriph_Lib_V3.5.0),包含外设驱动文件。

(2)创建工程文件夹结构

新建主文件夹

在电脑本地目录(如D:\STM32_Projects)下,创建以 “序号 - 功能” 命名的工程文件夹,例如 3-1 LED闪烁

创建子文件夹
在主文件夹内新建 3 个子文件夹,用于分类管理文件:

Start:存放启动文件和芯片核心支持文件

Library:存放外设固件库文件,

User:存放用户主程序文件(如main.cmain.h

(3)复制固件库文件到对应文件夹

Start 文件夹

从固件库路径STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm中,复制对应启动文件:

STM32F103C8 属于中容量芯片,选择 startup_stm32f10x_md.smd代表 Medium-density)。

复制核心支持文件:

CMSIS\CM3\DeviceSupport\ST\STM32F10x复制 stm32f10x.hsystem_stm32f10x.csystem_stm32f10x.h 到Start

Library 文件夹

src目录:从STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src复制所有.c文件(如stm32f10x_gpio.cstm32f10x_rcc.c等)。

inc目录:从STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc复制所有.h文件(与src对应)。

User 文件夹

新建main.c(主程序入口)和main.h(用户自定义头文件)。

从固件库Project\STM32F10x_StdPeriph_Template复制 stm32f10x_conf.h(库配置文件)到User

(4)在 Keil 中创建工程

新建工程

打开 Keil MDK,点击菜单栏Project → New μVision Project,选择之前创建的主文件夹3-1 LED闪烁,命名工程(如LED_Blink.uvprojx),点击 “保存”。

选择目标芯片

在弹出的 “Device” 窗口中,搜索并选择 STM32F103C8,点击 “OK”。

弹出 “Manage Run-Time Environment” 窗口时,直接点击 “Cancel”(后续手动添加文件)。

创建文件组并添加文件

在左侧 “Project” 窗口的 “Target 1” 下,右键点击Source Group 1,选择 “Rename”,改为Start

同理,新建两个文件组,分别命名为LibraryUser

向文件组添加对应文件:

Start组:添加Start文件夹下的startup_stm32f10x_md.ssystem_stm32f10x.c

Library组:添加Library/src文件夹下所有.c文件(可按需求筛选,如仅保留stm32f10x_gpio.cstm32f10x_rcc.c等必要文件)。

User组:添加User文件夹下的main.cstm32f10x_conf.h

(5)配置工程选项(魔术棒设置)

点击工具栏 “魔术棒” 图标(Options for Target),进行以下配置:

C/C++ 选项卡:配置头文件路径

Include Paths栏点击右侧 “...”,添加头文件所在文件夹路径:

..\StartStart文件夹相对路径)

..\Library\incLibrary的头文件目录)

..\UserUser文件夹)

Define栏输入宏定义:USE_STDPERIPH_DRIVER(启用标准外设驱动)。

Debug 选项卡:配置调试器

在 “Debug” 下拉菜单中选择 ST-Link Debugger,点击右侧 “Settings”。

在 “ST-Link Debugger” 设置中,确认 “Port” 为SW(默认),点击 “OK”。

Flash Download 选项卡:配置下载参数

勾选Reset and Run(下载后自动复位并运行程序)。

点击 “Add”,选择STM32F10x Medium-density Flash(中容量芯片 Flash 算法),点击 “OK”。

确认芯片参数:128K On-chip Flash,地址范围0x08000000 - 0x0801FFFF(默认已匹配)。

保存配置

点击 “OK” 关闭工程选项窗口,完成所有配置。

(6)验证工程配置

main.c中编写简单测试代码(如初始化 GPIO),点击 “编译” 按钮(Build),确认无错误(0 Error)。

连接 ST-Link 调试器与 STM32 开发板,点击 “下载” 按钮(Load),程序应能正常下载并运行。

关键注意事项

启动文件必须与芯片容量匹配(中容量用md,大容量用hd),否则程序无法启动。

头文件路径若遗漏,会导致 “找不到 xxx.h” 错误;宏定义错误会导致固件库功能不可用。

调试器选择需与实际硬件一致(如使用 J-Link 则选择对应选项)。

3、编写代码点亮一个LED

初始化步骤:

  开启GPIO时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE)

  配置GPIO结构体:模式、引脚、速度

   调用GPIO_Init完成初始化

输出控制:

  GPIO_ResetBits(GPIOA, GPIO_Pin_0):输出低电平

  GPIO_SetBits(GPIOA, GPIO_Pin_0):输出高电平

  GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET/Bit_RESET):带参数控制

(灯闪烁)

02.LED流水灯

1、搭建电路板

  • 硬件连接:
    • 8个LED正极全部连接到正极供电孔
    • 负极依次连接到PA0-PA7端口
  • 接线技巧:
    • 先插两边LED再插中间,可适当弯曲引脚方便安装
    • 使用PA0-PA7端口实现8位流水灯控制
2、代码修改与端口初始化

  • 时钟配置:
    • 保持RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE)不变
  • 端口扩展:
    • 原代码仅初始化GPIO_Pin_0
    • 需要添加PA0-PA7共8个引脚初始化
  • 按位或操作:
    • 使用GPIO_Pin_0 | GPIO_Pin_1 | ... | GPIO_Pin_7方式
    • 或直接使用GPIO_Pin_All初始化全部16个引脚
  • 引脚编码原理:
    • 每个引脚对应一个二进制位:PA0=0x0001(0001),PA1=0x0002(0010)
    • 按位或操作相当于多选开关,如0x0001|0x0002=0x0003(0011)
  • 特殊定义:
    • GPIO_Pin_All=0xFFFF,可一次性选择所有引脚
  • 外设控制:
    • 时钟控制等外设也采用相同位操作逻辑

03.蜂鸣器

1、搭建电路板

  • 接线方法:
    • VCC正极连接正极供电孔
    • GND负极连接负极供电孔
    • 控制端选择PB12引脚(避免使用PA15/PB3/PB4调试端口)
  • 端口选择注意事项:
    • PA15、PB3、PB4默认是JTAG调试端口
    • 若需用作普通IO口需额外配置
    • 实际案例:未配置时会出现无输出现象
2、程序

  • 关键配置:
    • 时钟使能:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE)
    • 引脚模式:推挽输出(GPIO_Mode_Out_PP)
    • 输出速度:50MHz(GPIO_Speed_50MHz)
    • 指定引脚:GPIO_Pin_12

04.使用库函数的方法

1. 借助翻译软件

查看方法:在代码编辑器中右键点击函数名选择"转到定义",可查看函数和参数的英文说明文档

翻译工具:推荐使用有道词典等翻译软件,开启划词翻译功能可实时查看英文文档的中文释义

使用技巧:选中英文术语后自动弹出翻译结果,适合快速理解函数参数含义

2. 库函数用户手册

中文手册:STM32F103xx固件函数库用户手册提供完整函数说明,包含:

   函数原型和参数说明

   使用示例代码

   模式编码对照表(如GPIO_Mode的16种编码)

版本差异:当前使用V3.5.0库函数,但手册对应老版本,部分用法可能有细微差异

文件位置:位于资料文件夹/固件库/STM32F10x_StdPeriph_Lib_V3.5.0目录下

3. 百度搜索

搜索技巧:使用"STM32 GPIO初始化程序"等具体关键词

参考来源:优先查看CSDN博客、电子工程世界等技术社区

应用方法:可直接复制他人已验证的代码片段,注意:

                  核对函数参数与实际需求是否匹配

                  确认GPIO工作模式(如推挽输出GPIO_Mode_Out_PP)

                   检查时钟使能配置(RCC_APB2PeriphClockCmd)

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

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

相关文章

openstack的novnc兼容问题

1.今天在部署O版过程中发现了novnc组件不兼容openstack2.novnc一直报错,令牌过期,原本以为是python代码配置的问题,最后经过排查很久发现竟然是novnc的版本和openstack的O版不兼容novncyum remove -y novnc*安装支持版本yum install -y novnc…

Day25 栈 队列 二叉树

day25 栈 队列 二叉树使用栈计算表达式的值 概述 通过两个栈(数值栈和符号栈)实现中缀表达式求值。算法核心是: 遇到数字时,累加并入数值栈;遇到运算符时,比较其与符号栈顶运算符的优先级: 若当…

阿里云RDS MySQL数据归档全攻略:方案选择指南

引言在日常数据库管理中,数据归档是必不可少的重要环节。随着业务数据的不断增长,将历史数据从生产数据库迁移到更经济的存储方案中,不仅可以降低存储成本,还能提升数据库性能。阿里云提供了丰富的数据归档解决方案,本…

线性回归学习

一、线性回归简介核心思想:线性回归是一种通过属性的线性组合来做预测的模型。它的目标很明确,就是找到一条合适的直线、平面或者更高维度的超平面,让预测出来的值和实际真实值之间的差距尽可能小。比如在预测房屋价格时,就可以根…

如何使用 DeepSeek 助力工作:全面指南​

一、引言​1.1 DeepSeek 简介​DeepSeek 的定位与目标概述​核心技术亮点(大语言模型、多模态能力、AI Agent 框架)​1.2 工作场景中应用 AI 的趋势​AI 对职场效率提升的重要性​DeepSeek 在众多 AI 工具中的独特地位​二、DeepSeek 基础功能介绍​2.1 …

车载诊断架构 --- EOL引起关于DTC检测开始条件的思考

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

JCTools Spmc 单生产者-多消费者的无锁并发有界队列

SpmcArrayQueue 是 JCTools 中为 单生产者-多消费者(Single-Producer-Multi-Consumer) 场景设计的有界队列。与 SPSC 模型相比,SPMC 的复杂性主要体现在消费者侧,因为多个消费者线程需要以线程安全的方式竞争消费同一个队列中的元…

SpringAI1.0.1实战教程:避坑指南25年8月最新版

Spring AI 1.0.1 使用教程 项目简介 作为一个Java的开发者 听到Java也有ai框架了 很高兴~~~ 本来想学一下SpringAI但是网上卖课的一大堆,并且大部分课程都是五月的,到2025年的8月份,SpringAI的版本做了很多更新,所以我本人参考…

Maven架构的依赖管理和项目构建

​​​​​​什么是依赖管理对第三方依赖包的管理,可以连接互联网下载项目所需第三方jar包。对自己开发的模块的管理,可以像引用第三方依赖包一样引用自己项目的依赖包。Maven的依赖管理方式和传统方式有什么区别传统方式:从官网手动下载jar包…

微信小程序开发(一):使用开发者工具创建天气预报项目

Hi,我是前端人类学(之前叫布兰妮甜)! 从今天开始,我将开启一个全新的微信小程序开发系列教程,通过实际项目带大家系统学习小程序开发。作为系列的第一篇文章,我们将从最基础的环境搭建开始&…

【链表 - LeetCode】24. 两两交换链表中的节点

24. 两两交换链表中的节点 - 力扣(LeetCode) 题解: - 迭代 首先是直接遍历的做法,这里注意调整指针指向的顺序。 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* List…

爬虫基础学习-链接协议分析,熟悉相关函数

1、urlparse:(python标准库中的一个模块,解析和操作url)标准的url链接格式:scheme://netloc/path;params?query#fragmentscheme(协议) http or https netloc(网络位置) …

kkfileview预览Excel文件去掉左上角的跳转HTML预览、打印按钮

上篇说了使用nginx代理kkfile预览文件,但是又发现个新问题,预览其他文件时都正常,但是预览.xlsx格式的时候,在左上角会有【跳转HTML预览】【打印】两个按钮,如下所示:这篇就来说一下如何去掉。首先这个跟kk…

阿里开源新AI code工具:qoder功能介绍

下载地址: https://qoder.com/ 文档地址: https://docs.qoder.com/ 文章目录1. AI 编码发展趋势2. 真实世界软件开发的挑战3. 我们的方法3.1. 透明度3.1.1. 知识可见性3.1.2. 执行透明度3.2. 增强上下文工程3.3. 规范驱动与任务委托3.3.1. 聊天模式&…

什么是短视频矩阵系统企业立项功能源码开发,支持OEM

短视频矩阵系统企业立项功能源码开发解析在短视频行业蓬勃发展的当下,企业纷纷布局短视频矩阵,以实现多平台、多账号的协同运营。而企业立项作为短视频矩阵项目启动的关键环节,其高效、规范的管理直接影响项目的推进效率与成果。为此&#xf…

当GitHub宕机时,我们如何协作?

问题背景与影响 GitHub作为主流代码托管平台的依赖现状宕机对分布式团队、CI/CD流水线、紧急修复的影响案例其他类似平台(GitLab、Bitbucket)的潜在连带风险 本地与离线协作方案 利用Git分布式特性:本地仓库继续提交,恢复后同步搭…

【会议跟踪】Model-Based Systems Engineering (MBSE) in Practice 2025

会议主旨与议题 会议宣传链接:https://www.sei.cmu.edu/events/mbse-in-practice/ 本次会议将于2025年8月21日位美国弗吉尼亚州阿灵顿(五角大楼所在地)举行。本次会议主旨为 MBSE in Practice: Bridging the Gap Between Theory and Success(2025)。随着软件定义系统日趋…

浏览器的渲染流程:从 HTML 到屏幕显示

在我们日常使用浏览器浏览网页时,往往忽略了浏览器背后复杂的渲染过程。从输入 URL 到页面最终显示在屏幕上,浏览器需要经过一系列精心设计的步骤。 浏览器渲染的整体流程浏览器的渲染流程可以大致分为两个主要部分:网络 和 渲染。当用户在地…

FastMCP 客户端服务器通信示例:从入门到实战(STDIO 传输)

引言 在现代分布式系统和AI应用中,模型上下文协议(MCP)扮演着重要角色,它负责协调客户端与服务器之间的通信,尤其是在需要频繁交互的场景中。本文将介绍如何使用FastMCP库快速实现客户端与服务器之间的通信&#xff0c…

宝可梦肉鸽 PC/手机双端 多种存档 全闪光 无限金币 全宝可梦解锁 免安装中文版

网盘链接: 宝可梦肉鸽 免安装中文版 名称:宝可梦肉鸽 PC/手机双端 多种存档 全闪光 无限金币 全宝可梦解锁 免安装中文版 描述:宝可梦肉鸽修改版是一款非常受欢迎的口袋妖怪系列,游戏拥有许多独特的妖怪和玩法。在游戏中&#…