Le début le plus simple de la STM grâce à «un seul endroit»

Probablement, le temps des guerres religieuses d'AVR contre la STM est déjà passé, mais non, non, oui, il y a des éclats d'affrontements entre les deux camps. Presque toute publication sur l'artisanat AVR aura certainement un commentaire comme «Oui, combien vous pouvez baiser votre grand-mère, il est grand temps de passer à la STM», puis les variations sur le sujet du prix, du nombre de jambes et des minuteries. Si le STMshcher est plus avancé, il y aura certainement une indication qu'il n'y a pas de DMA dans l'AVR et ne le fera pas, donc l'AVR devrait mourir. Pourquoi un simple DMA blink-voltmètre-thermomètre, une montagne de minuteries 16 bits, 100 jambes et un ADC 12 bits, personne ne l'explique généralement. Pourquoi avons-nous besoin d'une telle moissonneuse dans un appareil que Tiny13 peut facilement retirer, qui en même temps n'est pas chargé, même sur un tiers de ses ressources, personne ne comprendra. Il vous suffit de passer à STM32, et c'est tout. Pour ici.

Et je dois dire que les gens ont soif de nouveauté. Mais vraiment, je peux essayer? Et si vous l'aimez? Voici juste le manuel de référence de la populaire STM32F103C8T6, sur laquelle est basée la tablette bleue la plus massive de 1126 pages. D'une certaine manière, elle n'a pas vraiment de «démarrage rapide». Même un utilitaire séparé, tellement détesté par les anciens «kalokub», et qui doit être étudié, quoi de neuf. Oui, et après avoir plongé dans Cube, il est peu probable que cela commence dans 5 minutes, la nappe générée par lui n'est pas la lecture la plus accessible pour la nuit, c'est juste pour entrer dans le front, dont tout le monde ne peut pas parler là-bas.

De nombreux articles, similaires à celui-ci, sur le démarrage rapide et facile dans la STM méritent une discussion séparée. Pour tous ces articles, au début, j'étais très confus par une circonstance. Nulle part il n'y a une explication détaillée de ce que nous écrivons ici. Un tas de captures d'écran sur la façon de créer un projet, puis immédiatement un mur de code, faites-le comme ça! Et qu'y a-t-il, pourquoi est-ce, pourquoi est-il ainsi, où trouver tous ces mots apparemment compréhensibles, personne n'y plonge, car les forces se sont épuisées lors de la rédaction d'un manuel sur l'installation de Cale et de Cuba, et sur le lancement du projet. Ce n'est qu'après un certain temps, individuel pour chacun, que la compréhension de ce qui se passe et pourquoi vient. À mon tour, je propose une façon de commencer non pas depuis le début, comme tout le monde, mais depuis la fin. Maintenant, nous allons faire le contraire, ne pas configurer le contrôleur, écrire du code et le débuter, mais procéder immédiatement au débogage,et enregistrer nos actions sous forme de code.

Nous installons donc Keil en tant qu'environnement gratuit (jusqu'à 32 Ko de code). Nous ne décrirons pas cette action, celle-ci est sur Internet, et l'installateur étape par étape doit être maîtrisé par la personne qui se rend à la STM. Nous commençons le projet: Project-New uVision Project, créons un dossier et un fichier de projet. La fenêtre de sélection du contrôleur s'ouvre, entrez 103C8 dans la recherche et acceptez le seul modèle sélectionné.

Ensuite, nous arrivons à la fenêtre de sélection de la bibliothèque:



Ici, nous mettons trois daws: CMSIS-CORE, Device-Startup et Device-GPIO. Cet ensemble est assez suffisant pour faire rebondir une jambe, allumant la LED. Ensuite, vous devez encore configurer, vous ne pouvez rien obtenir de cela. Alt + F7 lance la fenêtre de paramètres située Project-Options for Target, où dans l'onglet "Output" vous devez cocher la case "Create HEX-File" pour créer un fichier de firmware que nous téléchargerons sur le contrôleur. Ensuite, dans l'onglet «Débogage», nous sélectionnons ST-Link, qui, en fait, chargera le micrologiciel et débutera:



par le bouton «Réglage» à côté de la fenêtre de sélection du programmeur, nous arrivons à la fenêtre «Configuration du pilote cible Cortex-M», où dans le « Télécharger Flash "mettre un daw" Reset and Run ".

Dans l'arborescence du projet, faites un clic droit sur le dossier «Source Group 1», dans l'assistant qui s'ouvre, créez le fichier main.c, dans lequel nous allons bientôt écrire le code. Dans le main.c ouvert, cliquez avec le bouton droit sur la première et la plus importante inclusion:



Ajoutez le code composé de principal et sans fin tout en:

#include "stm32f10x.h"                  // Device header
int main(){
	while(1){
	}
}

Curieusement, c'est tout pour l'instant, c'est un programme prêt à l'emploi et compréhensible qui se compile et se charge correctement dans le contrôleur. Nous appuyons sur F7 et nous voyons que le firmware a été assemblé avec succès, il n'y a pas d'erreurs ou d'avertissements.



À partir de ce moment, le contrôleur nous est entièrement accessible, nous pouvons le saisir sous la ligne de débogage et le tordre dans toutes les directions, et il répondra.

Les touches Ctrl + F5 nous conduisent au débogage, et le bouton «System Viewer Windows» vous permet de lancer les fenêtres pour contrôler les registres de registres et contrôler les jambes du GPIO.



