00. Tabla de contenidos
Directorio de artículos
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
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,
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.
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)
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.
2.7 Después de hacer clic en Cancelar, obtendrá la siguiente interfaz
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
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.
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.
2.13 Agregue los archivos anteriores a nuestro proyecto. Haga clic derecho en Target1 y seleccione Administrar elementos del proyecto.
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.
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.
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.
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.
¿Qué sucede después de agregar el directorio?
2.18 Agregar definición de macro
STM32F10X_HD, USE_STDPERIPH_DRIVER
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.
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