Keil construit le projet STM32 et utilise Proteus pour simuler l'expérience d'éclairage LED

    Il y a une grande différence entre le MCU STM32 et le MCU 51. Non seulement il y a une grande différence dans la structure, mais le STM32 est plus compliqué. En termes de fonctionnement, le STM32 est également beaucoup plus compliqué. Le code manuscrit sur le MCU 51 peut actionner directement les broches, mais MCU STM32 Avant d'utiliser les broches, de nombreux travaux d'initialisation sont nécessaires, comme l'activation de l'horloge et l'initialisation des broches GPIO.

    Ce qui suit est une brève introduction au développement du micro-ordinateur monopuce STM32. Cet article est une simulation. Il n'a pas besoin d'un véritable micro-ordinateur monopuce STM32. Il suffit d'installer et de développer des logiciels associés sur l'ordinateur, principalement keil- mdk et protéus.

    Le keil installé ici est une version qui prend en charge les micro-ordinateurs monopuce STM32. Cela nécessite l'installation de la version de mdk. Voici un lien de téléchargement Keil qui prend en charge mdk , code d'extraction : 1234. Son installation et son cracking sont similaires à keil-51. Le cracking utilise également keygen.exe pour générer le code d'enregistrement. Après l'installation, vous devez également installer le package qui prend en charge les microcontrôleurs STM32 : Keil.STM32F1xx_DFP.1.0.5.pack, télécharger le package à partir du lien ci-dessus. Vous pouvez l'installer hors ligne, comme suit :

    Sélectionnez le bouton Pack Install dans la barre d'outils Keil, sélectionnez Fichier-> Importer dans la boîte de dialogue contextuelle et la boîte de dialogue de sélection de fichier apparaîtra, sélectionnez le package téléchargé et vous pourrez l'installer hors ligne.

    Nous avons besoin d'une bibliothèque standard pour construire le projet STM32. De même, le lien de téléchargement vient tout juste de venir avec : STM32F10x_StdPeriph_Lib_V3.5.0.rar. Après décompression, la structure est la suivante :

 

    Ici, nous utilisons la bibliothèque standard pour construire le projet STM32, qui contient les fichiers d'en-tête et les fichiers sources requis par notre projet, ainsi que le fichier de démarrage. Avant de créer un nouveau projet STM, préparez une structure de fichier de projet comme celle-ci :

    Core ici peut également être nommé CMSIS. Selon les habitudes personnelles, cela signifie littéralement le fichier core. Ici, nous devons copier les fichiers core_cm3.h et core_cm3.c dans la bibliothèque standard. Le chemin est STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport

   Fwlib est la signification de la bibliothèque de firmware. Ici, nous copions les dossiers inc et src de STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src dans la bibliothèque standard.

    Project est utilisé pour stocker les projets keil, puis créer de nouveaux projets dans keil, nous spécifions l'emplacement de sauvegarde ici.

    Utilisateur, voici le fichier utilisateur, copiez les fichiers stm32f10x.h, system_stm32f10x.c, system_stm32f10x.h et

stm32f10x_conf.h, stm32f10x_it.c, stm32f10x_it.h, system_stm32f10x.h sous STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template (répété).

 

    Le dossier où est stocké le fichier de démarrage du démarrage, ici nous copions tous les fichiers se terminant par s sous STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm (en fait, un seul est utilisé).

   De cette façon, nous avons des fichiers dans les quatre autres répertoires sauf qu'il n'y a aucun fichier dans le dossier Projet.

   Keil nouvelle construction

   Ouvrez keil-mdk, créez un nouveau projet et sélectionnez le dossier Projet que vous venez de préparer pour l'emplacement.

     

    Dans l'assistant suivant, sélectionnez l'appareil pour la cible de construction. Nous choisissons STM32F103C8, et d'autres sont également disponibles, en fonction des besoins de simulation.

 

Ce nouveau projet n'a pas de contenu, nous devons le réinitialiser. Cliquez sur le bouton « Gérer les éléments d'ingénierie » (trois blocs de couleur) dans la barre d'outils :

Les cibles du projet sont remplacées par le nom du projet,

Groupes Ajoutez ici quatre groupes, à savoir Core, Fwlib, Startup, User et les fichiers qu'ils contiennent. Nous sélectionnons les fichiers dans les dossiers Core, Fwlib, Startup et User avant, et la structure est la suivante :

Nous devons également ajouter manuellement le fichier main.c dans le répertoire utilisateur, puis cliquer avec le bouton droit sur le groupe d'utilisateurs pour sélectionner : Ajouter les fichiers existants au groupe.

