Marquee Experiment-Register-Version

Vorwort

  • Da ich den 51-Mikrocontroller am Anfang nicht gut gelernt habe, ist es jetzt sehr schwierig, den 32-Mikrocontroller zu lernen. Wenn ich dem Vortrag des Lehrers zuhöre, kommt es mir vor, als wäre ich im Weltraum. Das Folgende ist eine Reihe von Wissenspunkten anhand des Beispiels von Marquee.

GPIO kurz verstehen

  • Battleship und Elite Edition (stm32f103zet6) sind beide 144-Pin-Chips mit sieben IO-Gruppen, GPIOA-GPIOG. Jede IO-Gruppe verfügt über 16 IOs, insgesamt 16*7=112 IOs.

  • Die Mini-Version (STM32F103RCT6) verfügt über insgesamt vier Gruppen von IO-Ports mit insgesamt 16*3+3 io
    GPIOA0——GPIOA15
    GPIOB0——GPIOB15
    GPIOC0——GPIOC15
    GPIOD0——GPIOD2

  • GPIO-Arbeitsmodus,
    vier Eingangsmodi:
    schwebender Eingang, Pull-
    up-Eingang,
    Pull-down- Eingang, vier Ausgangsmodi für
    analogen Eingang, Open-Drain-Ausgang (nur ein starker niedriger Pegel kann ausgegeben werden, hoher Pegel muss durch einen externen Widerstand hochgezogen werden), Open-Drain Multiplexing-Funktion Push-Pull-Typ-Ausgang (kann starke hohe und niedrige Pegel ausgeben, verbunden mit digitalen Geräten) Push-Pull-Multiplexing-Funktion Drei maximale Flip-Geschwindigkeiten -2 MHz -10 MHz -50 MHz Die Register jeder Gruppe von GPIO-Ports umfassen: zwei 32-Bit Konfigurationsregister (GPIOx-CRL, GPIOx-CRH), zwei 32-Bit-Datenregister (GPIOx-IDR, GPIO-ODR), (die unteren 16 Bits werden verwendet, die oberen 16 Bits sind reserviert. Steuerung 16 ios)











    Ein 32-Bit-Bit/Reset-Register (GPIOx-BSRR) steuert hauptsächlich das ODR-Register,
    ein 16-Bit-Reset-Register (GPIOx_BRR) und
    ein 32-Bit-Sperrregister (GPIOx-LCKR).

    Jedes I/O-Port-Bit kann frei programmiert werden, allerdings muss auf das I/O-Port-Register als 32-Bit-Wort zugegriffen werden
    (Halbwort- oder Byte-Zugriff ist nicht zulässig).
    stm32-Pin-Beschreibung
    Die meisten Ports von STM32 verfügen über Multiplexfunktionen .
    Die sogenannte Wiederverwendung bedeutet, dass einige Ports nicht nur als allgemeine E/A-Ports verwendet werden können, sondern auch einige
    Peripherie-Pins wie PA9 und PA10 wiederverwendet werden können, die als STM32-Seriell-Port-1-Pin wiederverwendet werden können
    . Funktion: Maximieren Sie die Nutzung Portressourcen

    Mit der Port-Neuzuordnungsfunktion
    können Sie bestimmte Funktionspins anderen Pins zuordnen.
    Der Standard-Pin des seriellen Ports 1 ist beispielsweise PA9. PA10 kann durch Neuzuordnung der Konfiguration PB6 zugeordnet werden.
    Die Funktion von PB7 besteht darin, die Verkabelung zu erleichtern.

    Alle IO-Ports können als Interrupt-Eingänge verwendet werden

Tickercode

  • led.h Header-Datei
#ifndef __LED_H
#define __LED_H
void LED_Init(void);


#endif


  • led.c-Quelldatei
#include "led.h"
#include "stm32f10x.h"

void LED_Init(void){
    
    
	RCC->APB2ENR|=1<<3;   //A=A|B ,设置IO端口B的时钟开启
	RCC->APB2ENR|=1<<6;	  //A=A|B ,设置IO端口E的时钟开启
	
	//GPIOB.5
	GPIOB->CRL&=0xFF0FFFFF; //先清零,与0
	GPIOB->CRL|=0x00300000; //设置工作模式为推挽输出,50MHZ
	GPIOB->ODR|=1<<5;   //初始化PB5为高电平
	
	GPIOE->CRL&=0xFF0FFFFF; //先清零,与0
	GPIOE->CRL|=0x00300000; //设置工作模式为推挽输出,50MHZ
	GPIOE->ODR|=1<<5;    //初始化PE5为高电平
}

  • Haupt c
#include "stm32f10x.h"
#include "delay.h"
#include "led.h"
int main(void)
{
    
    
delay_init();
LED_Init();
	while(1){
    
    
		GPIOB->ODR|=1<<5;	//设置PB5为高电平
		GPIOE->ODR|=1<<5;	//设置PE5为高电平
		delay_ms(500);
		
		GPIOB->ODR&=~(1<<5);   //设置PB5为低电平
		GPIOE->ODR&=~(1<<5);  //设置PE5为低电平
		delay_ms(500);

}
	


}

Supongo que te gusta

Origin blog.csdn.net/sx17860543449/article/details/109705926
Recomendado
Clasificación