De plus, je vous suggère d'utiliser toujours le Manuel de référence, d'autant plus que vous n'avez même pas besoin de le télécharger, il est disponible en cliquant dans l'onglet «Livres» du menu «Affichage»:



Maintenant, je propose d'utiliser le raisonnement suivant. Du brochage sur la tablette bleue, on peut voir que la LED se bloque sur la jambe du port 13. De nombreuses ressources Internet et discussions mentionnent toujours qu'avant de faire quelque chose dans STM, vous devez activer quelque chose, sinon, régler l'horloge. Sans plus tarder, nous écrivons dans le champ de recherche du lecteur pdf ce dont nous avons besoin, à savoir, activer le port C: «PORT C CLOCK ENABLE». Nous



entrons dans l'image suivante: De cela, nous pouvons conclure que la synchronisation du port C est activée dans le registre IOPCEN. Avec ces connaissances, nous allons dans l'onglet RCC en mode débogage et saisissons ce nom dans la barre de recherche:



cochez la case requise avec une coche, et à partir de ce moment, nous considérons le port C activé.

Maintenant, en se souvenant de l'AVR qui souffre depuis longtemps, nous allons chercher le réglage de la broche réelle. Pour que cela fonctionne, il est nécessaire d'expliquer ce que nous attendons exactement d'elle. Et nous voulons sauter avec le pied numéro 13 du port C, pour cela, nous devons définir le mode de son fonctionnement. Dans la barre de recherche du manuel de référence, nous conduisons dans «Configuration de bit de port», qui exprime notre désir de lire où les paramètres de jambe sont cachés. La recherche nous amène à un tableau dont il résulte que pour attribuer une jambe comme sortie, il est nécessaire de configurer les registres MODE et CNF: A



partir du tableau n ° 20 il est clair que pour affecter une jambe comme sortie Push-Pull, il faut réinitialiser les registres CNF0 et CNF1, et l'état de la paire MODE0 et MODE1 sont décrits dans le tableau n ° 21, je choisirai l'option supérieure, jusqu'à 10MHz, MODE0 = 1, MODE1 = 0. C'est ce que je vais faire dans la fenêtre GPIOC pour les registres CNF13 et MODE13



Nous avons maintenant configuré l'horloge et le mode de fonctionnement du port. Il est temps de savoir exactement comment sauter une jambe. En anglais, définissez le bit de port est écrit comme "Port bit set", et nous chercherons cette phrase dans le manuel: La



recherche nous amène à une page avec un tableau, qui montre clairement que le registre BSRR, composé de paires BS et BR, est responsable de la définition de l'état de la jambe de port , Bit set et Bit reset, respectivement. Nous trouvons ces registres dans la fenêtre GPIOC en mode débogage et profitons du contrôle de la jambe numéro 13 directement en poussant des choucas avec la souris dans les cases à cocher correspondantes:



Une LED sur le panneau de pilules bleu se bloque entre la jambe et le VCC, le contrôlant ainsi de nouveau au nom du registre. Le Bit Set (registre BS13) l'éteint et le Bit Reset (registre BR13) l'allume. Ce sont des registres d'opérations atomiques, ils sont réinitialisés après avoir coché la case. Il est possible de contrôler le pied via le registre ODR (clause 9.2.4 Registre des données de sortie du port (GPIOx_ODR) dans le manuel de référence), il montre clairement à quoi mène l'installation et la réinitialisation du choucas.



Une LED verte et verte qui s'éteint indique que tout fonctionne correctement. Il ne reste plus qu'à écrire tout cela sous forme de code dans le main.c. C'est là qu'apparaissent les raisins mêmes qui distinguent cette méthode de compréhension du contrôleur STM par le débogage des autres, dont Internet tout entier est jonché. Je suggère simplement de réécrire ce que nous voyons dans la fenêtre de débogage en code. Exemple:



Définissez le mode de fonctionnement du port et activez la synchronisation;



Ils ont allumé le pied bâbord, ont attendu, l'ont éteint, etc.:

#include "stm32f10x.h"                  // Device header

int main(){
	RCC->APB2ENR=0x00000010;			//  
	GPIOC->CRH=0x44144444;			//   Push-Pull  10MHz
	int i;								//     / 
	while(1){
		GPIOC->ODR=0x00002000;		//  LED,      
		i=2000000;					//    
		while (i) i--;					// 
		GPIOC->ODR=0x00000000;		//  LED
		i=2000000;					//  
		while (i) i--;					
	}
}


Bien sûr, cette méthode est loin d'être la meilleure et n'est pas correcte, mais à mon avis la plus compréhensible et la plus simple. De plus, il s'initie au travail avec une fiche technique (manuel de référence) et ne lui fait pas peur, comme la lecture de mana et l'écriture de footcloths multi-pages de code pour Blink. Oui, il n'y a pas de couches d'abstractions, beaucoup a été manqué, mais je pense que vous pouvez pardonner cela pour le début élémentaire. Lire le mana et travailler correctement avec les registres est alors, maintenant la LED clignote et nous comprenons essentiellement comment et ce que nous avons fait, et surtout, d'où viennent toutes ces abréviations. Si on m'avait montré cette façon d'étudier la STM auparavant, je n'aurais peut-être pas collecté plus de 9000 programmeurs différents pour AVR dans lesquels il n'y avait pas de débogage, mais j'aurais tout de suite repris le Cortex. En effet, dans AVR il n'y a pas de débogage intelligible et accessible, mais de toute façon, il est trop tôt pour oublier Tiny13. Elle sort ses tâches.

All Articles