переношу проект пока не работает

This commit is contained in:
2025-06-15 02:07:12 +03:00
parent 5e93fc2099
commit 0f3ac734bf
21 changed files with 634 additions and 2779 deletions

10
app_wrapper/app_configs.h Normal file
View File

@@ -0,0 +1,10 @@
/**
**************************************************************************
* @file app_config.h
* @brief Заголовочный файл для пользовательских конфигураций.
**************************************************************************/
#ifndef _APP_CONFIG
#define _APP_CONFIG
#endif //_APP_CONFIG

View File

@@ -0,0 +1,17 @@
/**
**************************************************************************
* @file app_includes.h
* @brief Заголовочный файл для подключаения заголовочных файлов программы МК.
**************************************************************************/
#ifndef _APP_INCLUDES_H_
#define _APP_INCLUDES_H_
#include "app_configs.h"
// INCLUDES START
// Инклюды для доступа к коду МК в коде оболочке
#include "upp.h"
#include "main.h"
// INCLUDES END
#endif //_APP_INCLUDES_H_

38
app_wrapper/app_init.c Normal file
View File

@@ -0,0 +1,38 @@
/**
**************************************************************************
* @file app_init.h
* @brief Файл с функцией инициализации программы МК @ref app_init.
**************************************************************************/
#include "mcu_wrapper_conf.h"
#include "app_wrapper.h"
/**
* @brief Функция для инициализации приложения МК
* @details Используется в случае симуляции без отдельного потока для main().
*/
void app_init(void) {
// USER APP INIT START
// Код для инициализации приложения МК
//
// Вызов разных функций в случае,
// если не используется отдельный поток для main().
HAL_Init();
MX_GPIO_Init();
MX_TIM2_Init();
upp_init();
// USER APP INIT END
}
/**
* @brief Функция для деинициализации приложения МК
*/
void app_deinit(void) {
// USER APP DEINIT START
// Код для деинициализации приложения МК
//
// Структуры, переменные и так далее, которые надо очистить,
// для повторного запуска симуляции.
deInitialize_MCU();
// USER APP DEINIT END
}

118
app_wrapper/app_io.c Normal file
View File

