3.跑马灯

news2025/1/17 4:09:50

1.GPIO的输出模式:

  • 推挽模式输出:因为LED0和LED1阳极都是3.3V,需要将阴极设置为低电平才可以点亮LED;
  • 操作io口时,必须引入源文件和头文件;
  • 关于时钟的文件存放在rcc中;

2.GPIO库函数介绍:

(1).1个初始化函数:

  1. void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
  2. 作用:初始化一个或多个io口(同一组)的工作方式和速度,
  3. 该函数主要是操作GPIO_CRL(CRH)寄存器,在上拉或下拉的时候有设置BSRR或BRR寄存器;
  4. 主要包括设置指定初始化io口、设置工作模式(8种)、设置io口输出速度;
注意:
  • 外设(包括GPIO)在使用之前,几乎都要先使能对应的时钟;
  • 可以一次初始化一个io组下的多个io,前提是这些io口的设置方式一样;

(2).2个读取输入电平函数:

  1. uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
  2. 作用:读取某个GPIO的输入电平。实际操作GPIOx_IDR寄存器;
  3. uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
  4. 作用:读取某组GPIO的输入电平。实际也是操作GPIOx_IDR寄存器;

(3).2个读取输出电平函数:

  1. uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
  2. 作用:读取某个GPIO的输出电平。实际操作的是GPIOx_ODR寄存器;
  3. uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
  4. 作用:读取某组GPIO的输出电平。实际也是操作GPIOx_ODR寄存器;

(4).4个设置输出电平函数:

  1. void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
  2. 作用:设置某个io口输出为高电平(1)。实际操作BSRR寄存器;
  3. void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
  4. 作用:设置某个io口输出为低电平(0)。实际操作BRR寄存器;
  5. void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
  6. void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
  7. 以上两个函数不常用,也是用来设置io口输出电平;

3.相关引脚原理图:

 4.跑马灯实验步骤:

  1. 使能io口时钟,调用RCC_APB2PeriphClockCmd()函数实现;
  2. 初始化io口模式,调用GPIO_Init()函数实现;
  3. 操作io口,输出高低电平;GPIO_SetBits()和GPIO_ResetBits()函数实现;
 注意:

        在使能io口时钟时,不同的io组,调用的时钟使能函数不一样;

(1)主函数:

#include "led.h"
#include "delay.h"

int main(){
    
    LED_Init();     //LED初始化
    delay_init();   //延时初始化
    while(1){
        delay_ms(100);
        GPIO_ResetBits(GPIOB,GPIO_Pin_5);   //LED0亮
        GPIO_SetBits(GPIOE,GPIO_Pin_5);     //LED1不亮
        delay_ms(100);
        GPIO_SetBits(GPIOB,GPIO_Pin_5);   //LED0不亮
        GPIO_ResetBits(GPIOE,GPIO_Pin_5);   //LED1亮
        
    }

}

(2)LED头文件:

#ifndef __LED_H
#define __LED_H

void LED_Init();

#endif

(3)LED初始化功能函数:

#include "led.h"
#include "stm32f10x.h"

/*
    1.功能:LED的初始化
    2.返回参数:无
*/
void LED_Init(){
    GPIO_InitTypeDef GPIO_InitStruct;
    
    //1.初始化io时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE,ENABLE);
    
    //2.配置GPIO
    GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_OD;  //推挽输出模式->既可以输出高电平也可以输出低电平
    GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5;    //PB5
    GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;    //输出速率50MHz
    GPIO_Init(GPIOB,&GPIO_InitStruct);
    GPIO_SetBits(GPIOB,GPIO_Pin_5); //LED0灭->LED对应的引脚,高电平灭,低电平亮
    
    GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_OD; //推挽输出模式
    GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5;    //PE5
    GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOE,&GPIO_InitStruct);  
    GPIO_SetBits(GPIOE,GPIO_Pin_5); //LED1灭
    
}

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

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

相关文章

【传感器】一种鲁棒的imu比例系数与偏移的校准算法

简介 最近在学习传感器相关的知识,在国外的一篇论文学习过程中,觉得这篇论文的校准方法是个不错的参考。 这种校准简单且比较鲁棒的算法,操作简单,且除了偏移与比例系数,还可以估计出传感器 xyz 轴相对于标准正交三轴…

《Python自动化测试九章经》

Python是当前非常流行的一门编程语言,它除了在人工智能、数据处理、Web开发、网络爬虫等领域得到广泛使用之外,他也非常适合软件测试人员使用,但是,对于刚入行的测试小白来说,并不知道学习Python语言可以用来完成哪些测…

chatgpt赋能python:Python用于炒股

Python用于炒股 随着互联网和数据科学的发展,越来越多的投资者开始依靠计算机和数据科学来进行更高效的投资。Python是一种广泛使用的编程语言,可以帮助投资者更好地处理数据和自动化交易。本文将简要介绍Python如何用于炒股,并分享一些有用…

canvas详解02-样式和颜色控制

在绘制图形的章节里,我只用到默认的线条和填充样式。而在这一章里,我们将会探讨 canvas 全部的可选项,来绘制出更加吸引人的内容。 #色彩 Colors 到目前为止,我们只看到过绘制内容的方法。如果我们想要给图形上色,有两…

捕捉信号/信号的处理步骤

一、信号会在合适的时候被处理 先摆出一个结论:信号会在合适的时候被处理。 当然,这里说的信号默认排除了实时信号,那个是已接收到信号就立马处理信号。 上面说的合适的时候其实就是进程从内核态切换到用户态的时候。 二、何为内核态和用户…