La structure finale du fichier de projet :

    Nous pouvons ajouter du code à main.c afin qu'il puisse être compilé comme un projet vide.

#include "stm32f10x.h"

int main()
{

}

À ce stade, une erreur sera signalée lors de la compilation directe du projet. Nous devons effectuer des réglages pour définir la plage de recherche du fichier d'en-tête. L'opération spécifique consiste à cliquer sur la baguette magique (Options pour les cibles) dans la barre d'outils, sélectionnez c/c++ dans la boîte contextuelle, entrez USE_STDPERIPH_DRIVER dans Définir et incluez les chemins ci-dessous. Sélectionnez notre dossier Core, Fwlib/inc, User trois répertoires, sélectionnez manuellement :

    Finalement, il peut être compilé avec succès :

 

  Étant donné que la simulation a besoin d'un fichier hexadécimal à la fin, elle a également besoin d'un paramètre, cliquez sur Options pour les cibles, passez à la sortie, puis cochez Créer un fichier HEX :

    Le code pour l'éclairage du microcontrôleur STM32 est quelque peu compliqué, il faut principalement allumer l'horloge et régler le niveau des broches.

#include "stm32f10x.h"

void Delay()
{
	unsigned int i, j;
    for(i = 0; i < 2000; i++)
	  for(j = 0; j < 110; j++);
}

void LED_Config()
{
      GPIO_InitTypeDef GPIO_InitStructure;                  // GPIO初始化结构体
	
	  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //APB2时钟使能,这里单片机开启的是B口,所以对应RCC_APB2Periph_GPIOB,如果开启A口,这里对应RCC_APB2Periph_GPIOA
	  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      // 推挽模式
	  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;             // 管脚B5作为输出
	  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     //时钟频率
      GPIO_Init(GPIOB, &GPIO_InitStructure);                // GPIO初始化,开启GPIOB,如果要开启A或者C,改变这里的GPIOA或者GPIOC
}

int main()
{
    LED_Config();
	  while(1)
	  {
			GPIO_SetBits(GPIOB, GPIO_Pin_5);
			Delay();
			GPIO_ResetBits(GPIOB, GPIO_Pin_5);
			Delay();
	 }
}

    Si la compilation ne signale pas d'erreur, vous pouvez démarrer la simulation. Dans Proteus, nous construisons le schéma de conception des LED comme indiqué ci-dessous :

 

   Sélectionnez la puce STM32F103C8, puis recherchez la diode électroluminescente LED-VERTE, ajoutez une résistance et mettez à la terre. Connexion simple, le MCU STM32 semble être un peu différent du 51 MCU, ici vous devez vous occuper de la connexion, sélectionner Power Rail Configuration dans la barre de menu Design, et passer les pièces listées à gauche de GND et VCC/VDD via l'Ajouter au milieu La flèche (déplacer vers la droite) est ajoutée à droite :

    Il y a un autre endroit important qui doit être réglé, qui est la fréquence de l'oscillateur à cristal du microcontrôleur. Si elle n'est pas réglée, une erreur sera signalée :

Accès au registre du périphérique non cadencé à 0x40010C00 cause BUS_FAULT [U1_CM3CORE]
 

    Ce problème ne peut être signalé que pendant la simulation. Certains endroits disent que l'activation de l'horloge doit être définie dans le code, mais notre code est évidemment défini, qui est  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);    ce code. Ce problème est très gênant. Au début, je pensais que le code n'exécutait pas le contenu du fichier main.c. En fait, ce n'est pas le cas, mais la fréquence de l'oscillateur à cristal, mais la fréquence n'est pas non plus définie. J'utilise le code généré par STM32CubeMX pour s'exécuter sans problème. Aussi très étrange.

    

    Le 50 MHz ici est la fréquence d'horloge GPIO_Speed_50MHz définie dans le code. 

    Finalement, la simulation ne rapporte pas d'erreur : 

     Voici pour utiliser la bibliothèque standard pour construire le projet STM32, donc certains fichiers d'en-tête et fichiers sources de la bibliothèque standard sont ajoutés. Ici, selon les caractéristiques du projet, les dossiers Core, Fwlib, Project, Startup, User sont nouvellement créés, et les fichiers associés sont ajoutés, et enfin dans le projet keil Les groupes Core, Fwlib, Startup et User établis dans la cible n'ont pas la même signification, mais les noms sont les mêmes. Enfin, vous devez ajouter manuellement les fichiers à ces groupes.

    

Je suppose que tu aimes

Origine blog.csdn.net/feinifi/article/details/132261309
conseillé
Classement