Notas de estudio STM32F103ZET6: experimento de marquesina (función de biblioteca)

1. Primero, necesitamos agregar una carpeta PROGREAM (nombrada según nuestra preferencia) en el directorio del proyecto, y crear una subcarpeta 1_LED debajo de esta carpeta, y luego crear archivos led.c y led.h debajo de 1_LED, y convertir led. c y led.h se añaden al proyecto. Recuerda añadir 1_LED a la ruta del archivo de cabecera. Está descrito en detalle en la nota anterior. Si lo olvidas, puedes volver atrás y mirarlo.

 

 

 Dos, escribir archivos led.c y led.h

1, led.h:

#ifndef __LED_H
#define __LED_H

void LED_Init(void);//函数声明


#endif

2, led.c:

Los pasos para operar cualquier puerto IO son:

(1) Habilite el reloj del puerto IO y llame a la función RCC_APB2PeriphColckCmd();

(2) Inicialice el modo de puerto IO y llame a la función GPIO_Iint();

(3) Opere el puerto IO para generar niveles altos y bajos.

Operación específica:

        1) De acuerdo con el diagrama esquemático de la placa de desarrollo, LED0 y LED1 están conectados respectivamente a PB5 y PE5 de la placa de desarrollo, por lo que primero debemos habilitar los relojes de PB5 y PE5:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//GPIOB
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//GPIOE

        2) Después de habilitar el grupo IO, primero debe definir la estructura correspondiente, luego establecer el número de pin, el modo y la velocidad correspondientes, y finalmente establecer el nivel de salida del puerto IO:

    GPIO_InitTypeDef GPIO_InitStr;//定义GPIO_Init结构体    

    GPIO_InitStr.GPIO_Mode=GPIO_Mode_Out_PP;//设置为推挽输出
	GPIO_InitStr.GPIO_Pin=GPIO_Pin_5;//设置PB5
	GPIO_InitStr.GPIO_Speed=GPIO_Speed_50MHz;//设置速度为50Mhz
	GPIO_Init(GPIOB,&GPIO_InitStr);//初始化PB
	GPIO_SetBits(GPIOB,GPIO_Pin_5);//PB5输出高电平
	
	//同PB5
	GPIO_InitStr.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStr.GPIO_Pin=GPIO_Pin_5;
	GPIO_InitStr.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOE,&GPIO_InitStr);
	GPIO_SetBits(GPIOE,GPIO_Pin_5);

        3) Todo el código de led.c:

#include"led.h"
#include"stm32f10x.h"

void LED_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStr;//定义GPIO_Init结构体
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//GPIOB
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//GPIOE
	
	GPIO_InitStr.GPIO_Mode=GPIO_Mode_Out_PP;//设置为推挽输出
	GPIO_InitStr.GPIO_Pin=GPIO_Pin_5;//设置PB5
	GPIO_InitStr.GPIO_Speed=GPIO_Speed_50MHz;//设置速度为50Mhz
	GPIO_Init(GPIOB,&GPIO_InitStr);//初始化PB
	GPIO_SetBits(GPIOB,GPIO_Pin_5);//PB5输出高电平
	
	//同PB5
	GPIO_InitStr.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStr.GPIO_Pin=GPIO_Pin_5;
	GPIO_InitStr.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOE,&GPIO_InitStr);
	GPIO_SetBits(GPIOE,GPIO_Pin_5);
}

Tres, la función principal:

#include"stm32f10x.h"
#include"led.h"
#include"delay.h"

int main(void)
{
	delay_init();
	LED_Init();
	
	while(1)
	{
		GPIO_SetBits(GPIOB,GPIO_Pin_5);
		GPIO_SetBits(GPIOE,GPIO_Pin_5);
		delay_ms(500);
		
		GPIO_ResetBits(GPIOB,GPIO_Pin_5);
		delay_ms(500);
		GPIO_ResetBits(GPIOE,GPIO_Pin_5);
		delay_ms(500);
	}
	
}

Supongo que te gusta

Origin blog.csdn.net/qq_63306482/article/details/126223428
Recomendado
Clasificación