Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >物联网-点灯闪灯实验(三个灯)

物联网-点灯闪灯实验(三个灯)

原创
作者头像
会洗碗的CV工程师
发布于 2024-02-04 13:12:56
发布于 2024-02-04 13:12:56
60300
代码可运行
举报
文章被收录于专栏:LongJava学习资料LongJava学习资料
运行总次数:0
代码可运行

1. 实验目的

使用寄存器点亮D3,D4,D5,三个LED灯

点灯闪灯实验(三个灯)的步骤如下:

  1. 将电源正极连接到二极管阳极,负极连接到阴极。确保二极管正常工作。
  2. 连接三个LED灯到单片机引脚,并编写程序来控制它们的状态。可以使用sbit关键字定义变量,并将LED灯的状态赋值给这些变量。
  3. 在程序中编写一个循环,使三个LED灯以固定的频率交替闪烁。可以使用计数器来控制计时的精度,并根据计数值来控制LED灯的状态。
  4. 在每次计时到1秒之后,计数器清零,然后重新开始计数。根据计数值的大小,将LED0和LED1的状态进行切换,实现LED灯的交替闪烁。
  5. 重复上述步骤,使三个LED灯保持交替闪烁的状态。

注意:在实验过程中,要确保电流在3~20mA之间,以避免烧坏二极管。同时,确保连接的线路正确无误,以避免发生短路等安全事故。

2. 实验原理

图 3.3.2 LED 灯电路连接图

图中从 3 个 LED 灯的阳极引出连接到 3.3V 电源,阴极各经过 1 个电阻引入至 STM32

的 3 个 GPIO 引脚 PH10、PH11、PH12 中,所以我们只要控制这三个引脚输出高低电平,

即可控制其所连接 LED 灯的亮灭。如果您的实验板 STM32 连接到 LED 灯的引脚或极性不

一样,只需要修改程序到对应的 GPIO 引脚即可,工作原理都是一样的。

我们的目标是把 GPIO 的引脚设置成推挽输出模式并且默认下拉,输出低电平,这样就

能让 LED 灯亮起来了。

3. 主要仪器设备

STM32开发板,keil5软件

4. 实验内容及步骤

1. 使用keil5打开工程

2. 引入stm32f4xx.h头文件

3. 修改main函数,如下:

代码语言:c
代码运行次数:0
运行
AI代码解释
复制
/*
 使用寄存器的方法点亮LED灯
  */
#include "stm32f4xx.h" 
void delay(int xms) {
 int i,j;
 for(i=xms;i>0;i--)
  for(j=110;j>0;j--);
}
/**
  *   主函数
  */
