首页 > 其他分享 >03_GPIO输出

03_GPIO输出

时间:2024-01-13 17:36:37浏览次数:29  
标签:03 0000 Pin 输出 Delay GPIOA Mode GPIO

GPIO输出

简介

image-20231208104001383

GPIO基本结构

image-20231208105408994

GPIO位结构

image-20231208132902624

GPIO模式

image-20231220153606150

  1. 四种输入模式

    GPIO_Mode_IN_FLOATING 浮空输入模式
    GPIO_Mode_IPU 上拉输入模式
    GPIO_Mode_IPD 下拉输入模式
    GPIO_Mode_AIN 模拟输入模式

  2. 四种输出模式

    GPIO_Mode_Out_OD 开漏输出模式
    GPIO_Mode_Out_PP 推挽输出模式
    GPIO_Mode_AF_OD 复用开漏输出模式
    GPIO_Mode_AF_PP 复用推挽输出模式

浮空/上拉/下拉输入

image-20231220182640377

模拟输入

image-20231221122802856

开漏/推挽输出

image-20231221122926976

复用开漏/推挽输出

image-20231221123148973

LED和蜂鸣器介绍

image-20231221132559298

硬件电路

image-20231221133029076

面包板

image-20231221134311696

点亮PC13LED灯

寄存器操作方式

#include "stm32f10x.h"                  // Device header

int main(void)
{
	RCC->APB2ENR = 0x00000010;
	GPIOC->CRH = 0x00300000;
	GPIOC->ODR = 0x00000000; //灭: GPIOC->ODR = 0x00002000;
	while(1)
	{
		
	}
}

库函数操作方式

#include "stm32f10x.h"                  // Device header

int main(void)
{
	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;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOC, &GPIO_InitStructure);
	GPIO_SetBits(GPIOC, GPIO_Pin_13); //设置高电平
	GPIO_ResetBits(GPIOC, GPIO_Pin_13); //设置低电平
	while(1)
	{
		
	}
}

控制A0端口使LED闪烁

接线图

image-20240105153352842

代码

#include "stm32f10x.h"                  // Device header
#include "Delay.h"

int main(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_Init(GPIOA,&GPIO_InitStruct);
//	GPIO_ResetBits(GPIOA,GPIO_Pin_0); //端口置0,点亮
//  GPIO_SetBits(GPIOA,GPIO_Pin_0); //端口置1,熄灭
	while(1)
	{
		GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET); //端口置0,点亮
		Delay_ms(500);
		GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET); //端口置1,熄灭
		Delay_ms(500);
	}
}

LED流水灯

接线图

image-20240105153510576

代码

#include "stm32f10x.h"                  // Device header
#include "Delay.h"

int main(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_All;
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStruct);
	while(1)
	{
		GPIO_Write(GPIOA,~0x0001); //0000 0000 0000 0001
		Delay_ms(100);
		GPIO_Write(GPIOA,~0x0002); //0000 0000 0000 0010
		Delay_ms(100);
		GPIO_Write(GPIOA,~0x0004); //0000 0000 0000 0100
		Delay_ms(100);
		GPIO_Write(GPIOA,~0x0008); //0000 0000 0000 1000
		Delay_ms(100);
		GPIO_Write(GPIOA,~0x0010); //0000 0000 0001 0000
		Delay_ms(100);                                 
		GPIO_Write(GPIOA,~0x0020); //0000 0000 0010 0000
		Delay_ms(100);                                 
		GPIO_Write(GPIOA,~0x0040); //0000 0000 0100 0000
		Delay_ms(100);                                 
		GPIO_Write(GPIOA,~0x0080); //0000 0000 1000 0000
		Delay_ms(100);
	}
}

蜂鸣器

接线图

image-20240106001738877

代码

#include "stm32f10x.h"                  // Device header
#include "Delay.h"

int main(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_12;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOB,&GPIO_InitStruct);
	
	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);
	}
}

标签:03,0000,Pin,输出,Delay,GPIOA,Mode,GPIO
From: https://www.cnblogs.com/mzx233/p/17962635

