Yahoo refuse tous les emails du site. Si vous avez une adresse chez un autre prestataire, c'est le moment de l'utiliser ;)

En cas de soucis, n'hésitez pas à aller faire un tour sur la page de contact en bas de page.

Topic "Les STM32 en vidéos"

Flux RSS des posts récents dans ce topic ( Flux Atom)


Pas de photo de profil

weetoz

Membre

#696 | Signaler ce message



Vidéo sur les STM32

C'est quoi, pour qui?
C'est quoi?

Une suite de vidéos "souples", qui devrait permettre aux francophones qui ont du mal avec l'anglais à s'initier plus facilement
aux microcontrôleurs STM32 ainsi qu'aux cartes de développements qui les accompagnent. Malgré tout, l'anglais deviendra incontournable afin de devenir indépendant dans vos propres projets. Afin que le plus grand nombre puisse utiliser ces vidéos, la librairie STMCubeHAL sera très largement mise à contribution. Cela permettra une "portabilité" du code peu importe le modèle du MCU ( ce ne sera malheureusement pas toujours vrai car certaines familles sont bien moins riches en périphériques embarqués comme les F0, L0, L1…). (Je recommande des architectures Cortex-M3, M4, M7 pour découvrir ce joli p'tit monde).

Il y aura différents formats de vidéos selon les besoins. Par exemple, le chapitre 1 commence avec une vidéo sur l'installation des outils de développement nécessaires, elle dure 20 minutes et 41 secondes. C'est la première partie. La seconde présente les logiciels avec une première application basée sur les GPIOs qui sert de fil conducteur. Cette vidéos dure 55 minutes et 27 secondes. Ce qui est assez long et chiant à suivre car je dois présenter pas mal de choses pour les plus débutants. De la troisième à la cinquième, ce sont des formats courts pour l'utilisation de certains périphériques afin de découvrir la librairie STM32CubeHAL (UART, PWM, TIM_Encoder,), ceci afin de donner un aperçu des intérêts des MCU ARM Cortex-M X ou Y… Ces vidéos durent entre 10 et 15 minutes. Ce premier chapitre se terminera avec une application qui, à nouveau sera le fil conducteur qui permettra une découverte un peu plus approfondie des outils de développement. Le programme qui en découlera sera réutilisé pour d'autres exemples dans le chapitre 2. Le chapitre 2 commencera avec une présentation de la documentation relative au STM32. Le but étant qu'arrivé un moment chacun puisse évoluer selon ses intérêts. Selon les situations, un approfondissement de la lecture de certaines "Docs" sera de rigueur.

Pour qui?

Ces vidéos s'adressent à tous ceux qui ont déjà pratiqué la programmation Arduino avec une connaissance affirmée du langage C. Pour les plus débutants, les formats longs seront recommandés. Pour les bricoleurs qui sont déjà à l'aise avec la programmation Arduino et les "vraies" IDEs pourront piocher dans les formats courts les éléments qu'ils souhaitent.

Et toi, "T ki"?

Je suis un pur amateur en développement embarqué, un piètre joueur du développement informatique, ça vous fait peur? Moi aussi! XD Plus sérieusement, j'ai déjà quelques montages aboutis à mon actif avec les Arduinos. J'ai une petite base en langage C, et une bien meilleure en automatisme et informatique industrielle. (Pour ceux qui ne connaissent pas: Langage littérale structuré, Grafcet, Modbus TCP IP, automates programmables, électrotechnique…). Cependant, côté électronique, je suis un peu à la ramasse et par conséquent j’appelle à l’indulgence. Bien sûre, les corrections seront les bienvenues ainsi que les critiques constructives. Ce serait dommage que les plus débutants tiennent pour acquis les conneries que je peux raconter! ;)

Bon visionnage et n'hésitez pas à me faire part de vos remarques.

Chapitre 1
partie 1: installation de SW4STM32, STMCubeMX ST-Link-Utility
partie 2: Première utilisation de STMCubeMX et de SW4STM32
partie 3: UART moniteur série
partie 4: Sorties PWM
partie 5: Tim_Encoder
partie 6: Sorties PWM partie 2