int main(void)
{ 
 /*开启 GPIOH 时钟,使用外设时都要先开启它的时钟*/
 RCC_AHB1ENR |= (1<<7); 
 /* LED 端口初始化 */
 /*GPIOH MODER10清空*/
 GPIOH_MODER  &= ~( 0x03<< (2*11));
 /*PH10 MODER10 = 01b 输出模式*/
 GPIOH_MODER |= (1<<2*11);
  /*GPIOH MODER10清空*/
 GPIOH_MODER  &= ~( 0x03<< (2*12));
 /*PH10 MODER10 = 01b 输出模式*/
 GPIOH_MODER |= (1<<2*12);
  /*GPIOH MODER10清空*/
 GPIOH_MODER  &= ~( 0x03<< (2*10));
 /*PH10 MODER10 = 01b 输出模式*/
 GPIOH_MODER |= (1<<2*10);
 /*GPIOH OTYPER10清空*/
 GPIOH_OTYPER &= ~(1<<1*10);
 /*PH10 OTYPER10 = 0b 推挽模式*/
 GPIOH_OTYPER |= (0<<1*10);
 /*GPIOH OSPEEDR10清空*/
 GPIOH_OSPEEDR &= ~(0x03<<2*10);
 /*PH10 OSPEEDR10 = 0b 速率2MHz*/
 GPIOH_OSPEEDR |= (0<<2*10);
 /*GPIOH PUPDR10清空*/
 GPIOH_PUPDR &= ~(0x03<<2*10);
 /*PH10 PUPDR10 = 01b 上拉模式*/
 GPIOH_PUPDR |= (1<<2*10);
 while(1){
 /*PH10 BSRR寄存器的 BR10置1,使引脚输出低电平*/
 GPIOH_BSRR |= (1<<16<<10);
  GPIOH_BSRR |= (1<<16<<11);
  GPIOH_BSRR |= (1<<16<<12);
 delay(5000);
 /*PH10 BSRR寄存器的 BS10置1,使引脚输出高电平*/
 GPIOH_BSRR |= (1<<10);
  GPIOH_BSRR |= (1<<11);
  GPIOH_BSRR |= (1<<12);
  delay(5000);
 }
}
// 函数为空,目的是为了骗过编译器不报错
void SystemInit(void){}

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
嵌入式- 使用寄存器点亮LED灯实验
在微控制器中,通常使用寄存器来控制某些特定的功能,例如点亮LED灯。以下是一个简单的例子,说明如何在基于寄存器的微控制器上使用寄存器点亮LED灯。
会洗碗的CV工程师
2024/02/02
5830
嵌入式- 使用寄存器点亮LED灯实验
详细介绍如何读懂STM32开发板电路原理图以及芯片文档和开发手册,并编写一个测试程序:点亮一个LED灯「建议收藏」
XX代表系列版本号,ARM公司开发的芯片大多数都是一样的,除非增加了新功能才会更正芯片手册,XX就代表该文档支持系列版本!
全栈程序员站长
2022/09/25
3.5K0
详细介绍如何读懂STM32开发板电路原理图以及芯片文档和开发手册,并编写一个测试程序:点亮一个LED灯「建议收藏」
STM32-GPIO模式+寄存器点灯
引脚的两个保护二级管可以防止引脚外部过高或过低的电压输入,当引脚电压高于VDD 时,上方的二极管导通,当引脚电压低于VSS 时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。尽管有这样的保护,并不意味着STM32 的引脚能直接外接大功率驱动器件,如直接驱动电机,强制驱动要么电机不转,要么导致芯片烧坏,必须要加大功率及隔离电路驱动。
云深无际
2022/02/09
7630
STM32-GPIO模式+寄存器点灯
stm32学习笔记之GPIO功能框图分析
  GPIO 是通用输入输出端口的简称,简单来说就是STM32 可控制的引脚,STM32 芯片的GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。STM32 芯片的GPIO被分成很多组,每组有16 个引脚,如型号为STM32F103VET6 型号的芯片有GPIOA、GPIOB、GPIOC 至GPIOE 共5 组GPIO,芯片一共100 个引脚,其中GPIO就占了一大部分,所有的GPIO引脚都有基本的输入输出功能。
用户6754675
2019/12/23
1.6K0
STM32F407 GPIO口输出配置配置步骤
STM32F407ZGT6 是意法半导体(STMicroelectronics)公司推出的一款高性能ARM Cortex-M4核心的32位微控制器(MCU)。它是 STM32F4 系列的一员,具备强大的处理能力和丰富的外设功能,适用于各种应用领域。
DS小龙哥
2023/07/08
7590
STM32F407 GPIO口输出配置配置步骤
(三)STM32基础——GPIO介绍
        GPIO(General Purpose Input Output)叫做通用输入输出口,可配置为8种输入输出模式。
小点点
2022/12/12
1.2K0
(三)STM32基础——GPIO介绍
【STM32H7教程】第17章 STM32H7之GPIO的HAL库API
本章教程为大家讲解GPIO(General-purpose I/Os)的API使用和注意事项。GPIO是所有外设里面较容易掌握的,但也是用到最多的。
Simon223
2019/05/15
1.6K0
STM32F407 串口配置步骤
介绍STM32F407串口配置步骤,完成串口的数据发送与接收、实现中断接收,支持printf重定向。
DS小龙哥
2023/07/08
7430
STM32F407 串口配置步骤
【STM32】IO口取反 | 寄存器方式 | 异或运算符 | 原理
在嵌入式系统中,IO口(输入/输出口)的控制是非常基础且重要的操作。STM32作为一种广泛使用的微控制器,提供了多种方式来操作其IO口。其中,利用寄存器直接操作和使用异或运算符来取反IO口的状态是一种高效且灵活的方法。本文将详细介绍如何通过寄存器方式和异或运算符对STM32的GPIO引脚进行取反操作,帮助读者深入理解这一过程。
LuckiBit
2024/12/11
7110
【嵌入式】手把手教你入门STM32的GPIO:初识GPIO输出
STM32是一系列基于ARM Cortex-M内核的32位微控制器。该系列微控制器广泛应用于计算机、通讯、工业自动化、消费电子、汽车电子、医疗仪器及家庭电器等领域。该系列控制器具有高性能、低功耗、智能化等特点。其中,GPIO就是STM32控制器中的一种重要的通用输入输出口。
用户10923087
2024/10/16
1.8K0
【嵌入式】手把手教你入门STM32的GPIO:初识GPIO输出
单片机零基础学习之从“点灯”入门STM32
  本篇文章通过一个简单的例子来熟悉模块化编程以及利用库函数的方法进行开发使用STM32外设的基本流程。
