当前位置:网站首页>2837xd Code Generation - Supplement (1)
2837xd Code Generation - Supplement (1)
2022-07-02 09:42:00 【Quikk】
2837xd Génération de code——Supplément(1)
1 Supplément de génération de code
GPIODATALire,Besoin d'utiliserMemory CopyModule:
InTIDans le manuel officiel,GPIODivisé enA-FSix groupes,Les relations correspondantes pour chaque groupe sont les suivantes::
| Port | Pin | Remarques |
|---|---|---|
| PortA | GPIO0 ---- GPIO31 | |
| PortB | GPIO32---- GPIO63 | |
| PortC | GPIO64 ---- GPIO95 | |
| PortD | GPIO96 ---- GPIO127 | |
| PortE | GPIO128 ---- GPIO159 | |
| PortF | GPIO160 ---- GPIO168 |
Parce queSimulinkLa goupille de lecture n'est pas fournie officiellementDATAInterface,Il n'y a pasTIMode de fonctionnement officiel de la structure.Par conséquent, la lecture ne peut être effectuée qu'en accédant au Registre.,Par exemple, pour accéder àGPIO23Données,Voir d'abordGPIO23DePortA,Donc vous devriez visiterGpioDataRegs.GPADAT.allRegistres.Alors profitez deMemory CopyModule pour accéder à l'adresse appropriée:

Les données de jugement peuvent être utilisées BitwiseLe module fonctionne. Par exemple, la figure suivante met en œuvre la détection GPIO23Les données sont les suivantes:0Heure, Sous - module de déclenchement .Bitwise Le masque de ,Comme le montre la figure ci - dessous:, Le représentant s'inquiète de l'article 23Bits(GPIO23).Jody.23 BIT à zéro pour la sortie 0,Si oui1Alors la sortie0x800000.

2 Matlab-CoderGénération de code
Écrivez d'abord un m_functiongCode:

Puis entrezMatlab Coder APP:

Et choisissez ce qui vient d'être écrit mFichier script:

Cliquez directement surNext:

Puis définissez le port d'entrée (Type de données):

Sélectionner un script pour la génération de tests MEX Le fichier facilite la vérification des effets de la génération de code :

Aller à plus de paramètres:

Set toTIc2000Code de la série:

Et générer le Code :

Le Code généré est ensuite ajouté au projet pour application :
Dans la génération de code ci - dessus ,Vous pouvez voir qu'il y amianDocumentation.C'estmatlab Exemple d'utilisation donné . Peut être utilisé comme décrit ci - dessus . Saisissez le Répertoire de code de construction ,C'est important ici.hContenu du fichier, Non, on y va. my_funcDecDocuments ethDocumentation.Après compilation, On peut ajouter ce qu'il manque. .
Voici quelques fichiers contenant des relations , Dans le Code que j'ai généré ,my_func.hFichier d'en - tête requismy_func_types.hAvecrtwtypes.h.rtwtypes.h Il y a des fichiers de définition de macro . Donc je peux copier quatre fichiers dans le Répertoire de génération de code dans le projet :

Utilisez iciCodeBlocks La vérification peut être effectuée :

Résultats conformesmFonction de code:

3 Simulink FunctionGénération de code
Parce que les systèmes informatiques sont des systèmes de contrôle discrets , Il faut donc utiliser des modules discrets pour la génération de code , Voici un exemple simple :
Créer un PI Un modèle discret de , Les entrées et les sorties sont remplacées par des ports ( Dans le Code généré, vous passez les paramètres ):

Définir la taille de l'étape de simulation et la méthode du solveur :

Configurer le matériel en conséquence , Différents processeurs ici , Différents bits d'opération peuvent être pris en charge :

C'est exact.Code Generation Onglet paramètres connexes , N'importe quelle version est installée sur le système VSPeut ne pas cocher Generate code only. Non installé doit être vérifié :

La génération tlc Le principe du document n'est pas encore bien compris , Langage de script similaire , Appeler une ressource pour compiler quelque chose . Donc pour l'instant, c'est officiel. , Écris - le toi - même. .
ReportOnglet:

Comments Les onglets sont tous liés aux commentaires , Le réglage peut augmenter la lisibilité du programme ( Les paramètres par défaut sont utilisés ici ):

Code PlacementSélection des ongletsCompact(Compact):

