рефакторинг и описание параметров
добавлен, но не запущен модбас фиксы симуляции и тесты с двигателем в матлаб
This commit is contained in:
@@ -224,61 +224,50 @@ typedef enum
|
||||
|
||||
#define POSITION_VAL(VAL) (__CLZ(__RBIT(VAL)))
|
||||
|
||||
/* Use of CMSIS compiler intrinsics for register exclusive access */
|
||||
/* Atomic 32-bit register access macro to set one or several bits */
|
||||
/* Atomic operations for MinGW/GCC */
|
||||
/* Atomic 32-bit register access macro to set one or several bits */
|
||||
#define ATOMIC_SET_BIT(REG, BIT) \
|
||||
do { \
|
||||
uint32_t val; \
|
||||
do { \
|
||||
val = __LDREXW((__IO uint32_t *)&(REG)) | (BIT); \
|
||||
} while ((__STREXW(val,(__IO uint32_t *)&(REG))) != 0U); \
|
||||
__sync_fetch_and_or(&(REG), (BIT)); \
|
||||
} while(0)
|
||||
|
||||
/* Atomic 32-bit register access macro to clear one or several bits */
|
||||
#define ATOMIC_CLEAR_BIT(REG, BIT) \
|
||||
do { \
|
||||
uint32_t val; \
|
||||
do { \
|
||||
val = __LDREXW((__IO uint32_t *)&(REG)) & ~(BIT); \
|
||||
} while ((__STREXW(val,(__IO uint32_t *)&(REG))) != 0U); \
|
||||
__sync_fetch_and_and(&(REG), ~(BIT)); \
|
||||
} while(0)
|
||||
|
||||
/* Atomic 32-bit register access macro to clear and set one or several bits */
|
||||
#define ATOMIC_MODIFY_REG(REG, CLEARMSK, SETMASK) \
|
||||
do { \
|
||||
uint32_t val; \
|
||||
do { \
|
||||
val = (__LDREXW((__IO uint32_t *)&(REG)) & ~(CLEARMSK)) | (SETMASK); \
|
||||
} while ((__STREXW(val,(__IO uint32_t *)&(REG))) != 0U); \
|
||||
#define ATOMIC_MODIFY_REG(REG, CLEARMSK, SETMASK) \
|
||||
do { \
|
||||
uint32_t old_val, new_val; \
|
||||
do { \
|
||||
old_val = (REG); \
|
||||
new_val = (old_val & ~(CLEARMSK)) | (SETMASK); \
|
||||
} while (!__sync_bool_compare_and_swap(&(REG), old_val, new_val)); \
|
||||
} while(0)
|
||||
|
||||
/* Atomic 16-bit register access macro to set one or several bits */
|
||||
#define ATOMIC_SETH_BIT(REG, BIT) \
|
||||
do { \
|
||||
uint16_t val; \
|
||||
do { \
|
||||
val = __LDREXH((__IO uint16_t *)&(REG)) | (BIT); \
|
||||
} while ((__STREXH(val,(__IO uint16_t *)&(REG))) != 0U); \
|
||||
__sync_fetch_and_or((uint16_t *)&(REG), (BIT)); \
|
||||
} while(0)
|
||||
|
||||
/* Atomic 16-bit register access macro to clear one or several bits */
|
||||
#define ATOMIC_CLEARH_BIT(REG, BIT) \
|
||||
do { \
|
||||
uint16_t val; \
|
||||
do { \
|
||||
val = __LDREXH((__IO uint16_t *)&(REG)) & ~(BIT); \
|
||||
} while ((__STREXH(val,(__IO uint16_t *)&(REG))) != 0U); \
|
||||
__sync_fetch_and_and((uint16_t *)&(REG), ~(BIT)); \
|
||||
} while(0)
|
||||
|
||||
/* Atomic 16-bit register access macro to clear and set one or several bits */
|
||||
#define ATOMIC_MODIFYH_REG(REG, CLEARMSK, SETMASK) \
|
||||
#define ATOMIC_MODIFYH_REG(REG, CLEARMSK, SETMASK) \
|
||||
do { \
|
||||
uint16_t val; \
|
||||
uint16_t old_val, new_val; \
|
||||
do { \
|
||||
val = (__LDREXH((__IO uint16_t *)&(REG)) & ~(CLEARMSK)) | (SETMASK); \
|
||||
} while ((__STREXH(val,(__IO uint16_t *)&(REG))) != 0U); \
|
||||
old_val = (REG); \
|
||||
new_val = (old_val & ~(CLEARMSK)) | (SETMASK); \
|
||||
} while (!__sync_bool_compare_and_swap((uint16_t *)&(REG), old_val, new_val)); \
|
||||
} while(0)
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
@@ -167,7 +167,7 @@ typedef struct {
|
||||
unsigned fInitDone : 1; ///< флаг для выхода из потока программы МК
|
||||
|
||||
double SimTime; ///< Текущее время симуляции
|
||||
long SystemClock; ///< Счетчик тактов для симуляции системных тиков (в целочисленном формате)
|
||||
long long SystemClock; ///< Счетчик тактов для симуляции системных тиков (в целочисленном формате)
|
||||
|
||||
double SystemClockDouble; ///< Счетчик в формате double для точной симуляции системных тиков С промежуточными значений
|
||||
double sSystemClock_step; ///< Шаг тиков для их симуляции, в формате double
|
||||
|
||||
@@ -95,6 +95,8 @@ set code_PERIPH=.\MCU_STM32_Matlab\stm32_matlab_conf.c^
|
||||
.\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c^
|
||||
.\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c^
|
||||
.\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c^
|
||||
.\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c^
|
||||
.\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_usart.c^
|
||||
.\MCU_STM32_Matlab\Drivers\STM32_SIMULINK\stm32_matlab_tim.c^
|
||||
.\MCU_STM32_Matlab\Drivers\STM32_SIMULINK\stm32_matlab_adc.c
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ void app_init(void) {
|
||||
HAL_Init();
|
||||
MX_DMA_Init();
|
||||
MX_IWDG_Init();
|
||||
MX_USART3_UART_Init();
|
||||
MX_TIM1_Init();
|
||||
MX_TIM2_Init();
|
||||
MX_TIM3_Init();
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
clear all
|
||||
|
||||
IadcMax = 200;%50;
|
||||
IadcMax = 53;%200;%53;
|
||||
VadcMax = 1216;
|
||||
|
||||
Ts = 5e-6;
|
||||
Vnom = 400;
|
||||
Inom = 30;%4.2;
|
||||
Vnom = 690;
|
||||
Inom = 2;%4.2;
|
||||
Fnom = 50;
|
||||
|
||||
Temperature1 = 2.22; % 20 градусов
|
||||
Temperature2 = 2.99; % 34 градусов
|
||||
Temperatures1 = [2.22 4.22]; % 20->68 градусов
|
||||
TempTimeline1 = [0 100]; % 0 и 10 секунда
|
||||
Temperatures2 = [2.99 4.45]; % 34->80 градусов
|
||||
TempTimeline2 = [0 50]; % 0 и 5 секунда
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user