用户6754675
2020/01/13
7970
STM32寄存器讲解
原理讲解 芯片讲解 STM32F103芯片 我们看到的 STM32 芯片是已经封装好的成品,主要由内核和片上外设组成。若与电脑类比,内核与外设就如同电脑上的 CPU与主板、内存、显卡、硬盘的关系。 STM32F103采用的是 Cortex-M3内核,内核即 CPU,由 ARM公司设计。ARM公司并不生产芯片,而是出售其芯片技术授权。芯片生产厂商(SOC)如 ST、TI、Freescale,负责在内核之外设计部件并生产整个芯片,这些内核之外的部件被称为核外外设或片上外设。如 GPIO、USART(串口)、I2C、SPI等都叫做片上外设。(采用野火官方的介绍)。
跋扈洋
2021/02/02
1.8K0
STM32寄存器讲解
物联网-GPIO输出—使用固件库点亮LED灯
本实验板连接了 3 个 LED 灯,这些 LED 灯的阴极都是连接到 STM32 的 GPIO 引脚, 只要我们控制 GPIO 引脚的电平输出状态,即可控制 LED 灯的亮灭。 若您使用的实验板 LED 灯的连接方式或引脚不一样,只需根据我们的工程修改引脚即可,程序的控制原理相同。
会洗碗的CV工程师
2024/02/05
3390
物联网-GPIO输出—使用固件库点亮LED灯
GPIO基本知识
GPIO是通用输入/输出端口的简称,是STM32可控制的引脚。GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。那STM32引脚是如何分类的?GPIO内部结构是怎样的,随海翎光电的小编一起看看吧!
利又德智能感知
2023/07/07
2.5K0
GPIO基本知识
STM32F103GPIO-LED点灯
GPIO(General-Purpose IO ports,通用输入/输出接口),用于感知外界信号(输入模式)和控制外部设备(输出模式),如图 6.1.1 所示的STM32F103ZET6芯片四周的细引脚就是GPIO。
韦东山
2022/05/05
9850
STM32F103GPIO-LED点灯
STM点滴一
就就是你用BSRR和BRR去改变管脚状态的时候,没有被中断打断的风险。也就不需要关闭中断。
用户4645519
2020/09/07
3760
STM点滴一
STM32 GPIO的原理、特性、选型和配置
STM32 GPIO是通用输入/输出端口的英文简称,其可实现输入、输出、驱动、通信等功能,STM32的I/O 端口有8种模式(4种输入模式和4种输出模式),每个 I/O 端口位支持3种最大翻转速度(2MHz、10MHz、50MHz),均可自由编程,但I/O 端口寄存器必须按 32 位字、半字(16位)或字节(8位)进行访问,具体模式如下所示:
不脱发的程序猿
2021/01/20
1.2K0
【STM32】GPIO口以及EXTI外部中断
输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等
s-little-monster
2024/08/09
5880
【STM32】GPIO口以及EXTI外部中断
物联网-GPIO输入—按键检测
通过按键控制三个LED灯的关灭,按下按键k2,LED显示流水灯样式,按下按键k3,LED从新开始显示流水灯。
会洗碗的CV工程师
2024/02/07
5110
物联网-GPIO输入—按键检测
STM32F407 GPIO口输入配置配置步骤
介绍STM32F407新建寄存器工程流程,介绍输入模式的配置方式,以按键为例完成按键输入检测。
DS小龙哥
2023/07/08
4190
STM32F407 GPIO口输入配置配置步骤
相关推荐
嵌入式- 使用寄存器点亮LED灯实验
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验