@@ -0,0 +1,118 @@
/**
**************************************************************************
* @file app_init.h
* @brief Файл с функциями записи входов/выходов программы МК @ref app_init.
**************************************************************************/
#include "mcu_wrapper_conf.h"
#include "app_wrapper.h"
/**
* @brief Функция для записи входов в приложение МК
* @param u - массив входных значений
*/
void app_readInputs(const real_T* Buffer) {
// USER APP INPUT START
// Код для записи считывания входов из IO буфера
// Буфер в начале хранит входные порты S-Function, далее идут выходные порты:
// Buffer[0:15] - входной 1 порт, Buffer[16:31] - входной 2 порт,
// Buffer[32:47] - выходной 1 порт, Buffer[48:63] - выходной 2 порт
//
// Note: используте для чтения:
// val = ReadInputArray(arr_ind, val_ind)
// Пример:
// // запись в второй элемент первого массива
// app_variable = ReadInputArray(0, 1);
// // чтение из IO буфера напрямую
// app_variable_2 = Buffer[10];
#define detect_front(_in_numb_, _var_, _val_) { \
if ((Buffer[_in_numb_] > 0.5) && (prev_in[_in_numb_] <= 0.5)) \
{ \
_var_ = _val_; \
} }
#define detect_rise(_in_numb_, _var_, _val_) { \
if ((Buffer[_in_numb_] < 0.5) && (prev_in[_in_numb_] >= 0.5)) \
{ \
_var_ = _val_; \
} }
static real_T prev_in[TOTAL_IN_SIZE];
detect_front(0, phase_A.zc_detector.f.EXTIZeroCrossDetected, 1);
detect_rise(0, phase_A.zc_detector.f.EXTIZeroCrossDetected, 1);
detect_front(1, phase_B.zc_detector.f.EXTIZeroCrossDetected, 1);
detect_rise(1, phase_B.zc_detector.f.EXTIZeroCrossDetected, 1);
detect_front(2, phase_C.zc_detector.f.EXTIZeroCrossDetected, 1);
detect_rise(2, phase_C.zc_detector.f.EXTIZeroCrossDetected, 1);
detect_front(3, Upp.GoSafe, 1);
detect_rise(3, Upp.GoSafe, 0);
detect_front(4, Upp.Prepare, 1);
detect_rise(4, Upp.Prepare, 0);
detect_front(5, Upp.ForceStop, 1);
detect_rise(5, Upp.ForceStop, 0);
detect_front(6, Upp.ForceDisconnect, 1);
detect_rise(6, Upp.ForceDisconnect, 0);
Upp.sine_freq = Buffer[7];
Upp.Duration = Buffer[8];
for (int i = 0; i < TOTAL_IN_SIZE; i++)
{
prev_in[i] = Buffer[i];
}
// USER APP INPUT END
}
/**
* @brief Функция для записи выходов приложения МК
* @param xD - массив буффера выходов(дискретных выходов)
* @details Используте WriteOutputArray(val, arr_ind, val_ind) для записи
*/
void app_writeOutputBuffer(real_T* Buffer) {
// USER APP OUTPUT START
// Код для записи выходов в IO буфер
// Буфер в начале хранит входные порты S-Function, далее идут выходные порты:
// Buffer[0:15] - входной 1 порт, Buffer[16:31] - входной 2 порт,
// Buffer[32:47] - выходной 1 порт, Buffer[48:63] - выходной 2 порт
//
// Note: используте для записи:
// WriteOutputArray(val, arr_ind, val_ind)
// Пример:
// // запись в второй элемент первого массива
// WriteOutputArray(app_variable, 0, 1);
// // запись в IO буфер напрямую
// Buffer[XD_OUTPUT_START + 10] = app_variable_2;
for (int i = 0; i < 16; i++)
{
if (GPIOA->ODR & (1 << i))
{
WriteOutputArray(1, 0, i);
}
if (GPIOB->ODR & (1 << i))
{
WriteOutputArray(1, 1, i);
}
}
int var = phase_A.ctrl.angle.delay_us;
WriteOutputArray(var, 2, 0);
var = (uint16_t)((uint16_t)TIMER->CNT - phase_A.ctrl.angle.start_delay_tick);
WriteOutputArray(var, 2, 1);
var = phase_A.ctrl.angle.start_delay_tick;
WriteOutputArray(var, 2, 2);
var = TIMER->CNT;
WriteOutputArray(var, 2, 3);
// USER APP OUTPUT END
}

27
app_wrapper/app_wrapper.c Normal file
View File

@@ -0,0 +1,27 @@
#include "mcu_wrapper_conf.h"
#include "app_wrapper.h"
/**
* @brief Функция для симуляции шага приложения МК
* @details Используется в случае симуляции без отдельного потока для main().
*/
void app_step(void)
{
// USER APP STEP START
// Код приложения МК для вызова в шаге симуляции
//
// Вызов разных функций на шаге симуляции в случае,
// если не используется отдельный поток для main().
//upp_main();
// USER APP STEP END
}
// DUMMY START
// Заглушки для различных функций и переменных
uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk) {}
void SystemClock_Config(void) {}
void Error_Handler(void) {}
// DUMMY END

12
app_wrapper/app_wrapper.h Normal file
View File

@@ -0,0 +1,12 @@
#ifndef _APP_WRAPPER_H_
#define _APP_WRAPPER_H_
#include "app_includes.h"
void app_step(void);
void app_init(void);
void app_deinit(void);
void app_readInputs(const real_T* u);
void app_writeOutputBuffer(real_T* xD);
#endif //_APP_WRAPPER_H_