Cette vidéo a pour objectif de mieux comprendre le cadencement d'un timer par rapport à l'arbre des horloges, du bus APB dont le timer dépend, et l'impact du bit TIMPRE

partie 7: Créer des fichiers header et scr

Dans la programmation, si il y a bien une chose qui est pratique, c'est de pouvoir réutiliser des portions de code que l'on a déjà écrit. Voici comment faire:

Le p'tit bonus en exclu sur CDM, c'est la routine qui convertit de l'Hexa vers du décimal. Le prototype:

1
uint32_t Hex_to_Dec(uint32_t);

La fonction:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
uint32_t Hex_to_Dec(uint32_t num){
    uint32_t decNum=0;
    int power=0;
    char hexadecimal[7];
    char hexaDigit[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    sprintf(hexadecimal,"%ld",num);
    /**/
    for(int i=strlen(hexadecimal)-1; i>=0; i--){
        /**/
        for (int j = 0; j < 16; ++j) {
            if(hexadecimal[i] == hexaDigit[j] ){
                decNum += j*pow(16,power);
            }
        }
        power++;
    }
    return decNum;
}
partie 8: Les interruptions externes

Dans cette partie, une petite introduction appliqué sur les interruptions externes (GPIO). Très sommaire, mais faut bien commencer quelque part.

partie 9: Convertisseur analogique numérique
partie 10: Présentations des fonctions spécifiques STM32-ARM

Dans cette vidéo je vous parle des fonctions embarquées spécifiques ARM Cortex-Mx. C'est non exhaustif, c'est plus pour ce faire une idée des possibilités de ces engins.

partie 11: Recevoir des données depuis le PC par UART polling mode

Tout est dit dans le titre!

partie 12: Recevoir des données depuis le PC par UART interrupt mode

Les entêtes:

1
2
3
/* USER CODE BEGIN Includes */
#include <string.h>
/* USER CODE END Includes */

Les variables:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
/* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*/
#define BUFFERDATA 2
#define BUFFERRX 50

char salut[30]="\n Carte initialisée\n";
char rxOk[30]="\n Le message reçu est:\n";
char rxBuffer[BUFFERRX];

uint8_t newMsg=0, rxData[BUFFERDATA], rxIndex=0, enter=10;
/* USER CODE END PV */

Les initialisations (dans le int main() avant la "While(1)")

1
2
3
4
5
6
7
  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART3_UART_Init();
  /* USER CODE BEGIN 2 */
  HAL_UART_Transmit(&huart3, (uint8_t*)salut, strlen(salut),500);
  HAL_UART_Receive_IT(&huart3, rxData, 1);
  /* USER CODE END 2 */

Le HAL_UART_RxCpltCallback()

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){
    if(huart->Instance==USART3){    // Si d'autres périph USART sont configuré en interrupt mode
        if(rxData[0]!= enter){  // Tant que la touche entrée n'est pas reçu
            rxBuffer[rxIndex]=rxData[0]; // On copie les caractères un à un dans rxBuffer
            rxIndex++;
        }
        else
        {
            newMsg=1;    // Pour utiliser d'autres instructions liés à l'interruption ailleurs
            rxIndex=0;   // On remet à zéro pour le prochain message
        }
        HAL_UART_Receive_IT(&huart3, rxData, 1);  // Placé ici, celà créé une boucle qui permet d'avoir le comportement d'une boucle for
    }

}
/* USER CODE END 4 */

Et on retourne dans la "While(1)"…

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
/* USER CODE BEGIN 3 */
      if(newMsg){
          HAL_UART_Transmit(&huart3, (uint8_t*)rxOk, strlen(rxOk),500);        // Le message reçu est:
          HAL_UART_Transmit(&huart3, (uint8_t*)rxBuffer, strlen(rxBuffer),500); // Ce qui vient du PC

          for(int i=0; i<BUFFERRX;i++){rxBuffer[i]=0;}   // On vide le tableau
          newMsg=0;                                      // On remet "newMsg à zéro pour le prochain message
      }
  }

  /* USER CODE END 3 */

