 Bonjour, je m'appelle Nicolas. Je suis un membre de la team de support technique sur S1032 MCUs. Et dans cette vidéo sur Qubemix, nous nous concentrons sur le tablette de manager du projet de Qubemix et plus spécifiquement sur le tablette de générateur de code. Nous avons des conseils sur la feature de la setting de template par faisant un lab. Et dans ce lab, nous rédirectons le code printf pour un comport virtuel sur la PC et nous dévissez des configurations de configuration de Qubemix en utilisant cette templatee de langage de free-marker. Je vais utiliser la version Qubemix 6.3, la version Qubed ID 1.8 et le firmware F4, donc la boîte sera la nucleo F410RB. Donc, nous commençons directement sur le lab. Lorsque Qubemix est ouvert, nous allons au sélecteur de la boîte et nous allons sélectionner la boîte de nucleo F410RB. Donc, je vais juste presser la boîte de F410, ici, il n'y a que l'une. Et je commence le projet. Je ne vais pas utiliser l'initialisation de l'initialisation des ferrules. Donc, ici, j'ouvre un file explorer sur la folder MOOC, c'est là où je vais installer le projet. Je voulais juste en parallèle pour vous montrer le step de co-génération. Donc, ici, le pinout n'est pas clair, donc je vais utiliser la fonction spécifique. Donc, dans ce lab, nous allons redirecter la fonction printf à l'usage. Donc, tout ce qu'on a besoin dans ce projet est d'enlever l'usage. Sur cette boîte et sur plusieurs bords de nucleo F410RB, l'usage est directement connecté à l'Estelink. Sur l'usage 2. L'usage 2 est connecté. Donc, nous allons utiliser l'usage 2. Cela nous permet d'utiliser seulement un câble plug sur la boîte, celui qui est utilisé pour l'Estelink. Donc, nous allons juste le installer à l'insynchronisation et nous allons maintenir les défauts. Nous ne allons pas modifier la configuration de l'usage. Ce n'est pas maximum de vitesse, mais nous ne sommes pas très carets pour cet exemple. Et nous allons juste installer l'information du projet de manager. Donc, le nom de projet et dans le folder de MOOC. Ce type de projet est enregistré dans un autre vidéo spécifique, le délicat. Nous ne serons pas plus profondes dans celui-ci, mais ici nous allons sélectionner le projet QBiD et maintenir la génération sur la route. Cela permettra d'ajouter automatiquement au projet le file qui sera généré dans les settings de template. Si vous n'avez pas checké ça, vous devez ajouter les files qui sont générés par ces options. Nous allons continuer à générer sur la route. Cela signifie que il ne sera pas créé une spécifique STN32 QBiD dans le projet QBiD. Il sera créé le projet QBiD sur la route. Et nous allons déjà générer le code. Dans le meantime, vous pouvez voir dans le manuel de l'usage, en 17-24, pour le cloud, la communication de l'usage, l'usage 2 est par défaut connecté à la STN32. C'est pourquoi nous avons utilisé ce code de l'usage 2. Nous ne serons pas créés par le projet QBiD mais vous pouvez voir que mon projet a été généré avec l'initialisation de l'application sur l'usage et sur le système. Alors, nous allons vérifier les options de code de l'usage 2. Les premières options sont sur le package de l'usage de l'usage 2. Donc, nous allons définir combien de files vous copiez du folder QBiD à votre projet délicat. Donc, généralement, vous copiez seulement les files nécessaires de l'usage 2. Cela signifie que votre projet sera un standalone. Vous pouvez le séparer et le envoyer à un collègue. Il n'y aura pas de dépendances sur le projet QBiD qui est un folder séparé sur votre PC. Vous pouvez également choisir de faire des liens sur ces files sur le firmware QBiD. Cela peut avoir un intérêt si peut-être vous faites des modifications sur l'HEL par exemple et vous avez plusieurs projets travaillés sur le same firmware QBiD. En ce cas, vous modifiez le code source sur l'HEL qui vous êtes totalement prêts pour le faire. Et il n'y a que des liens sur le firmware QBiD. En ce cas, nous allons copier les files nécessaires pour le projet. Ce sont les options sur les files générées. Le premier est de séparer les configurations de chaque IP dans les files séparés sur les files HEL. Nous allons le faire. Cela va créer un point de vue. Vous pouvez le voir. Vous le verrez ici. Pour le moment, la configuration est faite dans la main.c et sur l'HEL msp.c. En utilisant cette option, cela se separera. Nous allons avoir usart.c et usart.h etc. pour d'autres peripherals. Nous pouvons installer une option pour replacer les files générées précédemment quand elles sont régenerées. En fait, ces options sont assez self-explanées quand elles sont régenerées. Pour cela, je vais ouvrir le projet QBID dans un second pour montrer ce qu'est le code d'usage. Et délire les files générées précédemment quand elles ne sont pas régenerées. Cela signifie que vous ne pourrez pas garder toutes les files si elles ne sont pas rélevées. Ces settings HEL sont aussi assez self-explanées. Vous pouvez installer toutes les preuves analogues pour optimiser la consomption. Et pour l'assert, ces options n'ont pas d'assert. En fait, les asserts sont répliqués par rien. Et si vous le vérifiez, vous aurez des macros spécifiques sur le file de melons.score. Et vous devez garder en compte que ces macros vont changer votre file binary. C'est seulement si vous modifiez le pass de votre projet. Parce que ces macros sont utilisés pour printer le file où l'assert s'occupera. Et le file est un pass absolu. Donc, quand vous vérifiez cette box, vous aurez de vrais asserts et en ce cas, vous modifiez votre binary même si vous ne modifiez rien dans votre projet. Donc, par défaut, ils n'ont pas d'absence. Et c'est utilisé seulement pour des propositions de production. Vous ne devriez pas utiliser un assert s'occuper. Donc, on va ouvrir le project QMX. Le project QID. Et on va voir ce qu'est la section d'asserts. Donc, j'ai juste double-clique sur le file. Et ici, c'est demandé pour le workspace. Donc, on va aller au main.c file. C'est là où vous avez la plupart des sections d'asserts. Mais vous avez plusieurs sur beaucoup de files. Et c'est ce qu'on appelle la section d'asserts. Donc, quoi que vous mettez entre ce début et la fin de cette commande, ne sera pas remplacée quand vous régénérez l'assert. Sauf si cette option est vérifiée. Maintenant, les settings de template. Donc, on va retourner au site. Les settings de template permettent de procéder des files FTL. Avec ces files FTL, le STM QMX peut générer un code custom basé sur la file template de FreeMarker. Donc, c'est une extension FTL. Pour toutes les configurations suivantes, vous pouvez voir les peripheraux de MCU que j'utilise dans la configuration de QMX. Vous pouvez lister les paramètres de ces peripheraux et vous pouvez aussi lister les ressources utilisées par ces peripheraux en termes de GPIO ou de DMR request et interrupter. Le FreeMarker de l'app. est un engin de template. Donc, généralement, c'est utilisé pour générer un output texte. Donc, HTML, web pages, e-mail, configuration files mais aussi source code. Et c'est basé sur le template et changeant le data de les valeurs internes de STM32 QMX. Donc, avec ce langage, vous pouvez accesser la configuration de QMX et mettre la source code dans un source code. Donc, il y a un syntaxe spécifique pour être utilisé. Donc, en début, vous devez mettre le code et ici, vous devez retirer la configuration de QMX. Donc, c'est ce qu'on appelle DT. Donc, c'est de la word Java. Et, dans ce DT, c'est comme une description. Et dans ce DT object, vous devez avoir les paramètres de peripheral, les paramètres de GPIO. Et aussi, l'app. Donc, de cette DT entry point, la liste de toutes les utilisées d'IP et leur spécifique configuration. Mon objectif ici est de créer deux files, une C file et une H file. Le C file contiendra la définition d'un code print pour rédirecter l'art. Et aussi, une function print, une information display, une information board et une function display de printf. Et la file H contiendra la définition de cette fonction d'utiliser l'extrême. Donc, ce que je veux n'est pas de créer ces deux files à la route de mon projet, mais dans le code INC pour le code INC et le code SRC pour le file source. Donc, pour ça, je vais juste créer une file template qui que je veux procéder à la génération. Et dans ce template, je vais créer la file hierarchy que je veux où je veux mettre mes files. Donc, je veux qu'elles soient créées dans le folder core. Et dans ce folder core, je vais avoir le folder et le folder source. Et finalement, je vais créer les files FTL. Donc, je vais créer juste les files textuelles et les renoncer. Donc, dans mon cas, ce sera le free marker. Ce qui est important est ce syntaxe. Donc, quand je mets underscore H, je veux que le file output soit appelé free marker, exemple, dot H. Donc, c'est le syntaxe du template free marker. Et c'est FTL. Donc, je vais changer l'extension. Donc, à la fin, le processage de ce template FTL va créer un exemple free marker dot H dans le folder core de mon projet. Donc, le même pour le SRC. Donc, le même exemple free marker cette fois, c'est underscore C parce que je veux un file dot C pour être créé. Et FTL, pour dire que c'est un template free marker un template language. Et maintenant, mettre un contenu à l'intérieur. Donc, pour l'inclut file, je peux ouvrir avec Notepad. Dans le set slide, ce qui va être préparé dans la vidéo, vous avez le contenu. Donc, il y a deux versions de ce, je vais mettre une autre version pour montrer des manipulations de function dans le language free marker. Mais nous allons mettre juste la version basique. Mais c'est un moyen aussi de voir comment manipuler le string. C'est assez facile. Il y a un manuel d'utilisation ici dans le manuel free marker. Vous pouvez voir toutes les listes de la fonction que vous pouvez utiliser. Donc, dans notre cas, nous allons utiliser la fonction basique pour le free marker.h. Il consiste seulement pas d'un code de function free marker. Juste compter ce code. Donc, vous pouvez voir qu'il n'y a pas de code de function free marker. Juste nous allons procéder ce code et le mettre dans le exemple free marker.h. Dans le code free marker.c le code est un peu plus complexe. Donc, nous avons le genre de éteur que j'ai mentionné avant. Donc, on retire la courante définition de la configuration. Donc, la définition. Et pour... nous allons brouiller cette configuration. Il n'y a que un élément pour la configuration. Et dans cette configuration, nous allons brouiller les paramétres perifères, les paramétres GPIO et surtout les IPs utilisés. Donc, nous allons ajouter cette pure code, pure C code pour inclure le main.h, le I.O. qui est nécessaire pour défendre la function utilisée par le printf. Et le exemple free marker.h pour retirer la définition de la définition de la function utilisée par le printf. Et pour rédirecter chaque caractère à l'art. Et finalement, c'est la function d'infos que je vais ajouter, qui sera sur l'art. Certaines informations. Donc, le nom de le projet, le nom de la famille, et aussi l'IP. Donc, je vais mettre le nom de la famille, et J'ai créé des deux fdl5. Je dois les voir dans la function. Je ne vais pas utiliser le location des défauts. Je vais mettre le folder qui est créé. Je vais project folder et ici templates. Donc, un set, le tool brose pour tous les fdl qui sont disponibles et il peut trouver deux, le premier inclus et le premier src. Donc, vous pouvez voir qu'il détecte le folder hierarchy. Donc, je vais ajouter tous les folder. Et poursuivre le default, le folder de détention, parce que c'est le base folder et j'ai envie de mettre ces deux files qui sont générées dans le code folder mais ensuite dans le code INC et le code ASSARC. Maintenant, on va voir en meantime ce qu'il a fait sur le code de génération. Vous pouvez voir ici que je n'ai pas le file de FreeMarker, pour le moment, si j'ai pressé le code de génération. Donc, tout d'abord, vous pouvez voir que un user.c a été créé parce qu'on a checké cette option. Donc, on a extracté l'usage de configuration de l'MSP file pour le mettre dans un folder séparé. Et l'exemple de FreeMarker.c a été créé aussi. Et si nous allons au file inclus, nous pouvons voir que l'exemple de FreeMarker.h a aussi été créé. Donc, si nous retournons au projet IDE, nous pouvons voir que si nous refreshons le projet, le FreeMarker.c est présent et le FreeMarker.h. Donc, maintenant, nous allons voir ce qu'a été fait dans ce file. Réfléchissez-vous que nous avons cette définition. Et maintenant, il a été répliqué par l'actualité. Donc, ce n'est pas plus le projet nom, mais le Nucleo F410RB FTL folder. La famille F4F4. Et c'est la liste. Donc, cette liste a été créée pour l'activité de l'IP. Donc, il y a le système clock, bien sûr, le Usage 2, l'interrupte vector et le GPIO, qui correspond à l'Usage 2. Et j'ai aussi printé l'adresse actuelle où cela correspond à l'adresse actuelle. C'est juste une façon de montrer que le printf n'est pas seulement texte, mais que vous pouvez utiliser le format de printf, le format en fonction de printf. Maintenant, nous allons coller cette fonction sur la main fonction. Et nous allons le montrer sur l'adresse actuelle. Pour faire ça, nous allons avoir d'inclure l'exemple de FreeMarker.h pour obtenir cette définition de la fonction. Donc, nous allons simplement conclure cela dans la main.c dans l'utilisation de l'utilisation, bien sûr, ce n'est pas une rétournée sur l'adresse actuelle. Et puis, dans la main, après l'initialisation, dans cette section de l'utilisation, je vais ajouter un appel à cette fonction de printf.h. Et c'est tout. Maintenant, je peux construire le projet. Mon bord est déjà répliqué. Donc, je vais lancer la débloque de l'utilisation. Je peux ouvrir ce file. Donc, c'est le débat de la configuration qui a été créé. Automatiquement, je vais garder les détails défauts. Et ça va arrêter à la very beginning de mon projet. Mais à ce moment, la comparte virtuelle est déjà détectée sur le PC. Donc, je peux lancer un comparte-lécenaire. En fait, je vais utiliser le termes de charrette dans mon cas. Donc, il devrait devenir 33. Il devrait être un autre que ce jour-là. Et je vais juste modifier la configuration défaut parce que la vitesse de mon utilisation n'est pas 96000, 9600, mais 150, 300. Et maintenant, je peux juste lancer l'application. Et les détails défauts sont rédirectés pour l'utilisation. Et je peux voir l'information sur ma barre. Donc, c'est un moyen d'abord générer des codes spécifiques. Mais aussi de retirer l'information, la configuration du projet Cubamix directement dans ce code. Vous pouvez trouver plus d'exemples sur comment retirer et ce que les paramétres peuvent être retirés dans le folder cubamix installation. Vous avez quelques extra templates déjà disponibles, FDL1s, ces deux. Et dans ces deux, vous pouvez voir une liste plus complète de toutes les configurations IP et paramétres IP qui peuvent être retirées. Et donc, c'est tout pour cette vidéo. J'espère que c'était clair. Donc, l'exemple est que maintenant vous comprenez ce que le panel de code de génération cubamix project manager est obligé de configurer. Et comment utiliser le template FreeMarker pour générer des files custom et accéder à la configuration IP définie dans le projet cubamix.