Et après application ,QuitterSimulinkInterface(2019 Les versions suivantes sont disponibles en InterfaceIl y en a un.Configure Model FunctionEffectuer les réglages pertinents),2019 La version ci - dessus rend cette fonctionnalité indépendante (En bas.2019 Processus de configuration de la version ):
1)EntréeEmbeded CoderConfiguration

2) Cliquez sur le coin inférieur gauche pour modifier la génération de fonctions , Il y a trois fonctions initialisées ici 、Opération step、Fin de la fonction,Principaux paramètresstepFonctions( Deux autres auto - réglages ):

3)stepConfiguration de la fonction(Cliquez sur valider après la configuration,Après validation réussie,Ctrl+B Il suffit de générer le Code):

4)Dans le Code généré,Je vois.stepFonctions:

Son nom, Tous les paramètres sont Simulink Paramètres à définir dans . Mais ce n'est que la génération de fonctions ,J'en ai besoin.0.01 Deuxième appel à utiliser . Ajoutez le fichier d'en - tête et le fichier source appropriés au projet pour appeler la fonction :

4 Essai rapide du modèle
Simulink Espace de travail et WorkspaceInterrelations, Donc, en testant rapidement le modèle ,Peut passerm Script pour la simulation .Les principaux processus sont les suivants::
clear;
clc;
step_size=0.01; //Configuration de l'étape de simulation
time=0.5; // Configuration du temps de simulation
t=[0:step_size:time]';
u(:,1)=[ones(2,1);zeros(length(t)-2,1)]; //Tableau donné,tPourSimulink Simuler le point dans le temps ,uEntrée
simout=sim(gcs,'SolverType','Fixed-step','Solver','ode3',...
'FixedStep',num2str(step_size),'Stoptime',num2str(time),...
'LoadExternalInput','on'); // C'est exact.SimulikDeConfiguration ParametersConfiguration
stairs(simout.tout,simout.yout{
1}.Values.Data); //Tracer les résultats
Vous pouvez voir que le script est en fait implémenté , La commande pour activer la fonction d'entrée externe et les paramètres connexes tels que le temps d'exécution de l'étape sont définis :

Mais la plus grande différence entre les tests de script et les tests réels est : Il ne change pas les paramètres du modèle . Il permet également de donner rapidement des entrées et des opérations différentes et de tracer les résultats .
Bien sûr, ce n'est qu'une application simple. ,Spécifiquesimout Les paramètres de la fonction et d'autres utilisations nécessitent une référence à la documentation d'aide .
边栏推荐
- 三相逆变器离网控制——PR控制
- vs+qt 设置应用程序图标
- ClassFile - Attributes - Code
- C语言之数据插入
- Save video opencv:: videowriter
- Because of hard work, the fruit goes with fate
- Discussion on improving development quality and reducing test bug rate
- Long summary (code with comments) number structure (C language) -- Chapter 4, string (Part 1)
- Navicat remote connection MySQL reports an error 1045 - access denied for user 'root' @ '222.173.220.236' (using password: yes)
- View the port of the application published by was
猜你喜欢

Share a blog (water blog)

2837xd 代码生成——StateFlow(4)

Required request body is missing:(跨域问题)

ZK configuration center -- configuration and use of config Toolkit

图像识别-数据增广

Read 30 minutes before going to bed every day_ day4_ Files

逆变器simulink模型——处理器在环测试(PIL)

2837xd Code Generation - stateflow (4)

Image recognition - data augmentation

互联网API接口幂等设计
随机推荐
Read 30 minutes before going to bed every day_ day4_ Files
Oracle modifies tablespace names and data files
Demand delineation executive summary
2837xd 代码生成——总结篇
Knife4j 2. Solution to the problem of file control without selection when uploading x version files
自定義Redis連接池
Read 30 minutes before going to bed every day_ day3_ Files
2837xd 代码生成——StateFlow(3)
JDBC review
2837xd code generation - stateflow (4)
图像识别-数据采集
图像识别-数据增广
定时线程池实现请求合并
Tinyxml2 reading and modifying files
Vs+qt set application icon
Int to string, int to qstring
Matplotlib swordsman line - layout guide and multi map implementation (Updated)
Operation and application of stack and queue
Image recognition - Data Cleaning
Pool de connexion redis personnalisé