La fonction qui doit être écrite en cas de bug: HAL_UART_ErrorCallback ()

1
2
3
4
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart){
    if(huart->ErrorCode == HAL_UART_ERROR_ORE)
    {  HAL_UART_Receive_IT(&huart3,rxData,1);}
}

La liste de code erreurs (provenant de UM1725 Description of STM32F4xx HAL drivers)

1
2
3
4
5
6
7
UART Error Code
HAL_UART_ERROR_NONE No error
HAL_UART_ERROR_PE Parity error
HAL_UART_ERROR_NE Noise error
HAL_UART_ERROR_FE Frame error
HAL_UART_ERROR_ORE Overrun error
HAL_UART_ERROR_DMA DMA transfer error

"That's all folk" @Plus

Derniére modification le par weetoz


Pas de photo de profil

BugsByte

Membre

#699 | Signaler ce message


Sur la dernière vidéo, je n'ai plus de son après 1 min ou 2.

Sinon, c'est du beau boulot. Tu t'embrouilles parfois et des fois tu n'es pas très clair ou n'utilises pas les bon termes mais ça reste compréhensible et on arrive à bien appréhender la chose.

Fais nous signe lorsque la suite sortira.

Derniére modification le par BugsByte


Pas de photo de profil

weetoz

Membre

#700 | Signaler ce message


Salut BugsByte, merci pour le retour, effectivement la vidéo "TIM_Encoder" a mal été exporté… Je corrige ça au plus vite…

Sinon, c'est du beau boulot.

par BugsByte

Merci beaucoup, ça motive ;)

Tu t'embrouilles parfois et des fois tu n'es pas très clair ou n'utilises pas les bon termes

par BugsByte

Tout à fait d'accord, et encore je n'ai même pas osé poster les premières :D , mais ça devrait progresser avec le temps. IL y a fallu que je m'y remette, ça faisait plus d'un an que je n'avais pas programmé de µC…

Fais nous signe lorsque la suite sortira.

par BugsByte

Faut rester en ligne sur "CDM"! ;)

C'est pour bientôt, je pense qu'elle sera en ligne début de semaine prochaine.

@bientôt sur "CDM".


Pas de photo de profil

weetoz

Membre

#701 | Signaler ce message


Vidéo TIM_Encoder réuploadé!


Photo de profil de miky-mike

miky-mike

Membre

#759 | Signaler ce message


Voila enfin le temps pour moi de voir tes videos, je trouve cela vraiment top de ce que j'ai vu.
On peux te suivre autre part que sur youtube et ici ?


Pas de photo de profil

weetoz

Membre

#760 | Signaler ce message


Bonsoir miky-mike,

Voila enfin le temps pour moi de voir tes vidéos, je trouve cela vraiment top de ce que j'ai vu.

par miky-mike

Merci beaucoup, et n'hésite pas à me faire des critiques. C'est importants afin de pouvoir améliorer la qualité de mes vidéos, que ce soit sur la durée, l'organisation et même ma façon de m'exprimer.

On peux te suivre autre part que sur youtube et ici ?

par miky-mike

C'est à dire? Réseaux sociaux genre Facebook, Twitter etc? Pour être honnête je ne suis pas branché sur ce genre de chose que pour suivre des activités liées au BMX flat ou à la musique. Comme tout le monde sait, le temps est un luxe.

La préparation de vidéo est encore assez laborieuse ainsi que le montage. Rajoute à ça les longues apnées dans le manuel de référence du F469, F746… Les notes d'applications… Mon nouveau boulot à une heure de chez moi…

De plus j'aime bien ce site ;) et y rajouter du contenu est ma façon de remercier Skywodd pour son travail généreusement partagé pour notre plus grand bonheur.

Après, si c'est pour être informé de la sortie d'une vidéo que j'ai réalisé, il y a deux solutions:

