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) */
25DW_Blinky_T Blinky_DW;
26
27/* Previous zero-crossings (trigger) states */
28PrevZCX_Blinky_T Blinky_PrevZCX;
29
30/* External outputs (root outports fed by signals with default storage) */
31ExtY_Blinky_T Blinky_Y;
32static 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
54void LPUART1_IRQHandler()
55{
56 FMSTR_SerialIsr();
57}
58
59/* Model step function */
60void 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 */
112void 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 */
121void Blinky_terminate(void)
122{
123 /* (no terminate code required) */
124}
125
126/*
127 * File trailer for generated code.
128 *
129 * [EOF]
130 */
131