[STM32] Explicación detallada de la creación de plantillas de proyecto para STM32F103ZET6 (biblioteca de firmware)

00. Tabla de contenidos

01. Descripción general de la biblioteca de firmware

Para facilitar a los usuarios el desarrollo de programas, ST (STMicroelectronics) proporciona un amplio conjunto de bibliotecas de funciones periféricas estándar STM32, denominadas bibliotecas de firmware .

Versión de la biblioteca de firmware :

STM32F10x_StdPeriph_Lib_V3.5.0

02. Crear pasos del proyecto.

2.1 Antes de crear el proyecto, creamos una carpeta llamada 00_Template en un directorio determinado de la computadora.

El directorio del autor es E:\Program Data\Keil\00_Template

2.2 Cree cuatro directorios en el directorio 00_Template anterior

Insertar descripción de la imagen aquí

CORE se usa para almacenar archivos principales y archivos de inicio, OBJ se usa para almacenar archivos de proceso de compilación y archivos hexadecimales, y la carpeta STM32F10x_FWLib, como su nombre lo indica, se usa para almacenar archivos de código fuente de funciones de biblioteca proporcionados oficialmente por ST.

2.3 Haga clic en el menú de MDK: Proyecto -> Nuevo proyecto de Uvision,

Insertar descripción de la imagen aquí

2.4 Ubique el directorio en la carpeta 00_Template que acaba de crear y luego ubíquelo en el directorio USUARIO. Nuestros archivos de proyecto se guardarán en la carpeta USUARIO. Asigne un nombre al proyecto Plantilla y haga clic en Guardar.

Insertar descripción de la imagen aquí

2.5 Seleccionar la interfaz de la CPU significa seleccionar nuestro modelo de chip.

STMicroelectronics→STM32F1 Series→STM32F103→STM32F103ZET6 (si está utilizando otra serie de chips, simplemente seleccione el modelo correspondiente)

Insertar descripción de la imagen aquí

Consejos amables

¡Debes instalar el paquete de dispositivo correspondiente para mostrar estos contenidos!

2.6 MDK abrirá el cuadro de diálogo Administrar entorno de ejecución, haga clic en Cancelar.

Insertar descripción de la imagen aquí

2.7 Después de hacer clic en Cancelar, obtendrá la siguiente interfaz

Insertar descripción de la imagen aquí

2.8 Copie las carpetas src e inc en el directorio de la biblioteca de firmware a la carpeta STM32F10x_FWLib que acabamos de crear.

Directorio de la biblioteca de firmware: STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver

Directorio de destino: 00_Template\STM32F10x_FWLib

Insertar descripción de la imagen aquí

2.9 Copie los archivos de inicio relevantes en el paquete de la biblioteca de firmware al directorio de nuestro proyecto CORE.

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport A continuación, copie el archivo core_cm3.c y el archivo core_cm3.h al directorio CORE.

2.10 Copie el archivo startup_stm32f10x_hd.s dentro al CORE

Navegue hasta el directorio STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\a
rm y copie el archivo startup_stm32f10x_hd.s dentro de CORE.

Insertar descripción de la imagen aquí

2.11 Copie los tres archivos stm32f10x.h, system_stm32f10x.c, system_stm32f10x.h a nuestro directorio de USUARIO.

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x A continuación, copie los tres archivos stm32f10x.h, system_stm32f10x.c, system_stm32f10x.h a nuestro directorio de USUARIO.

2.12 Copie los cuatro archivos main.c, stm32f10x_conf.h, stm32f10x_it.c, stm32f10x_it.h al directorio USUARIO.

Luego copie los cuatro archivos main.c, stm32f10x_conf.h, stm32f10x_it.c, stm32f10x_it.h en STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template al directorio USUARIO.

Insertar descripción de la imagen aquí

2.13 Agregue los archivos anteriores a nuestro proyecto. Haga clic derecho en Target1 y seleccione Administrar elementos del proyecto.

Insertar descripción de la imagen aquí

2.14 En la columna Objetivos del proyecto, cambiamos el nombre del Objetivo a Plantilla, luego eliminamos un SourceGroup1 en la columna Grupos y creamos tres grupos: USUARIO, CORE y FWLIB. Luego haga clic en Aceptar.

Insertar descripción de la imagen aquí

2.15 Haga clic derecho en Tempate, seleccione Administrar elementos del proyecto, luego seleccione el grupo al que se deben agregar los archivos y agregue los archivos correspondientes.

Seleccionamos FWLIB, luego hacemos clic en Agregar archivos a la derecha, navegamos hasta el directorio que acabamos de crear, en STM32F10x_FWLib/src, seleccionamos todos los archivos que contiene (Ctrl+A), luego hacemos clic en Agregar y luego en Cerrar.