-Soit en répondant à ce post en cochant "Me notifier en cas de réponse"

-Ou si tu as un compte Youtube, tu peux t'abonner et activer les notifications (il y a une icône en forme de cloche…).

@plus.


Photo de profil de miky-mike

miky-mike

Membre

#782 | Signaler ce message


Je n'ai pas encore eu beaucoup de temps mais j'ai tout de même quelques remarques (amicale bien sur)

Je pense que tu parts trop vite sur certain sujet, et qu'il faut vraiment expliquer moins rapidement les détails suivants:
A) Pourquoi choisir les STM32 plutôt que les AVR, PIC et autres:
- Avantages( plus de prérif, performance, dma, ….)
- inconvénients, A part GCC presque tout est payant, doc/bible plutôt très longue

B) Choix d'un EDI pourquoi celui la et pas les autres, payant? C'est quoi les autres, avantages ? inconvénients ?

C) même chose pour les compilateurs.

Voila les premières remarques, mais le boulot est déjà très bien.

Bonne journée et continue avec ce bon travail


Pas de photo de profil

weetoz

Membre

#783 | Signaler ce message


Bonjour miky-mike,

A) Pourquoi choisir les STM32 plutôt que les AVR, PIC et autres:

par miky-mike

J'avais fais une vidéo sur le sujet au mois d'août sur le sujet, que j'ai rapidement retiré car beaucoup trop d’inexactitude et d'erreurs de compréhension de ma part. Je pense aussi que cette question (pour me l'être posée comme bien d'autres) est inapproprié. Faut comparer ce qui est comparable. Un AVR 8bits face à un Cortex M…

Voici comment je présenterai la question d'utilisé une architecture moderne (toujours à l'heure actuelle):

  • -Vous avez un projet complexe nécessitant beaucoup de calculs et où le temps du cycle est crucial? ->Cortex.

  • -Vous besoin de réguler ce p*t**n de radiateur dans vote salle de bain? ->AVR

  • -Vous avez plusieurs périphériques de communication (SPI, I²C, Ethernet…) avec des niveaux de priorités différents -> Cortex M

Et ainsi de suite. Bon du coup ça fait plusieurs questions. ;)

De manière général, un Arduino suffit largement à la plus grande majorité des utilisateurs "amateurs". Et finalement, j'ai remplacé la question de pourquoi STM32 plutôt qu' AVR, PIC… par: -Pourquoi STM32 plutôt qu'NXP, Texas instrument, Nordic… (Toutes basées sur des cœurs ARM).

Donc pour l'instant, je ne traite pas ce sujet que je trouve délicat car n'ayant que des carte ST, je n'ai pas de point de comparaison. Je suppose aussi que ceux qui choisissent ces cartes le font par soit:

  • -Curiosité. (ceux qui est mon cas)

  • -Parce que l'Arduino à montré ses limites par rapport à certains projets.

  • -Soit par anticipation de la disparition des µC 8bits qui arrivera un jour ou l'autre…

De plus, j'ai le sentiment que le publique de mes vidéos s'y connait plus que moi en la matière. XD

- Avantages( plus de périf, performance, dma, ….)

par miky-mike

C'est prévu pour la partie 10 du chapitre 1 ;) Ainsi que les inconvénients:

  • La complexité des architectures

  • Le manque de librairies(LCD HD44780, DHTxx…) en dehors de "mbed"

  • La documentation interminable, mais indispensable

  • Les tutos en français encore trop peut nombreux…

B) Choix d'un EDI pourquoi celui la et pas les autres, payant? C'est quoi les autres, avantages ? inconvénients ?

par miky-mike

Je rajouterais ça dans la partie 10. ;)

C) même chose pour les compilateurs.

par miky-mike

Parce que je n'en sait rien…

Bonne journée et continue avec ce bon travail

par miky-mike

Merci beaucoup, et bonne journée également.

PS: qui à été voir le RM0433? 3179 pages! Et nouveauté: Les domaines