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

STM32入门开发操作记录(二)——LED与蜂鸣器

目录

  • 一、工程模板
  • 二、点亮主板
    • 1. 配置寄存器
    • 2. 调用库函数
  • 三、LED
    • 1. 闪烁
    • 2. 流水灯
  • 四、蜂鸣器

一、工程模板

  参照第一篇,新建工程目录ProjectMould,将先前打包好的StartLibraryUser文件^C^V过来,并在Keil5内完成器件支持包的加载模块路径的添加ST配置,即可得到工程模板。

  以后建立新项目只需拷贝模板、重命名后,在Keil5内打开即可。
请添加图片描述

二、点亮主板

  所需器材:STM32最小系统板、ST-Link仿真器、母对母杜邦线4根。
  端口接线:

STM32ST-Link
GNDGND
SWCLKSWCLK
SWIOSWDIO
3V33.3V

请添加图片描述

  正确接入后,PWR端口01灯常亮,PC13端口02灯闪烁,这是芯片内置的初始测试程序。

1. 配置寄存器

  该方法需要阅读芯片参考手册,将数字信号转换为八进制传递参数。

#include "stm32f10x.h"int main(void)
{// 配置寄存器点灯RCC->APB2ENR = 0x00000010;	// RCC寄存器——APB2外设时钟使能寄存器 -> 开启IO端口C时钟GPIOC->CRH = 0x00300000;	// GPIO寄存器——端口配置高寄存器 -> 通用推挽输出模式:最大速度50MHzGPIOC->ODR = 0x00002000;	// GPIO寄存器——端口输出数据寄存器 -> PC13端口:高电平(灭)//GPIOC->ODR = 0x00000000;	// GPIO寄存器——端口输出数据寄存器 -> PC13端口:低电平(亮)	
}

  程序编写完成后,F7 + F8编译并载入,就可以实现PC13端口02灯的控制。请添加图片描述

2. 调用库函数

  该方法形式较为复杂,但代码更具复用性和可读性,下文开始全部使用库函数编程。

#include "stm32f10x.h"int main(void)
{// 外设时钟控制:使能/失能APB2的外设时钟 -> 开启IO端口C时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);// 配置结构体参数GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;	// 通用推挽输出模式GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;			// PC13引脚GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	// 最大速度50MHz// 初始化端口模式 -> 初始化GPIOC外设时钟GPIO_Init(GPIOC, &GPIO_InitStructure);// 配置端口电平GPIO_SetBits(GPIOC, GPIO_Pin_13);		// 高电平:熄灭//GPIO_ResetBits(GPIOC, GPIO_Pin_13);	// 低电平:点亮
}

三、LED

  所需器材:STM32最小系统板、ST-LINK仿真器、MB-102面包板、LED(长脚+,短脚-)若干、跳线若干、杜邦线若干。
请添加图片描述

  系统板初次插入面包板会十分困难,建议先用杜邦线探针逐个疏通面包板的插孔,然后在系统板两端交替施力,“跷跷板式”下压,直至完全进入。

1. 闪烁

  参照第一篇,将目录Resource\程序源码\STM32Project-无注释版\1-3 Delay函数模块\下的头文件加入System,完成延时函数模块的添加,编译并载入以下代码。

#include "stm32f10x.h"	// 器件模块
#include "Delay.h" 		// 延时模块// LED闪烁
int main(void)
{// 使能/失能APB2的外设时钟 -> 开启IO端口A时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);// 配置结构体参数GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;	// 通用推挽输出模式GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;			// PA0引脚GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	// 最大速度50MHz// 配置端口模式 -> 初始化GPIOA外设时钟GPIO_Init(GPIOA, &GPIO_InitStructure);// 配置端口电平//GPIO_SetBits(GPIOA, GPIO_Pin_0);		// 高电平:熄灭//GPIO_ResetBits(GPIOA, GPIO_Pin_0);	// 低电平:点亮// 闪烁:周期200毫秒while(1){//GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET);		// 低电平:点亮//Delay_ms(500);//GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET);		// 高电平:熄灭//Delay_ms(500);GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction)0);		// 低电平:点亮Delay_ms(100);GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction)1);		// 高电平:熄灭Delay_ms(100);}
}

2. 流水灯

  在A0A7端口接入LED

