stm32 学习笔记:GPIO输出

这篇具有很好参考价值的文章主要介绍了stm32 学习笔记:GPIO输出。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、GPIO简介

       引脚电平 0-3.3V,部分可容忍5V,对输出而言最大只能输出3.3V,

       只要可以用高低电平来控制的地方,都可以用GPIO来完成,如果控制的功率比较大的设备,只需加入驱动电路即可

        GPIO 通用输入输出口,可配置为 8种 输入输出模式。

  • 输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等。而如果控制的是功率比较大的设备,只需要再添加驱动电路即可。

  • 输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入(GPIO甚至还能配置成模拟信号输入的模式,配合内部的ADC外设就能直接读取模拟电压了)、ADC电压采集、模拟通信协议接收数据等。

二、GPIO基本结构

stm32 学习笔记:GPIO输出,stm32,stm32

  所有的 GPIO 都是挂载在 ABP2 总线结构上的
  每个 GPIOX 外设有 16 个引脚,编号从 0~15,比如GPIOA 的第0引脚称为 PAO
  每个 GPIO 模块内,主要包含了寄存器和驱动器这些东西,内核可以通过 APB2 总线对寄存器进行读写。
  stm32 是32位单片机,所以寄存器是32位,GPIO模块的寄存器只有低 16 对应IO 引脚
  其中的驱动器是用来增加信号的驱动能力,比如电灯操作

三、 (重要)GPIO 位结构电路

四、GPIO模式

五、外设GPIO配置

六、LED和蜂鸣器模块

stm32 学习笔记:GPIO输出,stm32,stm32

七、外设硬件电路

stm32 学习笔记:GPIO输出,stm32,stm32     GPIO在推挽输出模式下,高低电平均有较强的驱动能力,但在单片机里,一般用第一种,因为使用高电平弱驱动 ,低电平强驱动的规则

 

八、LED闪烁电路接线:

stm32 学习笔记:GPIO输出,stm32,stm32stm32 学习笔记:GPIO输出,stm32,stm32

 九、主要程序:

1、第一步:使用RCC初始化GPIO时钟

2、第二步:使用GPIO_Init函数初始化GPIO 

3、第三步设置高低电平 

1、点亮一个灯(低电平亮)(LED连接PA0口) 

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
int main(void)
{
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使用RCC初始化GPIO时钟
	
	//使用GPIO_Init函数初始化GPIO
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   //点灯通用推挽输出
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;          //用的是GPIOA外设的0号引脚
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  //50兆hz的速度
	
	//用结构体的函数初始化GPIO口
	GPIO_Init(GPIOA,&GPIO_InitStructure);              //第二个参数为指向结构体的指针,故传地址
	
	GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);
	
	while(1)
	{
		GPIO_ResetBits(GPIOA,GPIO_Pin_0);
		Delay_ms(500);
		GPIO_SetBits(GPIOA,GPIO_Pin_0);
		Delay_ms(500);
		
		
		GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);
		//加两个延时函数
		Delay_ms(500);//毫秒延时函数(参数500)
		
		GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);//熄灭LED
		Delay_ms(500);//毫秒延时函数(参数500)
		
		GPIO_WriteBit(GPIOA,GPIO_Pin_0,(BitAction)0);
		Delay_ms(500);//毫秒延时函数(参数500)
		//加两个延时函数
		GPIO_WriteBit(GPIOA,GPIO_Pin_0,(BitAction)1);
		Delay_ms(500);
		
		
	}
}

2、流水灯(低电平亮)(LED连接PA0~PA6)

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
int main(void)
{
	
	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_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);
	
	GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);
	
	while(1)
	{
		GPIO_Write(GPIOA,~0x0001); //0000 0000 0000 0001
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0002); //0000 0000 0000 0010
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0004); //0000 0000 0000 0100
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0008); //0000 0000 0000 1000
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0010); //0000 0000 0001 0000
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0020); //0000 0000 0010 0000
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0040); //0000 0000 0100 0000
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0080); //0000 0000 1000 0000
		Delay_ms(500);
	}
}

