STM32 - marquesina (registro)

I. Introducción

     Para ALIENTEK MiniSTM32, para completar la operación de la marquesina, tome el LED en la placa como ejemplo, para comprender qué puerto IO corresponde a la operación del LED (hardware) y cómo operar el puerto IO (software).

2. ferretería

     Para ALIENTEK MiniSTM32, los propios LED de la placa (DS0, DS1) se han conectado a los puertos IO correspondientes en la placa de desarrollo, DS0 está conectado a PA8 y DS1 está conectado a PD2.

(La imagen de arriba es el diagrama de conexión de STM32 y LED)

3. Software

1. Inicialice el puerto IO, inicialice PA8 y PD2 como puertos de salida (y la salida predeterminada es 1) y habilite los relojes de estos dos puertos

 (Nuevo archivo led.c)

#include"led.h"
void LED_Init(void)
{
RCC->APB2ENR|=1<<2;        //使能PORTA时钟
                    //(问题:APB2ENR是什么,为什么要选用APB2)
RCC->APB2ENR|=1<<5;        //使能PORTD时钟
GPIOA->CRH&=0XFFFFFFF0;   //清除相应的位
GPIOA->CRH|=0X00000003;   //PA8推挽输出
                           //(问题:什么是推挽输出,ODR是什么,位运算)
GPIOA->ODR|=1<<8;            //PA8输出高
GPIOD->CRL&=0XFFFFF0FF;
GPIOD->CRL|=0X00000300;       //PD2推挽输出
                           //(问题:CRL,CRH是什么)
GPIOD->ODR|=1<<2;              //PD2输出高
}

 ¿Qué es APB2ENR?

APB2ENR es el registro de habilitación del reloj periférico en el bus APB2

¿Por qué elegir APB2?

 El reloj está controlado por RCC, y RCC está montado en el bus del sistema AHB.Si necesita encender el reloj de GPIOB, debe encender el reloj periférico de APB2.

¿Qué es una salida push-pull?

Puede emitir niveles altos y bajos y conectarse a dispositivos digitales. El circuito push-pull en stm32 consta de dos transistores MOS: el transistor P-MOS se enciende cuando la salida es alta y el pin está conectado a VDD (3.3v). Cuando la salida es baja, el N-MOS se enciende y el pin se conecta a GND.

 ¿Qué son los ODR?

ODR es un registro de datos de salida de puerto. Este registro se puede leer y escribir, y los datos leídos de este registro se pueden usar para juzgar el estado de salida del puerto IO actual.

operación de bits

& y 1 no cambian, y 0 es 0

| o 0 no cambia, o 1 es 1

¿Qué son CRL y CRH? 2

CRL y CRH son dos registros de configuración de puertos de 32 bits en modo de configuración, que controlan el modo y la tasa de salida de cada puerto IO.

Para esta parte de la operación, primero debe comprender qué puerto IO operar, luego seleccionar el reloj de inicialización, configurar el modo de trabajo del puerto IO y finalmente controlar el puerto IO para generar niveles altos y bajos.

  2 Nuevo led.h  

#ifndef__LED_H
#define__LED_H
#include"sys.h"    //sys.h里面定义了STM32的I/O口输入读取宏定义和输出宏定义
//LED端口定义
#define LED0 PAout(8) //PA8
#define LED1 PDout(2) //PD2
void LED_Init(void);  //初始化
#endif

(Definiciones de macros relacionadas en sys.h)                      

3. Crea una nueva función principal   

#include "sys.h"	
#include "delay.h"	
#include "led.h" 
int main(void)
{		 
	Stm32_Clock_Init(9); 	//系统时钟设置
	delay_init(72);	     	//延时初始化
	LED_Init();		  	 	//初始化与LED连接的硬件接口  
	while(1)
	{
		LED0=0;
		LED1=1;
		delay_ms(300);
		LED0=1;
		LED1=0;
		delay_ms(300);
	}	 
}

    Inicialización del reloj

                En la función Stm32_Clock_Init, configuramos APB1 para dividir por 2, APB2 para dividir por 1 y AHB para dividir por 1, y seleccionamos PLLCLK como el reloj del sistema. Esta función tiene solo un parámetro PLL, que se utiliza para configurar el multiplicador del reloj. Por ejemplo, si el oscilador de cristal actualmente utilizado es de 8 MHz y el valor de PLL se establece en 9, entonces el STM32 funcionará a una velocidad de 72M.

(u8 representa un tipo de datos de 8 bits y un byte tiene 8 bits, por lo que u8 es un byte).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                

Supongo que te gusta

Origin blog.csdn.net/qq_61448516/article/details/125817106
Recomendado
Clasificación