STM MATLAB Simulator
Loading...
Searching...
No Matches
stm32f4xx_matlab_conf.c
Go to the documentation of this file.
1/**
2**************************************************************************
3* @file stm32f4xx_matlab_conf.c
4* @brief Исходный код для конфигурации симулятора МК.
5**************************************************************************
6@details
7Данный файл настраивает структуры для симуляции периферий, которые выбраны
8дефайнами в stm32f4xx_matlab_conf.h.
9**************************************************************************/
10
11#include "mcu_wrapper_conf.h"
12
15DBGMCU_TypeDef DEBUG_MCU;
16
17//-----------------------------------------------------------------------//
18/*------------------------------FUNCTIONS--------------------------------*/
19/**
20 * @brief Инициализация периферии симулятора МК.
21 * @details Эта функция вызывает функции инициализации периферии для симуляции
22 */
24{
26}
27/**
28 * @brief Деинициализация периферии симулятора МК.
29 * @details Эта функция вызывает функции деинициализации периферии для последующей симуляции
30 */
32{
34}
35/**
36 * @brief Деинициализация симулятора МК.
37 * @details Эта функция очищает память симулятора МК, чтобы в
38 следующей симуляции он запускался как в первый раз.
39 */
41{
42 // обнуление структуры, управляющей программой МК
43 memset(&hmcu, 0, sizeof(hmcu));
44 // обнуление структур, симулирующих память МК
45 memset(&MCU_MEM, 0, sizeof(MCU_MEM));
46 memset(&MCU_CORTEX_MEM, 0, sizeof(MCU_CORTEX_MEM));
47 memset(&DEBUG_MCU, 0, sizeof(DEBUG_MCU));
48}
49
50
51/*------------------------------FUNCTIONS--------------------------------*/
52//-----------------------------------------------------------------------//
53
54//-----------------------------------------------------------------------//
55/*-------------------------------TIMERS----------------------------------*/
56// defines structure for simulate
57#ifdef USE_TIM1
58struct TIM_Sim tim1s;
59#endif
60#ifdef USE_TIM2
61struct TIM_Sim tim2s;
62#endif
63#ifdef USE_TIM3
64struct TIM_Sim tim3s;
65#endif
66#ifdef USE_TIM4
67struct TIM_Sim tim4s;
68#endif
69#ifdef USE_TIM5
70struct TIM_Sim tim5s;
71#endif
72#ifdef USE_TIM6
73struct TIM_Sim tim6s;
74#endif
75#ifdef USE_TIM7
76struct TIM_Sim tim7s;
77#endif
78#ifdef USE_TIM8
79struct TIM_Sim tim8s;
80#endif
81#ifdef USE_TIM9
82struct TIM_Sim tim9s;
83#endif
84#ifdef USE_TIM10
85struct TIM_Sim tim10s;
86#endif
87#ifdef USE_TIM11
88struct TIM_Sim tim11s;
89#endif
90#ifdef USE_TIM12
91struct TIM_Sim tim12s;
92#endif
93#ifdef USE_TIM13
94struct TIM_Sim tim13s;
95#endif
96#ifdef USE_TIM14
97struct TIM_Sim tim14s;
98#endif
99
100/**
101 * @brief Инициализация таймеров симулятора МК.
102 * @details Эта функция инициализирует структуры для симуляции таймеров.
103 * Таймеры для симуляции выбираются дефайнами в stm32f4xx_matlab_conf.h.
104 */
105void Init_TIM_SIM(void)
106{
107#ifdef USE_TIM1
108 tim1s.tx_cnt = TIM1->CNT;
110
111 tim1s.Channels.OC1_GPIOx = GPIOE;
113 tim1s.Channels.OC2_GPIOx = GPIOE;
115 tim1s.Channels.OC3_GPIOx = GPIOE;
117 tim1s.Channels.OC4_GPIOx = GPIOE;
123#endif
124#ifdef USE_TIM2
125 tim2s.tx_cnt = TIM2->CNT;
126 tim2s.tx_step = hmcu.SIM_Sample_Time * ABP1_TIMS_Value;
127
128 tim2s.Channels.OC1_GPIOx = GPIOA;
129 tim2s.Channels.OC1_PIN_SHIFT = 5;
130 tim2s.Channels.OC2_GPIOx = GPIOA;
131 tim2s.Channels.OC2_PIN_SHIFT = 1;
132 tim2s.Channels.OC3_GPIOx = GPIOA;
133 tim2s.Channels.OC3_PIN_SHIFT = 2;
134 tim2s.Channels.OC4_GPIOx = GPIOA;
135 tim2s.Channels.OC4_PIN_SHIFT = 3;
136 tim2s.Channels.OC1REF = 0;
137 tim2s.Channels.OC2REF = 0;
138 tim2s.Channels.OC3REF = 0;
139 tim2s.Channels.OC4REF = 0;
140#endif
141#ifdef USE_TIM3
142 tim3s.tx_cnt = TIM3->CNT;
144
145 tim3s.Channels.OC1_GPIOx = GPIOA;
147 tim3s.Channels.OC2_GPIOx = GPIOA;
149 tim3s.Channels.OC3_GPIOx = GPIOB;
151 tim3s.Channels.OC4_GPIOx = GPIOB;
157#endif
158#ifdef USE_TIM4
159 tim4s.tx_cnt = TIM4->CNT;
161
162 tim4s.Channels.OC1_GPIOx = GPIOD;
164 tim4s.Channels.OC2_GPIOx = GPIOD;
166 tim4s.Channels.OC3_GPIOx = GPIOD;
168 tim4s.Channels.OC4_GPIOx = GPIOD;
174#endif
175#ifdef USE_TIM5
176 tim5s.tx_cnt = TIM5->CNT;
177 tim5s.tx_step = hmcu.SIM_Sample_Time * ABP1_TIMS_Value;
178
179 tim5s.Channels.OC1_GPIOx = GPIOA;
180 tim5s.Channels.OC1_PIN_SHIFT = 0;
181 tim5s.Channels.OC2_GPIOx = GPIOA;
182 tim5s.Channels.OC2_PIN_SHIFT = 1;
183 tim5s.Channels.OC3_GPIOx = GPIOA;
184 tim5s.Channels.OC3_PIN_SHIFT = 2;
185 tim5s.Channels.OC4_GPIOx = GPIOA;
186 tim5s.Channels.OC4_PIN_SHIFT = 3;
187 tim5s.Channels.OC1REF = 0;
188 tim5s.Channels.OC2REF = 0;
189 tim5s.Channels.OC3REF = 0;
190 tim5s.Channels.OC4REF = 0;
191#endif
192#ifdef USE_TIM6
193 tim6s.tx_cnt = TIM6->CNT;
194 tim6s.tx_step = hmcu.SIM_Sample_Time * ABP1_TIMS_Value;
195
196 tim6s.Channels.OC1_GPIOx = GPIOA;
197 tim6s.Channels.OC1_PIN_SHIFT = 6;
198 tim6s.Channels.OC2_GPIOx = GPIOA;
199 tim6s.Channels.OC2_PIN_SHIFT = 0;
200 tim6s.Channels.OC3_GPIOx = GPIOA;
201 tim6s.Channels.OC3_PIN_SHIFT = 0;
202 tim6s.Channels.OC4_GPIOx = GPIOA;
203 tim6s.Channels.OC4_PIN_SHIFT = 0;
204 tim6s.Channels.OC1REF = 0;
205 tim6s.Channels.OC2REF = 0;
206 tim6s.Channels.OC3REF = 0;
207 tim6s.Channels.OC4REF = 0;
208#endif
209#ifdef USE_TIM7
210 tim7s.tx_cnt = TIM7->CNT;
212
213 tim7s.Channels.OC1_GPIOx = GPIOA;
215 tim7s.Channels.OC2_GPIOx = GPIOA;
217 tim7s.Channels.OC3_GPIOx = GPIOA;
219 tim7s.Channels.OC4_GPIOx = GPIOA;
225#endif
226#ifdef USE_TIM8
227 tim8s.tx_cnt = TIM8->CNT;
228 tim8s.tx_step = hmcu.SIM_Sample_Time * ABP2_TIMS_Value;
229
230 tim8s.Channels.OC1_GPIOx = GPIOA;
231 tim8s.Channels.OC1_PIN_SHIFT = 6;
232 tim8s.Channels.OC2_GPIOx = GPIOA;
233 tim8s.Channels.OC2_PIN_SHIFT = 0;
234 tim8s.Channels.OC3_GPIOx = GPIOA;
235 tim8s.Channels.OC3_PIN_SHIFT = 0;
236 tim8s.Channels.OC4_GPIOx = GPIOA;
237 tim8s.Channels.OC4_PIN_SHIFT = 0;
238 tim8s.Channels.OC1REF = 0;
239 tim8s.Channels.OC2REF = 0;
240 tim8s.Channels.OC3REF = 0;
241 tim8s.Channels.OC4REF = 0;
242#endif
243#ifdef USE_TIM9
244 tim9s.tx_cnt = TIM9->CNT;
245 tim9s.tx_step = hmcu.SIM_Sample_Time * ABP2_TIMS_Value;
246
247 tim9s.Channels.OC1_GPIOx = GPIOA;
248 tim9s.Channels.OC1_PIN_SHIFT = 6;
249 tim9s.Channels.OC2_GPIOx = GPIOA;
250 tim9s.Channels.OC2_PIN_SHIFT = 0;
251 tim9s.Channels.OC3_GPIOx = GPIOA;
252 tim9s.Channels.OC3_PIN_SHIFT = 0;
253 tim9s.Channels.OC4_GPIOx = GPIOA;
254 tim9s.Channels.OC4_PIN_SHIFT = 0;
255 tim9s.Channels.OC1REF = 0;
256 tim9s.Channels.OC2REF = 0;
257 tim9s.Channels.OC3REF = 0;
258 tim9s.Channels.OC4REF = 0;
259#endif
260#ifdef USE_TIM10
261 tim10s.tx_cnt = TIM10->CNT;
262 tim10s.tx_step = hmcu.SIM_Sample_Time * ABP2_TIMS_Value;
263
264 tim10s.Channels.OC1_GPIOx = GPIOA;
265 tim10s.Channels.OC1_PIN_SHIFT = 6;
266 tim10s.Channels.OC2_GPIOx = GPIOA;
267 tim10s.Channels.OC2_PIN_SHIFT = 0;
268 tim10s.Channels.OC3_GPIOx = GPIOA;
269 tim10s.Channels.OC3_PIN_SHIFT = 0;
270 tim10s.Channels.OC4_GPIOx = GPIOA;
271 tim10s.Channels.OC4_PIN_SHIFT = 0;
272 tim10s.Channels.OC1REF = 0;
273 tim10s.Channels.OC2REF = 0;
274 tim10s.Channels.OC3REF = 0;
275 tim10s.Channels.OC4REF = 0;
276#endif
277#ifdef USE_TIM11
278 tim11s.tx_cnt = TIM11->CNT;
279 tim11s.tx_step = hmcu.SIM_Sample_Time * ABP2_TIMS_Value;
280
281 tim11s.Channels.OC1_GPIOx = GPIOA;
282 tim11s.Channels.OC1_PIN_SHIFT = 6;
283 tim11s.Channels.OC2_GPIOx = GPIOA;
284 tim11s.Channels.OC2_PIN_SHIFT = 0;
285 tim11s.Channels.OC3_GPIOx = GPIOA;
286 tim11s.Channels.OC3_PIN_SHIFT = 0;
287 tim11s.Channels.OC4_GPIOx = GPIOA;
288 tim11s.Channels.OC4_PIN_SHIFT = 0;
289 tim11s.Channels.OC1REF = 0;
290 tim11s.Channels.OC2REF = 0;
291 tim11s.Channels.OC3REF = 0;
292 tim11s.Channels.OC4REF = 0;
293#endif
294#ifdef USE_TIM12
295 tim12s.tx_cnt = TIM12->CNT;
297
298 tim12s.Channels.OC1_GPIOx = GPIOA;
300 tim12s.Channels.OC2_GPIOx = GPIOA;
302 tim12s.Channels.OC3_GPIOx = GPIOA;
304 tim12s.Channels.OC4_GPIOx = GPIOA;
310#endif
311#ifdef USE_TIM13
312 tim13s.tx_cnt = TIM13->CNT;
313 tim13s.tx_step = hmcu.SIM_Sample_Time * ABP1_TIMS_Value;
314
315 tim13s.Channels.OC1_GPIOx = GPIOA;
316 tim13s.Channels.OC1_PIN_SHIFT = 6;
317 tim13s.Channels.OC2_GPIOx = GPIOA;
318 tim13s.Channels.OC2_PIN_SHIFT = 0;
319 tim13s.Channels.OC3_GPIOx = GPIOA;
320 tim13s.Channels.OC3_PIN_SHIFT = 0;
321 tim13s.Channels.OC4_GPIOx = GPIOA;
322 tim13s.Channels.OC4_PIN_SHIFT = 0;
323 tim13s.Channels.OC1REF = 0;
324 tim13s.Channels.OC2REF = 0;
325 tim13s.Channels.OC3REF = 0;
326 tim13s.Channels.OC4REF = 0;
327#endif
328#ifdef USE_TIM14
329 tim14s.tx_cnt = TIM14->CNT;
330 tim14s.tx_step = hmcu.SIM_Sample_Time * ABP1_TIMS_Value;
331
332 tim14s.Channels.OC1_GPIOx = GPIOA;
333 tim14s.Channels.OC1_PIN_SHIFT = 6;
334 tim14s.Channels.OC2_GPIOx = GPIOA;
335 tim14s.Channels.OC2_PIN_SHIFT = 0;
336 tim14s.Channels.OC3_GPIOx = GPIOA;
337 tim14s.Channels.OC3_PIN_SHIFT = 0;
338 tim14s.Channels.OC4_GPIOx = GPIOA;
339 tim14s.Channels.OC4_PIN_SHIFT = 0;
340 tim14s.Channels.OC1REF = 0;
341 tim14s.Channels.OC2REF = 0;
342 tim14s.Channels.OC3REF = 0;
343 tim14s.Channels.OC4REF = 0;
344#endif
345}
346/*-------------------------------TIMERS----------------------------------*/
347//-----------------------------------------------------------------------//
MCU_CortexMemoryTypeDef MCU_CORTEX_MEM
void Initialize_Periph_Sim(void)
Инициализация периферии симулятора МК.
MCU_MemoryTypeDef MCU_MEM
#define ABP1_TIMS_Value
#define ABP2_TIMS_Value
void TIM_SIM_DEINIT(void)
Деинициализирование выбранных таймеров.
SIM__MCUHandleTypeDef hmcu
Хендл для управления потоком программы МК
Definition mcu_wrapper.c:16
Заголовочный файл для оболочки МК.
void Init_TIM_SIM(void)
Инициализация таймеров симулятора МК.
DBGMCU_TypeDef DEBUG_MCU
void deInitialize_MCU(void)
Деинициализация симулятора МК.
void deInitialize_Periph_Sim(void)
Деинициализация периферии симулятора МК.
struct TIM_Sim tim1s
struct TIM_Sim tim4s
struct TIM_Sim tim12s
struct TIM_Sim tim3s
struct TIM_Sim tim7s
GPIO_TypeDef * OC2_GPIOx
Порт второго канала
unsigned OC4REF
Четвертый канал
uint32_t OC1_PIN_SHIFT
Пин первого канала
GPIO_TypeDef * OC1_GPIOx
Порт первого канала
GPIO_TypeDef * OC3_GPIOx
Порт третьего канала
GPIO_TypeDef * OC4_GPIOx
Порт четвертого канала
unsigned OC2REF
Второй канал
uint32_t OC4_PIN_SHIFT
Пин четвертого канала
unsigned OC1REF
Первый канал
unsigned OC3REF
Третьий канал
uint32_t OC3_PIN_SHIFT
Пин третьего канала
uint32_t OC2_PIN_SHIFT
Пин второго канала
double SIM_Sample_Time
sample time of simulation
Структура для моделирования таймера
double tx_cnt
Счетчик таймера (double, т.к. кол-во тактов за шаг симуляции может быть дробным)
struct Channels_Sim Channels
Структура для симуляции каналов
double tx_step
Шаг счета за один шаг симуляции (double, т.к. кол-во тактов за шаг симуляции может быть дробным)