mik32_blink.c 5.99 KiB
/* Code generated by Engee
 * Model name: mik32_blink.engee
 * Code generator: release-1.1.3
 * Date: Thu Oct  3 07:47:12 2024
 */
#include "stdint.h"
#include "math.h"
#include "mik32_hal_pcc.h"
#include "mik32_hal_gpio.h"
#include "mik32_blink.h"
/* Block states */
Ext_mik32_blink_S mik32_blink_S;
typedef struct systemClockConfig_cfunc_symbols_t {
	uint8_t seq;
} systemClockConfig_cfunc_symbols_t;
typedef struct systemClockConfig_cfunc_params_t {
	bool _;
} systemClockConfig_cfunc_params_t;
systemClockConfig_cfunc_params_t systemClockConfig_cfunc_params = {
	false
static void systemClockConfig_cfunc_init() {
	/* Этот код вызывается один раз при инициализации модели */
	#ifdef MIK32V2
	    // Настройка подсистемы тактирования и монитора частоты МК
	    PCC_InitTypeDef PCC_OscInit = {0};
	    PCC_OscInit.OscillatorEnable = PCC_OSCILLATORTYPE_ALL;
	    PCC_OscInit.FreqMon.OscillatorSystem = PCC_OSCILLATORTYPE_OSC32M;
	    PCC_OscInit.FreqMon.ForceOscSys = PCC_FORCE_OSC_SYS_UNFIXED;
	    PCC_OscInit.FreqMon.Force32KClk = PCC_FREQ_MONITOR_SOURCE_OSC32K;
	    PCC_OscInit.AHBDivider = 0;
	    PCC_OscInit.APBMDivider = 0;
	    PCC_OscInit.APBPDivider = 0;
	    PCC_OscInit.HSI32MCalibrationValue = 128;
	    PCC_OscInit.LSI32KCalibrationValue = 128;
	    PCC_OscInit.RTCClockSelection = PCC_RTC_CLOCK_SOURCE_AUTO;
	    PCC_OscInit.RTCClockCPUSelection = PCC_CPU_RTC_CLOCK_SOURCE_OSC32K;
	    HAL_PCC_Config(&PCC_OscInit);
	#else
	#endif
static void systemClockConfig_cfunc(systemClockConfig_cfunc_symbols_t * cfunc_symbols, systemClockConfig_cfunc_params_t * cfunc_params) {
	uint8_t seq;
	/* Этот код вызывается на каждом шаге расчета модели */
	#ifdef MIK32V2
	#else
	#endif
	cfunc_symbols->seq = seq;
static void systemClockConfig_cfunc_term() {
	/* Этот код вызывается один раз при остановке модели */
	#ifdef MIK32V2
	#else
	#endif
typedef struct HAL_GPIO_WritePin_9_cfunc_symbols_t {
	uint8_t seq;
	uint8_t state;
} HAL_GPIO_WritePin_9_cfunc_symbols_t;
typedef struct HAL_GPIO_WritePin_9_cfunc_params_t {
	bool _;
} HAL_GPIO_WritePin_9_cfunc_params_t;
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
HAL_GPIO_WritePin_9_cfunc_params_t HAL_GPIO_WritePin_9_cfunc_params = { false }; static void HAL_GPIO_WritePin_9_cfunc_init() { /* Этот код вызывается один раз при инициализации модели */ #ifdef MIK32V2 GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pull = HAL_GPIO_PULL_NONE; GPIO_InitStruct.Mode = HAL_GPIO_MODE_GPIO_OUTPUT; // включение тактирования GPIO_0 __HAL_PCC_GPIO_0_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_9; HAL_GPIO_Init(GPIO_0, &GPIO_InitStruct); #else #endif } static void HAL_GPIO_WritePin_9_cfunc(HAL_GPIO_WritePin_9_cfunc_symbols_t * cfunc_symbols, HAL_GPIO_WritePin_9_cfunc_params_t * cfunc_params) { uint8_t seq = cfunc_symbols->seq; uint8_t state = cfunc_symbols->state; /* Этот код вызывается на каждом шаге расчета модели */ #ifdef MIK32V2 HAL_GPIO_WritePin(GPIO_0, GPIO_PIN_9, !state); #else #endif } static void HAL_GPIO_WritePin_9_cfunc_term() { /* Этот код вызывается один раз при остановке модели */ #ifdef MIK32V2 #else #endif } /* Model initialize function */ void mik32_blink_init() { systemClockConfig_cfunc_init(); /* InitializeConditions for UnitDelay: /Sequence/LimitedCounter/UnitDelay */ mik32_blink_S.UnitDelay_state = 0.0; HAL_GPIO_WritePin_9_cfunc_init(); } /* Model terminate function */ void mik32_blink_term() { systemClockConfig_cfunc_term(); HAL_GPIO_WritePin_9_cfunc_term(); } /* Model step function */ void mik32_blink_step() { const double Vector[116] = {1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0}; uint8_t UnitDelay; double Output; double Sum; uint8_t DataTypeConversion_1; double Switch; /* Output for UnitDelay: /Sequence/LimitedCounter/UnitDelay */ UnitDelay = mik32_blink_S.UnitDelay_state; /* CFunction: /systemClockConfig incorporates: */ systemClockConfig_cfunc_symbols_t systemClockConfig_cfunc_symbols = { }; systemClockConfig_cfunc(&systemClockConfig_cfunc_symbols, &systemClockConfig_cfunc_params); /* MultiPortSwitch: /Sequence/Output incorporates: * UnitDelay: /Sequence/LimitedCounter/UnitDelay * Constant: /Sequence/Vector */
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
Output = Vector[(int32_t)UnitDelay]; /* Sum: /Sequence/LimitedCounter/Increment Real-World Value/Sum incorporates: * UnitDelay: /Sequence/LimitedCounter/UnitDelay * Constant: /Sequence/LimitedCounter/Increment Real-World Value/Constant */ Sum = UnitDelay + 1; /* DataTypeConversion: /Data Type Conversion-1 incorporates: * MultiPortSwitch: /Sequence/Output */ DataTypeConversion_1 = (uint8_t)Output; /* CFunction: /HAL_GPIO_WritePin_9 incorporates: * CFunction: /systemClockConfig * DataTypeConversion: /Data Type Conversion-1 */ HAL_GPIO_WritePin_9_cfunc_symbols_t HAL_GPIO_WritePin_9_cfunc_symbols = { systemClockConfig_cfunc_symbols.seq, DataTypeConversion_1, }; HAL_GPIO_WritePin_9_cfunc(&HAL_GPIO_WritePin_9_cfunc_symbols, &HAL_GPIO_WritePin_9_cfunc_params); /* Switch: /Sequence/LimitedCounter/Wrap To Zero/Switch incorporates: * Constant: /Sequence/LimitedCounter/Wrap To Zero/Initial Condition * Sum: /Sequence/LimitedCounter/Increment Real-World Value/Sum * Sum: /Sequence/LimitedCounter/Increment Real-World Value/Sum */ if (Sum > 115) { Switch = 0; } else { Switch = Sum; } /* End of Switch: /Sequence/LimitedCounter/Wrap To Zero/Switch */ /* Update for UnitDelay: /Sequence/LimitedCounter/UnitDelay */ mik32_blink_S.UnitDelay_state = Switch; }