1 | /* |
2 | * File: Blinky.c |
3 | * |
4 | * Code generated for Simulink model 'Blinky'. |
5 | * |
6 | * Model version : 1.145 |
7 | * Simulink Coder version : 9.3 (R2020a) 18-Nov-2019 |
8 | * MBDT for IMXRT Series Version : Version 1.3.0 (R2019a-R2021b) 18-Apr-2022 |
9 | * C/C++ source code generated on : Sat Nov 26 13:09:17 2022 |
10 | * |
11 | * Target selection: ert.tlc |
12 | * Embedded hardware selection: ARM Compatible->ARM Cortex |
13 | * Code generation objective: Execution efficiency |
14 | * Validation result: All passed |
15 | */ |
16 | |
17 | #include "Blinky.h" |
18 | #include "Blinky_private.h" |
19 | |
20 | /* Named constants for Chart: '<Root>/Chart' */ |
21 | #define Blinky_IN_State0 ((uint8_T)1U) |
22 | #define Blinky_IN_State1 ((uint8_T)2U) |
23 | |
24 | /* Block signals and states (default storage) */ |
25 | DW_Blinky_T Blinky_DW; |
26 | |
27 | /* Previous zero-crossings (trigger) states */ |
28 | PrevZCX_Blinky_T Blinky_PrevZCX; |
29 | |
30 | /* External outputs (root outports fed by signals with default storage) */ |
31 | ExtY_Blinky_T Blinky_Y; |
32 | static void init_freemaster_lpuart(void) |
33 | { |
34 | lpuart_config_t config; |
35 | LPUART_GetDefaultConfig(&config); |
36 | config.baudRate_Bps = 115200; |
37 | config.enableTx = false; |
38 | config.enableRx = false; |
39 | LPUART_Init(LPUART1, &config, BOARD_DEBUG_UART_CLK_FREQ); |
40 | |
41 | /* Register communication module used by FreeMASTER driver. */ |
42 | FMSTR_SerialSetBaseAddress(LPUART1); |
43 | |
44 | #if FMSTR_SHORT_INTR || FMSTR_LONG_INTR |
45 | |
46 | /* Enable UART interrupts. */ |
47 | EnableIRQ(LPUART1_IRQn); |
48 | EnableGlobalIRQ(0); |
49 | |
50 | #endif |
51 | |
52 | } |
53 | |
54 | void LPUART1_IRQHandler() |
55 | { |
56 | FMSTR_SerialIsr(); |
57 | } |
58 | |
59 | /* Model step function */ |
60 | void Blinky_step(void) |
61 | { |
62 | uint8_T rtb_LED; |
63 | |
64 | /* S-Function (imxrt_gpio_input): '<Root>/GPIO_Input' incorporates: |
65 | * Outport: '<Root>/Button' |
66 | */ |
67 | Blinky_Y.Button = GPIO_PinRead(GPIO5, 0U); |
68 | |
69 | /* Outputs for Triggered SubSystem: '<Root>/Function-Call Subsystem' incorporates: |
70 | * TriggerPort: '<S2>/function' |
71 | */ |
72 | /* Outport: '<Root>/Button' */ |
73 | if (Blinky_Y.Button && (Blinky_PrevZCX.FunctionCallSubsystem_Trig_ZCE != |
74 | POS_ZCSIG)) { |
75 | /* S-Function (imxrt_lpuart): '<S2>/LPUART Data Transfer' incorporates: |
76 | * Constant: '<S2>/Constant1' |
77 | */ |
78 | LPUART_WriteBlocking(LPUART1, Blinky_ConstP.Constant1_Value, 30); |
79 | } |
80 | |
81 | Blinky_PrevZCX.FunctionCallSubsystem_Trig_ZCE = Blinky_Y.Button; |
82 | |
83 | /* End of Outputs for SubSystem: '<Root>/Function-Call Subsystem' */ |
84 | |
85 | /* Chart: '<Root>/Chart' */ |
86 | if (Blinky_DW.is_active_c3_Blinky == 0U) { |
87 | Blinky_DW.is_active_c3_Blinky = 1U; |
88 | Blinky_DW.is_c3_Blinky = Blinky_IN_State0; |
89 | rtb_LED = 0U; |
90 | } else if (Blinky_DW.is_c3_Blinky == Blinky_IN_State0) { |
91 | Blinky_DW.is_c3_Blinky = Blinky_IN_State1; |
92 | rtb_LED = 1U; |
93 | } else { |
94 | /* case IN_State1: */ |
95 | Blinky_DW.is_c3_Blinky = Blinky_IN_State0; |
96 | rtb_LED = 0U; |
97 | } |
98 | |
99 | /* End of Chart: '<Root>/Chart' */ |
100 | |
101 | /* Outport: '<Root>/LED' */ |
102 | Blinky_Y.LED = rtb_LED; |
103 | |
104 | /* DataTypeConversion: '<Root>/Data Type Conversion' */ |
105 | Blinky_DW.DataTypeConversion = (rtb_LED != 0); |
106 | |
107 | /* S-Function (imxrt_gpio_output): '<Root>/GPIO_Output' */ |
108 | GPIO_PinWrite(GPIO1, 9U, Blinky_DW.DataTypeConversion); |
109 | } |
110 | |
111 | /* Model initialize function */ |
112 | void Blinky_initialize(void) |
113 | { |
114 | /* Start for S-Function (imxrt_fm_config): '<Root>/FreeMASTER Config' */ |
115 | init_freemaster_lpuart(); |
116 | FMSTR_Init(); |
117 | Blinky_PrevZCX.FunctionCallSubsystem_Trig_ZCE = POS_ZCSIG; |
118 | } |
119 | |
120 | /* Model terminate function */ |
121 | void Blinky_terminate(void) |
122 | { |
123 | /* (no terminate code required) */ |
124 | } |
125 | |
126 | /* |
127 | * File trailer for generated code. |
128 | * |
129 | * [EOF] |
130 | */ |
131 |