我是靠谱客的博主 体贴机器猫,最近开发中收集的这篇文章主要介绍STM32的GPIO(STM32F103RCT6-LED)前言一、1. STM32 I/O简介二、GPIO的8种工作方式三、GPIO相关寄存器三、LED灯点亮总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 前言
  • 一、1. STM32 I/O简介
  • 二、GPIO的8种工作方式
    • 1.输入:上拉、下拉和浮空输入配置
    • 2.输入:模拟输入配置
    • 3.输出:通用输出配置
    • 4.输出:复用输出配置
  • 三、GPIO相关寄存器
  • 三、LED灯点亮
  • 总结


前言

简单的描述一下GPIO和GPIO的八种工作模式,及GPIO相关寄存器,写一个点灯

一、1. STM32 I/O简介

在 STM32 中I/O 引脚,又称为GPIO (General-Purpose I/O),主要分为GPIOA、GPIOB、 GPIOC……不同的组,每组端口分为 0~15,共 16 个不同的引脚。
不同型号的芯片,具有不同的端口组和不同的引脚数量。
可以被软件设置成各种不同的功能及模式。

二、GPIO的8种工作方式

输入输出模式结构都可以由软件分别配置成8种模式,包括:浮空输入、上拉输入、下拉输入 、模拟输入、通用开漏输出、通用推挽式输出、复用推挽式输出和复用开漏输出,见表
STM32IO引脚GPIO配置模式

1.输入:上拉、下拉和浮空输入配置

在上拉/下拉/浮空输入模式中,输出缓冲器被禁止,施密特触发器输入被激活,根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接,读输入数据寄存器的值可得到I/O状态
在这里插入图片描述

2.输入:模拟输入配置

模拟输入模式关闭了施密特触发器,不接上、下拉电阻,经由另一线路把电压信号传送到片上外设模块。如传送给 ADC 模块,由ADC 采集电压信号。所以使用 ADC外设时,必须设置为模拟输入模式。
在这里插入图片描述

3.输出:通用输出配置

如图6.3所示,图中箭头表示信号流动方向输出缓冲器是由 P-MOS 和 N-MOS 管组成的单元电路,推挽/开漏输出模式是根据其工作方式来命名的。

当I/O端口被配置为输出时,输出缓冲器被激活,施密特触发输入被激活,弱上拉和下拉电阻被禁止。
在这里插入图片描述

4.输出:复用输出配置

当I/O端口被配置为复用功能时,输出缓冲器被打开,内置外设的信号驱动输出缓冲器,施密特触发输入被激活,弱上拉和下拉电阻被禁止。

复用输出中:至于选择复用开漏输出还是复用推挽输出,是根据 GPIO 复用功能来选择的,如 GPIO 的引脚用作串口输出,则使用复用推挽输出模式;如用在I2C、SMBUS 等这些需要“线与”功能的复用场合,就使用复用开漏模式。
在这里插入图片描述

三、GPIO相关寄存器

在这里插入图片描述

三、LED灯点亮

在这里插入图片描述在这里插入图片描述

LED0是PA8,LED1是PD2,且都是共阳极,高电平灭,低电平亮

主函数


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

int main()
    
{
    
    
    LED_Init();
    while(1)
{
          
    }
     
    
}

led.c

#include "led.h"
#include "stm32f10x.h"                  // Device header
#include "stm32f10x_gpio.h"             // Keil::Device:StdPeriph Drivers:GPIO

void LED_Init()
{
	GPIO_InitTypeDef GPIO_InitStructure; //定义一个结构体
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD,ENABLE);//使能PA,PD时钟
	
    //定义PA8,GPIO设置
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽输出
    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;        //设置引脚
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; // 设置输出速度
    GPIO_Init(GPIOA,&GPIO_InitStructure);          //初始化GPIO
    GPIO_ResetBits(GPIOA,GPIO_Pin_8);     //PA8输出低电平,L0亮
	
	
	//定义PD2,GPIO设置
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽输出
    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;        //设置引脚
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; // 设置输出速度
    GPIO_Init(GPIOD,&GPIO_InitStructure);          //初始化GPIO
    GPIO_SetBits(GPIOD,GPIO_Pin_2);     //PA8输出高电平,L1灭
	
	
	
	
	
	
	
	
}

led.h

#ifndef _LED_H
#define _LED_H
#include "stm32f10x_gpio.h" 


void LED_Init(void);

#endif

总结

明天写按键和跑马灯。。。。

最后

以上就是体贴机器猫为你收集整理的STM32的GPIO(STM32F103RCT6-LED)前言一、1. STM32 I/O简介二、GPIO的8种工作方式三、GPIO相关寄存器三、LED灯点亮总结的全部内容,希望文章能够帮你解决STM32的GPIO(STM32F103RCT6-LED)前言一、1. STM32 I/O简介二、GPIO的8种工作方式三、GPIO相关寄存器三、LED灯点亮总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部