当前位置:网站首页>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 .
边栏推荐
- 个人经历&&博客现状
- Save video opencv:: videowriter
- Matplotlib swordsman line - layout guide and multi map implementation (Updated)
- Vs+qt set application icon
- BugkuCTF-web24(解题思路及步骤)
- Typora安装包分享
- CKEditor 4.10.1 上传图片提示“不正确的服务器响应” 问题解决
- MySql报错:unblock with mysqladmin flush-hosts
- Read Day6 30 minutes before going to bed every day_ Day6_ Date_ Calendar_ LocalDate_ TimeStamp_ LocalTime
- Read 30 minutes before going to bed every day_ day3_ Files
猜你喜欢
随机推荐
Timed thread pool implements request merging
Redis installation and deployment (windows/linux)
MySQL default transaction isolation level and row lock
Discussion on improving development quality and reducing test bug rate
QT signal slot summary -connect function incorrect usage
道阻且长,行则将至
Typeerror: X () got multiple values for argument 'y‘
MySql报错:unblock with mysqladmin flush-hosts
PI control of grid connected inverter (grid connected mode)
Solutions to Chinese garbled code in CMD window
VIM操作命令大全
Number structure (C language -- code with comments) -- Chapter 2, linear table (updated version)
Bold prediction: it will become the core player of 5g
企业级SaaS CRM实现
Read 30 minutes before going to bed every day_ day4_ Files
图像识别-数据采集
Knife4j 2. Solution to the problem of file control without selection when uploading x version files
Knowledge points are very detailed (code is annotated) number structure (C language) -- Chapter 3, stack and queue
How to use PHP spoole to implement millisecond scheduled tasks
The road is blocked and long, and the line is coming