#include "stm32f10x.h"	// 器件模块
#include "Delay.h" 		// 延时模块// 流水灯
int main(void)
{// 使能/失能APB2的外设时钟 -> 开启IO端口A时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);// 配置结构体参数GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;	// 通用推挽输出模式GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;			// 所有引脚//GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; // PA引脚GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	// 最大速度50MHz// 配置端口模式 -> 初始化GPIOA外设时钟GPIO_Init(GPIOA, &GPIO_InitStructure);// 延时闪烁:取反 -> 低电平:点亮while(1){GPIO_Write(GPIOA, ~0x0001);		// A0Delay_ms(100);GPIO_Write(GPIOA, ~0x0002);		// A1Delay_ms(100);GPIO_Write(GPIOA, ~0x0004);		// A2Delay_ms(100);GPIO_Write(GPIOA, ~0x0008);		// A3Delay_ms(100);GPIO_Write(GPIOA, ~0x0010);		// A4Delay_ms(100);GPIO_Write(GPIOA, ~0x0020);		// A5Delay_ms(100);GPIO_Write(GPIOA, ~0x0040);		// A6Delay_ms(100);GPIO_Write(GPIOA, ~0x0080);		// A7Delay_ms(100);}
}

  

四、蜂鸣器

  所需器材:STM32最小系统板、ST-LINK仿真器、MB-102面包板、3.3V有源蜂鸣器、跳线若干、公对公/母杜邦线若干。
  端口接线:除了A15B3B4JLINK的调试端口,其他端口都可用。

蜂鸣器面包板
GND-
I/OB13
VCC+
#include "stm32f10x.h"	// 器件模块
#include "Delay.h" 		// 延时模块// 蜂鸣器
int main(void)
{// 使能/失能APB2的外设时钟 -> 开启IO端口B时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);// 配置结构体参数GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;	// 通用推挽输出模式GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;			// PB12引脚GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	// 最大速度50MHz// 配置端口模式 -> 初始化GPIOB外设时钟GPIO_Init(GPIOB, &GPIO_InitStructure);// 手表闹钟while(1){GPIO_ResetBits(GPIOB, GPIO_Pin_12);	// 低电平:响Delay_ms(100);GPIO_SetBits(GPIOB, GPIO_Pin_12);Delay_ms(100);GPIO_ResetBits(GPIOB, GPIO_Pin_12);Delay_ms(100);GPIO_SetBits(GPIOB, GPIO_Pin_12);Delay_ms(700);}
}

请添加图片描述

相关文章:

STM32入门开发操作记录(二)——LED与蜂鸣器

目录 一、工程模板二、点亮主板1. 配置寄存器2. 调用库函数 三、LED1. 闪烁2. 流水灯 四、蜂鸣器 一、工程模板 参照第一篇,新建工程目录ProjectMould,将先前打包好的Start,Library和User文件^C^V过来,并在Keil5内完成器件支持包的…...

n3.平滑升级和回滚

平滑升级和回滚 1. 平滑升级流程2. 平滑升级和回滚案例 有时候我们需要对Nginx版本进行升级以满足对其功能的需求,例如添加新模块,需要新功能,而此时 Nginx又在跑着业务无法停掉,这时我们就可能选择平滑升级 1. 平滑升级流程 平…...

C#WPF DialogHost.Show 弹出对话框并返回数据

在WPF中,使用DialogHost.Show方法显示一个对话框并获取返回数据,你需要定义一个对话框,并在对话框关闭时返回数据。以下是一个简单的例子: 首先,在主窗口中添加DialogHost控件: <MaterialDesign:DialogHost x:Name="dialogHost" /> 然后,创建一个对话…...

Kafka Producer发送消息流程之分区器和数据收集器

文章目录 1. Partitioner分区器2. 自定义分区器3. RecordAccumulator数据收集器 1. Partitioner分区器 clients/src/main/java/org/apache/kafka/clients/producer/KafkaProducer.java&#xff0c;中doSend方法&#xff0c;记录了生产者将消息发送的流程&#xff0c;其中有一步…...

Codeforces Round 958 (Div. 2)

C o d e f o r c e s R o u n d 958 ( D i v . 2 ) \Huge{Codeforces Round 958 (Div. 2)} CodeforcesRound958(Div.2) 文章目录 Problems A. Split the Multiset题意思路标程 Problems B. Make Majority题意思路标程 Problems C. Increasing Sequence with Fixed OR题意思路标…...

<数据集>猫狗识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;3686张 标注数量(xml文件个数)&#xff1a;3686 标注数量(txt文件个数)&#xff1a;3686 标注类别数&#xff1a;2 标注类别名称&#xff1a;[cat, dog] 序号类别名称图片数框数1cat118811892dog24982498 使用标…...

Figma 中文版指南:获取和安装汉化插件

Figma是一种主流的在线团队合作设计工具&#xff0c;也是一种基于 Web 端的设计工具。在当今的设计时代&#xff0c;Figma 的使用满足了每个人的设计需求&#xff0c;不仅可以实现在线编辑&#xff0c;还可以方便日常管理&#xff0c;有效提高工作效率。然而&#xff0c;相信很…...