Los archivos que deben agregarse en CORE son core_cm3.c y startup_stm32f10x_hd.s (tenga en cuenta que el tipo de archivo es .c cuando se agrega de forma predeterminada, es decir, al agregar el archivo de inicio startup_stm32f10x_hd.s, debe seleccionar el tipo de archivo como Todos los archivos para ver este documento),

Los archivos que deben agregarse en el directorio USUARIO son main.c, stm32f10x_it.c, system_stm32f10x.c, de esta manera los archivos que necesitamos agregar se han agregado a nuestro proyecto y finalmente hacemos clic en Aceptar.
Insertar descripción de la imagen aquí

2.16 Seleccione el directorio donde se almacenarán los archivos intermedios después de la compilación

Antes de compilar, primero debemos seleccionar el directorio donde se almacenarán los archivos intermedios después de la compilación. El método consiste en hacer clic en la varita mágica, luego seleccionar "Seleccionar carpeta para objetos..." en la opción "Salida" y luego seleccionar el directorio como el directorio OBJ que creamos anteriormente. Tenga en cuenta aquí que si no configuramos la ruta de salida, el directorio de almacenamiento de archivos intermedio de compilación predeterminado es el directorio de Objetos y el directorio de Listados generados automáticamente por MDK.

Insertar descripción de la imagen aquí

2.17 Establecer directorio de archivos de encabezado

Para cualquier proyecto, debemos incluir las rutas de todos los archivos de encabezado a los que se hace referencia en el proyecto. Regrese al menú principal del proyecto, haga clic en la varita mágica, aparecerá un menú, luego haga clic en la opción c/c++ y luego haga clic en el botón a la derecha de Incluir rutas. Aparece un cuadro de diálogo para agregar ruta y luego agregamos los tres directorios anteriores. Recuerde, keil solo buscará en el directorio de primer nivel, por lo que si hay subdirectorios en su directorio, recuerde que la ruta debe estar ubicada en el último subdirectorio. Luego haga clic en Aceptar.

Insertar descripción de la imagen aquí

¿Qué sucede después de agregar el directorio?

Insertar descripción de la imagen aquí

2.18 Agregar definición de macro

STM32F10X_HD, USE_STDPERIPH_DRIVER

Insertar descripción de la imagen aquí

2.19 Copie main.c y cámbielo al siguiente código

#include "stm32f10x.h"

//初始化PB5和PE5为输出口.并使能这两个口的时钟		    
//LED IO初始化
void LED_Init(void)
{
    
    
	GPIO_InitTypeDef  GPIO_InitStructure;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);	 //使能PB,PE端口时钟
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;				 //LED0-->PB.5 端口配置
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
	GPIO_Init(GPIOB, &GPIO_InitStructure);					 //根据设定参数初始化GPIOB.5
	GPIO_SetBits(GPIOB,GPIO_Pin_5);						 //PB.5 输出高

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;	    		 //LED1-->PE.5 端口配置, 推挽输出
	GPIO_Init(GPIOE, &GPIO_InitStructure);	  				 //推挽输出 ,IO口速度为50MHz
	GPIO_SetBits(GPIOE,GPIO_Pin_5); 						 //PE.5 输出高 
}
 
 void delay_ms(u32 count)
 {
    
    
	u32 i=0;
	for(;i<count * 10000;i++);
 }

 
int main(void)
{
    
     
	LED_Init();		        //初始化LED端口
	while(1)
	{
    
    
		GPIO_ResetBits(GPIOB,GPIO_Pin_5);  //LED0对应引脚GPIOB.5拉低,亮  等同LED0=0;
		GPIO_SetBits(GPIOE,GPIO_Pin_5);   //LED1对应引脚GPIOE.5拉高,灭 等同LED1=1;
		delay_ms(300);  		   //延时300ms
		
		GPIO_SetBits(GPIOB,GPIO_Pin_5);	   //LED0对应引脚GPIOB.5拉高,灭  等同LED0=1;
		GPIO_ResetBits(GPIOE,GPIO_Pin_5); //LED1对应引脚GPIOE.5拉低,亮 等同LED1=0;
		delay_ms(300);                     //延时300ms
	}
} 

La configuración 2.20 permite generar el archivo hexadecimal después de la compilación.

También haga clic en la varita mágica para ingresar al menú de configuración y seleccione Salida. Luego marque las tres opciones arriba y abajo. Entre ellos, Crear archivo HEX se compila para generar un archivo hexadecimal y la Información del navegador le permite ver definiciones de variables y funciones.

Insertar descripción de la imagen aquí

2.21 Compile todo el proyecto.Si no se informan errores, se ha creado todo el proyecto.

03. Discusión

Referencia: [STM32] La declaración no ASM STM32F103C8T6 en función desnuda no es compatible

04. Apéndice

Supongo que te gusta

Origin blog.csdn.net/dengjin20104042056/article/details/133436710
Recomendado
Clasificación