STM MATLAB Simulator
Loading...
Searching...
No Matches
stm32f4xx_matlab_gpio.c
Go to the documentation of this file.
1/**
2**************************************************************************
3* @file stm32f4xx_matlab_gpio.c
4* @brief Исходный код симулятора портов.
5**************************************************************************
6@details
7Данный файл содержит функции для симуляции портов STM32F407xx.
8**************************************************************************/
10#include "modbus.h"
11
12/**
13 * @brief Запись буфера выходов S-Function из GPIO.
14 * @param out_buff - указатель на буфер выходов S-Function.
15 * @details Функция для записи буфера выходов S-Function из GPIO.
16 После в @ref SIM_writeOutputs() из out_buff формируются выходы S-Function.
17
18 * @attention Тело функции пишется пользователем!
19 */
20void GPIO_to_SFUNC(real_T* out_buff)
21{
22 for (int i = 0; i < PORT_WIDTH; i++)
23 {
24 if (GPIOB->ODR & (1 << i))
25 {
26 out_buff[i] = 1;
27 }
28
29 if (GPIOD->ODR & (1 << i))
30 {
31 out_buff[PORT_WIDTH + i] = 1;
32 }
33
34 if (GPIOE->ODR & (1 << i))
35 {
36 out_buff[2*PORT_WIDTH + i] = 1;
37 }
38 }
39}
40
41/**
42 * @brief Считывание входов S-Function в МК.
43 * @param out_buff - указатель на буфер выходов S-Function.
44 * @details Функция для считывания входов S-Function в МК.
45 Можно абстрагироваться от считывания в GPIO и записывать напрямую в переменные МК.
46
47 * @attention Тело функции пишется пользователем!
48 */
49void SFUNC_to_GPIO(real_T* in)
50{
51 // write pwm ctrl registers
52 for (int i = 0; i < 5; i++)
53 {
54 pwm_ctrl[i] = in[i];
55 }
56 // write pwm ctrl coils
57 if (in[5] > 0.5)
58 {
59 MB_Set_Coil_Local(coils_regs, COIL_PWM_DC_MODE);
60 }
61 else
62 {
63 MB_Reset_Coil_Local(coils_regs, COIL_PWM_DC_MODE);
64 }
65 if (in[6] > 0.5)
66 {
67 MB_Set_Coil_Local(coils_regs, COIL_PWM_CH_MODE);
68 }
69 else
70 {
71 MB_Reset_Coil_Local(coils_regs, COIL_PWM_CH_MODE);
72 }
73 if (in[7] > 0.5)
74 {
75 MB_Set_Coil_Local(coils_regs, COIL_PWM_PHASE_MODE);
76 }
77 else
78 {
79 MB_Reset_Coil_Local(coils_regs, COIL_PWM_PHASE_MODE);
80 }
81}
void SFUNC_to_GPIO(real_T *in)
Считывание входов S-Function в МК.
void GPIO_to_SFUNC(real_T *out_buff)
Запись буфера выходов S-Function из GPIO.
#define PORT_WIDTH
width of one port
Заголовочный файл для симулятора портов.