用c语言写一个贪吃蛇游戏

贪吃蛇游戏通常涉及到终端图形编程和简单的游戏逻辑。以下是一个基本的实现示例&#xff0c;包括贪吃蛇的移动、食物生成、碰撞检测等功能。 1. 贪吃蛇游戏的基本结构 贪吃蛇游戏可以分为以下几个部分&#xff1a; 游戏地图和终端绘制&#xff1a;使用二维数组表示游戏地图&am…...

计算机网络入门 --网络模型

计算机网络入门 --网络模型 1.OSI七层模型 1.1 模型概念 OSI七层模型是将计算机网络通信协议划分为七个不同层次的标准化框架&#xff0c;每一层都负责不同功能&#xff0c;并从物理连接层开始处理。OSI七层网络模型如下分别为&#xff1a;物理层、数据链路层、网络层、传输…...

陪玩系统小程序模式APP小程序H5系统搭建开发

随着移动互联网的营及和游戏行业的蓬轨发展&#xff0c;陪玩服务应远而生并迅速唱起&#xff0c;陪玩系统小程序作为连接游戏玩家与陪玩师的桥梁&#xff0c;其模式系统的搭建与开发是得尤为重要&#xff0c;本文将洋细凰述陪玩系统小程宗模式系统的搭建开发流程&#xff0c;包…...

算法训练营day72

题目&#xff1a;117. 软件构建 (kamacoder.com) #include<iostream> #include<unordered_map> #include<vector> #include<queue>using namespace std;int main() {int n, m;cin >> n >> m;vector<int> indegree(n, 0);unordered_…...

C语言------指针讲解(2)

目录 一、数组名的理解 二、使用指针访问数组 三、一维数组传参的本质 四、冒泡排序 五、二级指针 六、指针数组 七、指针数组模拟二维数组 一、数组名的理解 通过学习&#xff0c;我们知道&#xff1a;数组名和数组首元素的地址打印出来的结果一模一样&#xff0c;数组…...

大数据技术基础

一、大数据平台 1.大数据平台方案步骤&#xff1a; ①市场上有哪些大数据平台 ②硬件、系统、业务增长等方面 ③方案是否通过 通过后&#xff1a;按照一期目标投入 先虚拟环境部署联系&#xff0c;再实际部署 《大数据架构介绍》《Hadoop架构解析》《Hadoop集群规划》 《H…...

【文心智能体】前几天百度热搜有一条非常有趣的话题《00后疯感工牌》,看看如何通过低代码工作流方式实现图片显示

00后疯感工牌体验&#xff1a;https://mbd.baidu.com/ma/s/6yA90qtM 目录 前言比赛推荐工作流创建工作流入口创建工作流界面工作流界面HTTP工具卡点地方 总结推荐文章 前言 前几天百度热搜有一条非常有有趣《00后疯感工牌》。 想着通过文心智能体去一键生成00后疯感工牌是不是…...

C++20中的constinit说明符

constinit说明符断言(assert)变量具有静态初始化&#xff0c;即零初始化和常量初始化(zero initialization and constant initialization)&#xff0c;否则程序格式不正确(program is ill-formed)。 constinit说明符声明具有静态或线程存储持续时间(thread storage duration)的…...

Java 中的正则表达式

转义字符由反斜杠\x组成&#xff0c;用于实现特殊功能当想取消这些特殊功能时可以在前面加上反斜杠\ 例如在Java中当\出现时是转义字符的一部分&#xff0c;具有特殊意义&#xff0c;前面加一个反斜可以取消其特殊意义&#xff0c;表示1个普通的反斜杠\&#xff0c;\\\\表示2个…...

华为配置蓝牙终端定位实验

个人主页&#xff1a;知孤云出岫 目录 配置蓝牙终端定位示例 业务需求 组网需求 数据规划 配置思路 配置注意事项 操作步骤 配置文件 配置蓝牙终端定位示例 组网图形 图1 配置蓝牙终端定位示例组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件 业…...

搭建hadoop+spark完全分布式集群环境

目录 一、集群规划 二、更改主机名 三、建立主机名和ip的映射 四、关闭防火墙(master,slave1,slave2) 五、配置ssh免密码登录 六、安装JDK 七、hadoop之hdfs安装与配置 1)解压Hadoop 2)修改hadoop-env.sh 3)修改 core-site.xml 4)修改hdfs-site.xml 5) 修改s…...

pytorch-pytorch之LSTM

目录 1. nn.LSTM2. nn.LSTMCell 1. nn.LSTM 初始化函数输入参数与RNN相同&#xff0c;分别是input_size&#xff0c;hidden_size和num_layer foward函数也与RNN类似&#xff0c;只不过返回值除了out外&#xff0c;ht变为(ht,ct) 代码见下图&#xff1a; 2. nn.LSTMCell 初…...