相关文章

  • Spring表达式语言(SPEL)学习(03)
    rootObject在表达式中直接写name和getName(),这时候Expression是无法解析的,因为其不知道name和getName()对应什么意思@Testpublicvoidtest06(){ ExpressionParserparser=newSpelExpressionParser(); parser.parseExpression("name").getValue(); parser.parseExpre......
  • Splunk 输出计算和转换 eval命令
    Splunkeval命令用于对搜索结果进行计算和转换,以生成新的字段或修改现有字段的值。eval命令在Splunk搜索语言中非常常用,可以进行各种数学运算、字符串操作、条件判断等。eval命令的基本语法如下: ...|eval<新字段名>=<表达式>其中,<新字段名>是你想要生成的新字段的名称,<表......
  • 2024-01-03:用go语言,给你两个长度为 n 下标从 0 开始的整数数组 cost 和 time, 分别表示
    2024-01-03:用go语言,给你两个长度为n下标从0开始的整数数组cost和time,分别表示给n堵不同的墙刷油漆需要的开销和时间。你有两名油漆匠,一位需要付费的油漆匠,刷第i堵墙需要花费time[i]单位的时间,开销为cost[i]单位的钱。一位免费的油漆匠,刷任意一堵墙的时间为1......
  • 【五期李伟平】CCF-A(AAAI'21)Game of Gradients: Mitigating Irrelevant Clients in Fe
    Nagalapatti,Lokesh,andR.Narayanam."GameofGradients:MitigatingIrrelevantClientsinFederatedLearning."(2021).  针对联邦学习中相关客户端选择(FRCS)的问题,本文提出一种可以选择具有相关数据的客户端的方法,并提出一个检测拥有特定目标标签数据的客户端......
  • plt输出的图分辨力太低怎么办
    如果使用的是Python中的Matplotlib库来绘制图形,而输出的图像分辨率较低,可以考虑以下几种方法来提高图像的分辨率:调整图像尺寸和分辨率:在调用plt.figure()创建图形对象时,可以通过设置figsize参数来调整图像的大小,通过设置dpi参数来调整图像的分辨率。例如:importmatplotlib.pyplot......
  • Python中出现"No module named 'requests'"的图文解决办法
    第一步找到pycharm中的虚拟环境的位置第二步打开虚拟环境位置的文件夹 找到Scripts的这个文件夹然后复制该文件夹的地址第三步打开“运行”(可以用快捷键WIN+R键打开)然后输入cmd第四步切换目录到虚拟环境的盘符输入“D:”(我的虚拟环境在D盘所以切换到D盘)第五......
  • 2024-01-13 Can't perform a React state update on an unmounted component. This i
    react+antd业务代码报错: Can'tperformaReactstateupdateonanunmountedcomponent.Thisisano-op,butitindicatesamemoryleakinyourapplication.Tofix,cancelallsubscriptionsandasynchronoustasksinauseEffectcleanupfunction.无法对未安装的......
  • 80V 72V 60V 48V 降12V 5V 3.3V 功耗低降压恒压芯片H6603
    输入电压80V、72V、60V、48V:这些是电源系统中的不同电压水平,通常用于驱动各种设备。例如,电动汽车、电动自行车或工业设备中的电池系统可能以这些电压级别工作。降12V:这可能是指一种电源模块,其功能是将输入电压(可能是较高的电压)降低到12V。这在一些应用中很常见,例如汽车电源系统,其中......
  • ORA-01041: internal error: hostdef extension doesn't exist错误侦察
    如果在使用netca工具安装监听时就发生了ORA-01041:internalerror:hostdefextensiondoesn'texist的错误,可能是由于配置或环境设置的问题。以下是一些建议的步骤:检查环境变量:确保ORACLE_HOME和ORACLE_SID等必要的环境变量已经正确设置。在使用netca工具时,确保使用了......
  • Powersehll交互式输入定义方法-03
    定义和使用交互式输入时,有一些注意事项需要考虑。以下是一些常见的注意事项:提示信息清晰:在提示用户输入时,确保提示信息清晰、明确,并提供必要的上下文说明,使用户知道预期的输入内容。输入验证和错误处理:对于用户输入的值,进行必要的验证和错误处理。确保输入符合预期的格式、类型或范......