Golang -> Golang 变量

Golang 变量 Golang 变量使用的三种方式变量的声明,初始化和赋值程序中 号的使用数据类型的基本介绍int 的无符号的类型:int 的其它类型的说明:整型的使用细节 小数类型/浮点型小数类型分类浮点型使用细节 字符类型字符类型使用细节字符类型本质探讨 布…

java面向对象部分

在学校时学的比较乱,趁暑假再系统的学一遍 访问权限控制 private:私有,只能被本身类访问 什么都不写:默认,只能被类本身和同包中的其他类访问 protected:受保护的,只能被类本身和同包中的其…

计算物理专题:实对称矩阵特征值的求解问题

我们需要求出一个实对称阵的全部特征值与特征向量实对称矩阵特征值的求解是计算量子力学的基础之一(算符是厄米的)同时,实对称矩阵的求解也是使用有限差分法解本征方程的重要方法之一 雅克比方法 我知道这个推导过程非常的复杂,所…

计算物理专题:双向打靶法解决本征值问题

计算物理专题:双向打靶法解决本征值问题 双向打靶法全部代码 EigenMethods.py import numpy as np import matplotlib.pyplot as plt from SchrodingerTools import *#type-ode1: ## y(x)f(x)y(x) g(x) ##tips: ##lambda eigen,x:f(eigen,x)def replace_eigen(ei…

365天深度学习训练营-第T3周:天气识别

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍦 参考文章:TensorFlow入门实战|第3周:天气识别🍖 原作者:K同学啊|接辅导、项目定制 我的环境: 语言环境&#xff1a…

Web网页制作-知识点(4)——CSS盒子模型、弹性盒模型(flex box)、文档流、浮动、清除浮动、定位、圆角、阴影

目录 CSS盒子模型 概念 弹性盒模型(flex box) 内容 父元素上的属性 display属性 flex-direction属性 justify-content属性 align-items属性 子元素上的属性 flex 文档流(标准流) 浮动 定义 浮动的原理 清除浮动 …

Java开发 - 负载均衡你了解多少?

前言 前面很多篇博客都有涉及到负载均衡,而负载均衡也并不是某一个框架的专利,从博主接触Java以来,使用的很多框架都自带了负载均衡的特点。今天,我们就来一探究竟,了解下负载均衡是什么,该怎么在项目中使…

Python 函数:理解并使用 return 语句

你好,我是悦创。 函数在 Python 编程中起着至关重要的作用。他们封装了一段代码,并给它一个名字,这样我们可以在程序的任何地方,通过这个名字来调用这段代码。return 是函数的一个重要组成部分,它可以使函数输出一个值…

差分方程转化为Z变换方程

差分方程是描述离散时间系统动态行为的数学工具,而Z变换则是将离散时间信号从时间域转换到复频域的工具。因此,将差分方程转换为Z变换方程可以方便我们在复频域分析离散时间系统的动态行为。 假设我们有一个差分方程: a n x [ n ] a n − 1 x [ n − 1…

rabbitmq第二课-RabbitMQ核心编程模型以及消息应用场景详解

一、回顾RabbitMQ基础概念 二、RabbitMQ基础编程模型 使用RabbitMQ提供的原生客户端API进行交互。这是使用RabbitMQ的基础。 1.1、maven依赖 <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version&g…

C语言:使用指针使字符串逆序

题目&#xff1a; 链接&#xff1a;字符逆序__牛客网 来源&#xff1a;牛客网 将一个字符串str的内容颠倒过来&#xff0c;并输出。 输入描述: 输入一个字符串&#xff0c;可以有空格 输出描述: 输出逆序的字符串 示例1 输入 I am a student 输出 tneduts a ma I …

VUE 2X 生命周期 ⑩①

目录 文章有误请指正&#xff0c;如果觉得对你有用&#xff0c;请点三连一波&#xff0c;蟹蟹支持✨ V u e j s Vuejs Vuejs初见生面周期分析生命周期生命周期总结总结 文章有误请指正&#xff0c;如果觉得对你有用&#xff0c;请点三连一波&#xff0c;蟹蟹支持✨ ⡖⠒⠒⠒⠤⢄…

《算法设计与分析》学习笔记

目录 算法基本概念 算法的定义 算法复杂度分析 渐近记号 ①渐近上界记号O ②渐近下界记号Ω ③渐近紧确界记号 Θ ④非渐近紧确上界记号o ⑤非渐近紧确下界记号ω 渐进记号极限定义 分治 分治步骤 递归树 ​编辑代入法 主方法 改变变量 二叉树 堆 建堆 堆排…

【promptulate专栏】使用GPT和XMind快速构建思维导图

本文节选自笔者博客&#xff1a;https://www.blog.zeeland.cn/archives/ao302950h3j &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是Zeeland&#xff0c;全栈领域优质创作者。&#x1f4dd; CSDN主页&#xff1a;Zeeland&#x1f525;&#x1f4e3; 我的博客&#…

【Java】缓存常见问题及解决方式

文章目录 一、缓存常见问题二、数据不一致2.1、一致性问题2.2、解决方案 三、缓存穿透3.1、问题3.2、解决方案布隆过滤器使用布隆过滤器解决缓存穿透 四、缓存击穿4.1、问题4.2、解决方案 五、缓存雪崩5.1、问题5.2、解决方案 六、大key及热点key6.1、问题6.2、解决方案大key热…