jvm优化

1.jvm组成 什么是jvm&#xff0c;java是跨平台语言&#xff0c;对不同的平台&#xff08;windos&#xff0c;linux&#xff09;&#xff0c;有不同的jvm版本。jvm屏蔽了平台的不同&#xff0c;提供了统一的运行环境&#xff0c;让java代码无需考虑平台的差异。 jdk包含jre包含…...

Adams导入SOLIDWORKS模型“隐身”难题:从Parasolid格式到视图显示的完整排查指南

1. 当你的模型在Adams中"隐身"了怎么办&#xff1f; 最近有个做机械仿真的朋友跟我吐槽&#xff0c;说他在SOLIDWORKS里精心设计的模型&#xff0c;导出为Parasolid格式后导入Adams&#xff0c;结果模型树里明明有显示&#xff0c;3D视图区却空空如也。这种"看…...

视频修复终极指南:如何用UNTRUNC拯救你的损坏视频文件

视频修复终极指南&#xff1a;如何用UNTRUNC拯救你的损坏视频文件 【免费下载链接】untrunc Restore a damaged (truncated) mp4, m4v, mov, 3gp video. Provided you have a similar not broken video. 项目地址: https://gitcode.com/gh_mirrors/unt/untrunc 还记得那…...

07-打造个性化 AI 助手

OpenClaw 第七篇:记忆系统进阶——打造个性化 AI 助手 “Memory is the treasury and guardian of all things.” — Cicero 在人工智能领域,有一个永恒的挑战:如何让 AI 记住「我是谁」、「你是谁」,以及「我们之前聊过什么」。OpenClaw 作为新一代 AI 自动化平台,构建了…...

2024年DroidKaigi官方会议应用:Android DataStore轻量级数据存储终极指南

2024年DroidKaigi官方会议应用&#xff1a;Android DataStore轻量级数据存储终极指南 【免费下载链接】conference-app-2024 The Official Conference App for DroidKaigi 2024 项目地址: https://gitcode.com/GitHub_Trending/co/conference-app-2024 DroidKaigi 2024官…...

intv_ai_mk11详细步骤:24GB单卡部署Llama模型并启用Web UI全流程

24GB单卡部署Llama模型并启用Web UI全流程指南 1. 环境准备与快速部署 在开始部署intv_ai_mk11模型前&#xff0c;我们需要确保硬件和软件环境满足基本要求。这个中等规模的Llama架构模型可以在单张24GB显存的GPU上流畅运行&#xff0c;非常适合个人开发者和小型团队使用。 …...

软件测试之压力测试总结

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、什么是压力测试软件测试中&#xff1a;压力测试&#xff08;Stress Test&#xff09;&#xff0c;也称为强度测试、负载测试。压力测试是模拟实际应用的软硬件…...

ROS实战:UZH-FPV数据集下PL-EVIO与主流VIO算法的性能对比

1. UZH-FPV数据集与无人机视觉里程计的挑战 UZH-FPV数据集是苏黎世联邦理工学院发布的专门针对高速无人机场景的多模态数据集。这个数据集最大的特点在于它完整记录了无人机在高速机动飞行&#xff08;最高速度超过10m/s&#xff09;时的多传感器数据&#xff0c;包括双目事件相…...

健康管理APP的“专业度悖论“:当8亿用户遇上AI幻觉

——2026年数字医疗市场的信任构建与分化艾瑞咨询2026年数据显示&#xff0c;中国移动医疗用户规模突破8亿&#xff0c;市场规模达1.5万亿元。但另一组数据更值得玩味&#xff1a;用户人均单日使用时长8.1分钟&#xff0c;深夜10点至凌晨2点的咨询量占比23%&#xff0c;而整体付…...

intv_ai_mk11GPU利用率提升:Llama中型模型批处理与并发请求调优方案

intv_ai_mk11 GPU利用率提升&#xff1a;Llama中型模型批处理与并发请求调优方案 1. 背景与挑战 intv_ai_mk11 是基于 Llama 架构的中等规模文本生成模型&#xff0c;在实际部署中我们发现单请求处理时GPU利用率往往不足30%。这种低效的资源使用导致两个主要问题&#xff1a;…...

当生物黑客入侵脑机接口:安全测试救了我们公司

在脑机接口&#xff08;Brain-Computer Interface, BCI&#xff09;技术飞速发展的今天&#xff0c;软件测试从业者正面临前所未有的安全挑战。作为一名资深测试工程师&#xff0c;我亲历了一场惊心动魄的生物黑客入侵事件——一场针对我们公司脑机接口产品的攻击险些导致灾难性…...