当前位置:网站首页>Introduction au GPIO
Introduction au GPIO
2022-07-06 23:55:00 【Petit Hou... 2022】
GPIOIntroduction
1.Introduction
GPIOEst l'abréviation du port d'entrée / sortie universel,En termes simples,STM32Pins contrôlables,STM32ChipGPIOLa goupille est reliée à un dispositif externe,Pour communiquer avec l'extérieur、Fonctions de contrôle et d'acquisition de données.STM32ChipGPIODivisé en plusieurs groupes,Chaque groupe a16Pins,Si le modèle estSTM32F103VET6Les modèles de puces sontGPIOA、GPIOB、GPIOCàGPIOETotal5GroupeGPIO,Les puces.1O0Pins,Parmi euxGPIOC'est une grande partie de,Tous lesGPIOLes broches ont des fonctions d'entrée et de sortie de base.
La fonction de sortie la plus basique estSTM32La sortie de la broche de commande est élevée、Faible niveau,Réaliser la commande de commutation,Ru - ji.GPIOLes broches sont connectées àLEDLumière,Alors on peut contrôlerLEDLumière allumée et éteinte,Broche à relais ou à triode,Cela permet de contrôler l'allumage et l'arrêt des circuits externes de haute puissance par relais ou triode.
La fonction d'entrée la plus élémentaire est de détecter le niveau d'entrée externe,Ru - ji.GPIOLes broches sont connectées aux touches,Indique si la clé est pressée en fonction du niveau.
1.1 Diode de protection et、Résistance à la traction
**Les deux tubes secondaires de protection de la goupille empêchent l'entrée de haute ou basse tension à l'extérieur de la goupille,**Lorsque la tension de la broche est supérieure àVDDHeure,La Diode supérieure est conductrice,Lorsque la tension de la broche est inférieure àVssHeure,La Diode inférieure est conductrice,Empêcher l'introduction d'une tension anormale dans la puce de brûler la puce.Malgré cette protection,Ça ne veut pas direSTM32 La goupille peut être directement connectée à l'entraînement de haute puissance ,Comme un moteur à entraînement direct, Entraînement forcé ou moteur non tournant , Ou la puce brûle , Doit augmenter la puissance et isoler l'entraînement du circuit .
1.2 P-MOS Tube etN-MOS Tube
GPIO Après avoir traversé les deux diodes de protection , Vers le Haut “Mode d'entrée”Structure, Vers le bas “Mode de sortie”Structure. Regardez d'abord la section mode de sortie , La ligne passe par un PMOSEtN-MOS Circuit unitaire constitué de tubes . Cette structure permet GPIOOui.“Sortie Push - pull”Et“Sortie de fuite ouverte”Deux modes.
Ce qu'on appelleMode de sortie Push - pull, C'est basé sur ces deux - là. MOS La façon dont les tubes fonctionnent est nommée .**Entrez le niveau élevé dans la structure, Après inversion ,En hautP-MOSConduction,En dessousN-MOSFermer,Sortie externe haut niveau;Et l'entrée d'un moment de faible puissance dans la structure, Après inversion ,N-MOSCanalisation,P-MOSFermer,Sortie externe faible niveau.*****Lorsque le niveau de la goupille est commuté,Deux tubes à tour de rôle,PLe tuyau est responsable du remplissage du courant,NLe tube tire le courant,Pour augmenter sa capacité de charge et sa vitesse de commutation beaucoup plus rapidement que d'habitude.*Le bas niveau de la sortie Push - pull est0Volt,Le niveau élevé est3.3Volt, Voir le diagramme de référence pour le circuit équivalent Push - pull , C'est un circuit équivalent en mode de sortie Push - pull .
EtMode de sortie de fuite ouverteHeure,En hautP-MOS Tube complètement inopérant .Si nous contrôlons la sortie comme0,Faible niveau,EtPMOSTube fermé,N-MOSCanalisation, Mise à la terre de la sortie ,Si la sortie de contrôle est1( Il ne peut pas produire directement des niveaux élevés )Heure,EtP-MOSTube etN-MOSLes tuyaux sont fermés,Donc la broche ne produit pas de haut niveau,Pas de sortie de bas niveau,Haute résistance.
La sortie de fuite ouverte est généralement utilisée pourI2C、SMBUS Communications, etc. nécessaires“Lignes et”Dans le circuit de bus de la fonction
typedef enum
{
GPIO_Mode_AIN = 0x0, // Entrée analogique
GPIO_Mode_IN_FLOATING = 0x04, // Entrée flottante
GPIO_Mode_IPD = 0x28, // Drop - down input
GPIO_Mode_IPU = 0x48, // Tirez sur l'entrée
GPIO_Mode_Out_OD = 0x14, // Sortie de fuite ouverte
GPIO_Mode_Out_PP = 0x10, // Sortie Push - pull
GPIO_Mode_AF_OD = 0x1C, // Multiplexage de la sortie de fuite ouverte
GPIO_Mode_AF_PP = 0x18 // Multiplexage Push - Pull Output
} GPIOMode_TypeDef;
1.3AllumezLEDLumière
Processus
1)ActiverIOHorloge de bouche,Par appel:
RCC_ABP2PeriphColckCmd( )
- InitialisationIOMode bouche,Appelez:
GPIO_Init( )
- FonctionnementIOBouche,Haut et bas niveau de sortie
GPIO_SetBits( )
GPIO_ResetBits( )
# Pour augmenter la portabilité du Code , Définir les macros associées au matériel dans bsp_LED.h Moyenne
#ifndef _BSP_LED_H
#define _BSP_LED_H
#define LED1_GPIO_CLK RCC_APB2Periph_GPIOA
#define LED1_GPIO_PORT GPIOA
#define LED1_GPIO_PIN GPIO_Pin_8
#define LED2_GPIO_CLK RCC_APB2Periph_GPIOD
#define LED2_GPIO_PORT GPIOD
#define LED2_GPIO_PIN GPIO_Pin_2
#include "stm32f10x.h"
void LED_GPIO_Config(void);
#endif/*_BSP_LED_H*/
LEDConfiguration d'initialisation
#include "./LED/bsp_led.h"
void LED_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitType_struct_A;
GPIO_InitTypeDef GPIO_InitType_struct_D;
/* Étape 1: allumez l'horloge périphérique */
RCC_APB2PeriphClockCmd(LED1_GPIO_CLK,ENABLE);
RCC_APB2PeriphClockCmd(LED2_GPIO_CLK,ENABLE);
/* Étape 2 configurer la structure d'initialisation périphérique */
GPIO_InitType_struct_A.GPIO_Pin = LED1_GPIO_PIN;
GPIO_InitType_struct_A.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitType_struct_A.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitType_struct_D.GPIO_Pin = LED2_GPIO_PIN;
GPIO_InitType_struct_D.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitType_struct_D.GPIO_Speed = GPIO_Speed_10MHz;
/* Étape 3 appeler la fonction d'initialisation , Écrire les membres de la structure configurée dans le registre */
GPIO_Init(LED1_GPIO_PORT,&GPIO_InitType_struct_A);
GPIO_Init(LED2_GPIO_PORT,&GPIO_InitType_struct_D);
Procédure principale
#include "stm32f10x.h"
#include "./LED/bsp_led.h"
void delay(uint32_t count)
{
for(;count!=0;count--);
}
int main(void)
{
LED_GPIO_Config( );
while(1)
{
GPIO_SetBits(LED2_GPIO_PORT,LED2_GPIO_PIN);
GPIO_ResetBits(LED1_GPIO_PORT,LED1_GPIO_PIN);
delay(0xfffff);
GPIO_SetBits(LED1_GPIO_PORT,LED1_GPIO_PIN);
GPIO_ResetBits(GPIOD,LED2_GPIO_PIN);
delay(0xfffff);
}
}
边栏推荐
- How to answer the dualistic opposition of Zhihu
- 谷歌百度雅虎都是中国公司开发的通用搜索引擎_百度搜索引擎url
- 专为决策树打造,新加坡国立大学&清华大学联合提出快速安全的联邦学习新系统
- 短链的设计
- 本地部署 zeppelin 0.10.1
- web渗透测试是什么_渗透实战
- vector的使用方法_vector指针如何使用
- Today, I met a senior test developer from Tencent and saw the ceiling of the foundation
- Résumé des connaissances de gradle
- 快手的新生意,还得靠辛巴吆喝?
猜你喜欢
随机推荐
Oracle EMCC 13.5 environment in docker every minute
1000字精选 —— 接口测试基础
【CVPR 2022】半监督目标检测:Dense Learning based Semi-Supervised Object Detection
Close unregistering application XXX with Eureka with status down after Eureka client starts
1000 words selected - interface test basis
17、 MySQL - high availability + read / write separation + gtid + semi synchronous master-slave replication cluster
短链的设计
英国都在试行4天工作制了,为什么BAT还对996上瘾?
DAY TWO
app通用功能测试用例
Gradle knowledge generalization
Tourism Management System Based on jsp+servlet+mysql framework [source code + database + report]
Gradle知识概括
[unmanned aerial vehicle] multi unmanned cooperative task allocation program platform, including Matlab code
Do you still have to rely on Simba to shout for a new business that is Kwai?
Automatic test tool katalon (WEB) test operation instructions
leetcode:236. 二叉树的最近公共祖先
Wasserstein slim gain with gradient poverty (wsgain-gp) introduction and code implementation -- missing data filling based on generated countermeasure network
okcc呼叫中心的订单管理时怎么样的
DAY THREE