123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- //
- // Academic License - for use in teaching, academic research, and meeting
- // course requirements at degree granting institutions only. Not for
- // government, commercial, or other organizational use.
- //
- // File: ert_main.cpp
- //
- // Code generated for Simulink model 'FSMTreppe'.
- //
- // Model version : 1.22
- // Simulink Coder version : 9.5 (R2021a) 14-Nov-2020
- // C/C++ source code generated on : Fri Jul 2 17:45:36 2021
- //
- // Target selection: ert.tlc
- // Embedded hardware selection: ARM Compatible->ARM Cortex-M
- // Code generation objectives: Unspecified
- // Validation result: Not run
- //
- #include <stddef.h>
- #include <stdio.h> // This ert_main.c example uses printf/fflush
- #include "FSMTreppe.h" // Model's header file
- #include "rtwtypes.h"
-
- static FSMTreppeModelClass FSMTreppe_Obj;// Instance of model class
-
- //
- // Associating rt_OneStep with a real-time clock or interrupt service routine
- // is what makes the generated code "real-time". The function rt_OneStep is
- // always associated with the base rate of the model. Subrates are managed
- // by the base rate from inside the generated code. Enabling/disabling
- // interrupts and floating point context switches are target specific. This
- // example code indicates where these should take place relative to executing
- // the generated code step function. Overrun behavior should be tailored to
- // your application needs. This example simply sets an error status in the
- // real-time model and returns from rt_OneStep.
- //
- void rt_OneStep(void);
- void rt_OneStep(void)
- {
- static boolean_T OverrunFlag = false;
-
- // Disable interrupts here
-
- // Check for overrun
- if (OverrunFlag) {
- rtmSetErrorStatus(FSMTreppe_Obj.getRTM(), "Overrun");
- return;
- }
-
- OverrunFlag = true;
-
- // Save FPU context here (if necessary)
- // Re-enable timer or interrupt here
- // Set model inputs here
-
- // Step the model
- FSMTreppe_Obj.step();
-
- // Get model outputs here
-
- // Indicate task complete
- OverrunFlag = false;
-
- // Disable interrupts here
- // Restore FPU context here (if necessary)
- // Enable interrupts here
- }
-
- //
- // The example "main" function illustrates what is required by your
- // application code to initialize, execute, and terminate the generated code.
- // Attaching rt_OneStep to a real-time clock is target specific. This example
- // illustrates how you do this relative to initializing the model.
- //
- int_T main(int_T argc, const char *argv[])
- {
- // Unused arguments
- (void)(argc);
- (void)(argv);
-
- // Initialize model
- FSMTreppe_Obj.initialize();
-
- // Attach rt_OneStep to a timer or interrupt service routine with
- // period 0.01 seconds (the model's base sample time) here. The
- // call syntax for rt_OneStep is
- //
- // rt_OneStep();
-
- printf("Warning: The simulation will run forever. "
- "Generated ERT main won't simulate model step behavior. "
- "To change this behavior select the 'MAT-file logging' option.\n");
- fflush((NULL));
- while (rtmGetErrorStatus(FSMTreppe_Obj.getRTM()) == (NULL)) {
- // Perform other application tasks here
- }
-
- // Disable rt_OneStep() here
-
- // Terminate model
- FSMTreppe_Obj.terminate();
- return 0;
- }
-
- //
- // File trailer for generated code.
- //
- // [EOF]
- //
|