Loading...
Searching...
No Matches
stm32f4xx_matlab_gpio.c
Go to the documentation of this file.
/**
**************************************************************************
* @file stm32f4xx_matlab_gpio.c
* @brief Исходный код симулятора портов.
**************************************************************************
@details
Данный файл содержит функции для симуляции портов STM32F407xx.
**************************************************************************/
#include "stm32f4xx_matlab_gpio.h"
#include "modbus.h"
/**
* @brief Запись буфера выходов S-Function из GPIO.
* @param out_buff - указатель на буфер выходов S-Function.
* @details Функция для записи буфера выходов S-Function из GPIO.
После в @ref SIM_writeOutputs() из out_buff формируются выходы S-Function.
* @attention Тело функции пишется пользователем!
*/
void GPIO_to_SFUNC(real_T* out_buff)
{
for (int i = 0; i < PORT_WIDTH; i++)
{
if (GPIOB->ODR & (1 << i))
{
out_buff[i] = 1;
}
if (GPIOD->ODR & (1 << i))
{
out_buff[PORT_WIDTH + i] = 1;
}
if (GPIOE->ODR & (1 << i))
{
out_buff[2*PORT_WIDTH + i] = 1;
}
}
}
/**
* @brief Считывание входов S-Function в МК.
* @param out_buff - указатель на буфер выходов S-Function.
* @details Функция для считывания входов S-Function в МК.
Можно абстрагироваться от считывания в GPIO и записывать напрямую в переменные МК.
* @attention Тело функции пишется пользователем!
*/
void SFUNC_to_GPIO(real_T* in)
{
// write pwm ctrl registers
for (int i = 0; i < 5; i++)
{
pwm_ctrl[i] = in[i];
}
// write pwm ctrl coils
if (in[5] > 0.5)
{
MB_Set_Coil_Local(coils_regs, COIL_PWM_DC_MODE);
}
else
{
MB_Reset_Coil_Local(coils_regs, COIL_PWM_DC_MODE);
}
if (in[6] > 0.5)
{
MB_Set_Coil_Local(coils_regs, COIL_PWM_CH_MODE);
}
else
{
MB_Reset_Coil_Local(coils_regs, COIL_PWM_CH_MODE);
}
if (in[7] > 0.5)
{
MB_Set_Coil_Local(coils_regs, COIL_PWM_PHASE_MODE);
}
else
{
MB_Reset_Coil_Local(coils_regs, COIL_PWM_PHASE_MODE);
}
}
SFUNC_to_GPIO
void SFUNC_to_GPIO(real_T *in)
Считывание входов S-Function в МК.
Definition stm32f4xx_matlab_gpio.c:49
GPIO_to_SFUNC
void GPIO_to_SFUNC(real_T *out_buff)
Запись буфера выходов S-Function из GPIO.
Definition stm32f4xx_matlab_gpio.c:20
PORT_WIDTH
#define PORT_WIDTH
width of one port
Definition mcu_wrapper_conf.h:50
stm32f4xx_matlab_gpio.h
Заголовочный файл для симулятора портов.