STM32学习笔记(3)- GPIO输出

无人问津也好,技不如人也罢,都应静下心来,去做该做的事。

最近在学STM32,所以也开贴记录一下主要内容,省的过目即忘。视频教程为江科大(改名江协科技),网站jiangxiekeji.com

本期介绍GPIO的输出,其中会穿插一些C语言的知识。

GPIO简介

GPIO:(General Purpose Input Output)通用输入输出口,俗称IO口。

根据使用场景可配置为8种输入输出模式。

引脚电平:0V-3.3V,部分引脚可容忍5V(指输入最大5V,第一期里引脚分配表中带FT的引脚)

输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等。

输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等。

GPIO基本结构

GPIO都是挂在APB2总线上,总共7组,每组控制16个口。

GPIO的8种模式

开漏只能输出低电平,推挽高低电平都能输出

LED和蜂鸣器介绍

以下为 两种驱动电路,STM32常用低电平点亮LED,因为STM32一般都是低电平强驱动,高电平弱驱动。

面包板

LED实验

接线图如下

cpp 复制代码
#include "stm32f10x.h"                  // Device header
#include "Delay.h"

int main(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//配置时钟(选择外设,选择状态)
	
	GPIO_InitTypeDef GPIO_Initstructure;//定义GPIO结构体
	GPIO_Initstructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_Initstructure.GPIO_Pin = GPIO_Pin_0;
	GPIO_Initstructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_Initstructure);//配置端口模式(选择哪个GPIO,参数的结构体)
	
//	GPIO_SetBits(GPIOA,GPIO_Pin_0);//将PA0设为高电平
	GPIO_ResetBits(GPIOA,GPIO_Pin_0);//将PA0设为低电平

	while(1)
	{
		GPIO_ResetBits(GPIOA,GPIO_Pin_0);//将PA0设为低电平
		Delay_ms(500);
		GPIO_SetBits(GPIOA,GPIO_Pin_0);
		Delay_ms(500);
		
	}

}

 

操作STM32的GPIO的三个步骤:

1、实验RCC开启GPIO的时钟

2、使用GPIO_Init函数初始化GPIO

3、使用输出或输入函数控制GPIO口。

主要用到两个外设:RCC和GPIO

RCC外设三个常用函数:

void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);

void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);

void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);

GPIO常用函数:

相关推荐
前进的李工9 小时前
Agent 学习笔记 05:系统提示词应该怎么写
笔记·学习·prompt·agent·个人开发·few-shot·ai应用开发
LCG米9 小时前
STM32硬件CRC外设实测:多项式固定陷阱、CRC-32校验不匹配根因与软件查表法耗时对比落地
stm32·单片机·嵌入式硬件
正在走向自律11 小时前
【3/5】人工智能训练师 三级/高级工 考证学习方向:从“独立执行”到“设计、归因与全链条负责”
人工智能·学习·人工智能训练师·注方案设计·数据质控负责人·模型评测与调优辅助·ai训练项目交付
CCIE-Yasuo12 小时前
网络安全-学习数据库-Mysql-2
数据库·学习·mysql
La Pulga13 小时前
【FreeRTOS源码学习笔记】任务切换
单片机·mcu·学习·嵌入式·freertos·实时操作系统
IT规划师13 小时前
编程术语中的同步与异步:从"等不等"到工程取舍
后端·面试
li星野14 小时前
【学习记录】逻辑分析仪完全入门:从品牌方案到采样率、存储深度的核心概念解析
学习
旖旎夜光14 小时前
【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针
开发语言·c++·笔记·学习
WEI_YANG_JU15 小时前
初中数学教学中合作学习的研究与实践
学习
码农小韩15 小时前
FPGA学习(一)——LED点灯与开发流程
学习·fpga开发·入门·环境配置·仿真·点灯