3、蜂鸣器(低电平的时候响)(蜂鸣器接口为PB12)

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
int main(void)
{
	
	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;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	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 学习笔记:GPIO输出,stm32,stm32stm32 学习笔记:GPIO输出,stm32,stm32stm32 学习笔记:GPIO输出,stm32,stm32文章来源地址https://www.toymoban.com/news/detail-701846.html

到了这里,关于stm32 学习笔记:GPIO输出的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32 学习2 库函数控制GPIO输出

    GPIO是STM32微控制器上的一组引脚,可配置为输入或输出模式,用于与外部设备进行数字信号交换。每个GPIO引脚都有一个唯一的编号,通常称为引脚名称或引脚号码。 STM32系列微控制器通常具有多个GPIO引脚,数量取决于具体型号。 GPIO模块是STM32微控制器中非常重要的功能之一

    2024年02月21日
    浏览(23)
  • STM32外设GPIO(学习笔记)

    在编写stm32程序时,对寄存器进行操着需要知道每个外设的基地址,标准库的stm32f10x.h文件里也有各种外设的基地址。 比如GPIO:在定义输出数据寄存器地址GPIOA_ODR_Addr时,在GPIOA_BASE(GPIO端口A的基址地址)地址基础上偏移 在stm32f10x.h文件里面有定义GPIOA_BASE,是APB2PERIPH_BASE(

    2024年04月12日
    浏览(27)
  • STM32 GPIO设置(GPIO初始化)学习笔记

    GPIO 都知道是 通用输入输出接口 的意思就不详细解释 那么我们就直接进入怎么设置GPIO接口: 这里我的编译软件是keil5,相信大家都应该知道stm32有各种的工作模式上拉、下拉、推挽、开漏等等。如果想要了解具体的工作模式原理这里我推荐大家看:推挽 开漏 高阻 这都是谁

    2024年03月28日
    浏览(38)
  • STM32学习笔记(二)——STM32的GPIO和AFIO

    1.1 特殊功能引脚和普通功能引脚 STM32F103C8T6共有48个引脚 特殊功能引脚(11个) Vdd+Vss给芯片供电引脚 共三队, 六个 VDDA+VSSA模拟电压 两个 (A~Analog模拟的) BOOT0启动方式选择引脚 一个 VBAT备用电池引脚(Battery) 一个 NRST复位引脚 一个 普通IO口引脚(37个) 其中特殊功能引脚

    2024年01月21日
    浏览(30)
  • stm32——hal库学习笔记(GPIO)

    一、GPIO的八种模式分析(熟悉) GPIO_Mode_IN_FLOATING 浮空输入 GPIO_Mode_IPU 上拉输入 GPIO_Mode_IPD 下拉输入 GPIO_Mode_AIN 模拟输入 GPIO_Mode_Out_OD 开漏输出 GPIO_Mode_Out_PP 推挽输出 GPIO_Mode_AF_OD 复用开漏输出 GPIO_Mode_AF_PP 复用推挽输出 应用总结 1、上拉输入、下拉输入可以用来检测外部信号

    2024年02月21日
    浏览(27)
  • 【STM32】STM32学习笔记-GPIO相关API概述(06-1)

    文件: stm32f10x_gpio.h和stm32f10x_gpio.c 参考实现 参考: 【STM32】江科大STM32学习笔记汇总

    2024年04月29日
    浏览(24)
  • STM32的GPIO初始化配置-学习笔记

            由于刚开始没有学懂GPIO的配置原理,导致后面学习其它外设的时候总是产生阻碍,因为其它外设要使用前,大部分都要配置GPIO的初始化,因此这几天重新学习了一遍GPIO的配置,记录如下。         首先我们要知道芯片上的引脚,并不是只有GPIO的功能,还能复用成

    2024年04月17日
    浏览(37)
  • STM32萌新学习日志——用GPIO外设寄存器输出点亮LED对比库函数点亮LED——谈学习感悟

            本周学习STM32单片机,由于之前学过51单片机,为了便于切入,先学习了寄存器点亮LED灯的方法,整体思路与51单片机相似。在基本掌握后,尝试自己构建库函数雏形,过程比较困难,后面开始借鉴野火官方库函数。         这里其实建议大家在学会构建库函数后

    2024年03月17日
    浏览(76)
  • stm32——GPIO输出

    (以下内容均来自:bilibili江协科技) GPIO(general purpose input output)通用输入输出口 简介: 1、可配置8种输入输出模式 2、引脚电平:0v~3.3v,部分引脚可容忍5v(可以在这个端口输入5v的电压,也认为是高电平。但对于输出而已,最大只能输出3.3v,因为供电只有3.3v) 3、输出

    2024年02月05日
    浏览(23)
  • 江科大自化协STM32学习笔记(部分C语言知识、STM32简介和GPIO口的使用)

    本篇文章是根据B站UP主江科大自化协的教学视频STM32入门教程-2023持续更新中,在了解、学习与实操后整理的学习笔记,内容部分来自UP主的课程资料,并包含了一些个人的理解,如有谬误欢迎指正,详细知识点可以观看UP主的视频进行了解。 希望大家都能早日掌握单片机。

    2024年02月01日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包