Siphon Regulator 1.0
Nanosattelite attitude determination and control system.
Loading...
Searching...
No Matches
main.h
Go to the documentation of this file.
1/* USER CODE BEGIN Header */
2/*
3 * Siphon Regulator library
4 * (c) Antonin Putala 2026
5 *
6 * Developed using STM32CubeIDE
7 * Tested on BluePill board and STM32F103C8T6, 32 MHz.
8 */
9
39/* USER CODE END Header */
40
59/* Define to prevent recursive inclusion -------------------------------------*/
60#ifndef __MAIN_H
61#define __MAIN_H
62
63#ifdef __cplusplus
64extern "C" {
65#endif
66
67/* Includes ------------------------------------------------------------------*/
68#include "stm32f1xx_hal.h"
69
70/* Private includes ----------------------------------------------------------*/
71/* USER CODE BEGIN Includes */
72
73/* USER CODE END Includes */
74
75/* Exported types ------------------------------------------------------------*/
76/* USER CODE BEGIN ET */
78typedef struct {
79 float acc[3];
80 float gyr[3];
81 float mag[3];
82 float pos[3];
84
86typedef struct {
87 uint8_t angle;
88 uint8_t time_r;
89 uint8_t time_l;
90 uint8_t time_a;
91 int16_t home;
93/* USER CODE END ET */
94
95/* Exported constants --------------------------------------------------------*/
96/* USER CODE BEGIN EC */
97
98/* USER CODE END EC */
99
100/* Exported macro ------------------------------------------------------------*/
101/* USER CODE BEGIN EM */
103#define _read_BV(reg, bit) reg & (1 << bit)
104
106#define _set_BV(reg, bit) reg = reg | (1 << bit)
107
109#define _clr_BV(reg, bit) reg = reg & ~(1 << bit)
110
112#define _tog_BV(reg, bit) reg = reg ^ (1 << bit)
113
118#define _clr_time(reg) reg = reg & ~0x00FFFF00
119
122#define _set_time(reg, time_l, time_r) reg = reg | (time_r << 8) | (time_l << 16)
123
125#define _read_time_r(reg) ((reg & 0x0000FF00) >> 8)
126
128#define _read_time_l(reg) ((reg & 0x00FF0000) >> 16)
129
133#define _float2int(data_fl) ((int16_t)(data_fl*1000))
134
135/* USER CODE END EM */
136
137/* Exported functions prototypes ---------------------------------------------*/
138void Error_Handler(void);
139
140/* USER CODE BEGIN EFP */
141
142/* USER CODE END EFP */
143
144/* Private defines -----------------------------------------------------------*/
145#define BOARD_LED_Pin GPIO_PIN_13
146#define BOARD_LED_GPIO_Port GPIOC
147#define VALVE_R_Pin GPIO_PIN_2
148#define VALVE_R_GPIO_Port GPIOA
149#define VALVE_L_Pin GPIO_PIN_3
150#define VALVE_L_GPIO_Port GPIOA
151#define LED_R_Pin GPIO_PIN_5
152#define LED_R_GPIO_Port GPIOA
153#define LED_Y_Pin GPIO_PIN_6
154#define LED_Y_GPIO_Port GPIOA
155#define LED_G_Pin GPIO_PIN_7
156#define LED_G_GPIO_Port GPIOA
157#define SPI2_CS_Pin GPIO_PIN_9
158#define SPI2_CS_GPIO_Port GPIOB
159
160/* USER CODE BEGIN Private defines */
162#define RUN_BIT 0
163
165#define DIR_BIT 1
166
168#define PULSE_BIT 2
169
171#define TURN_BIT 3
172
174#define REG_BIT 4
175
177#define RETURN_BIT 5
178
180#define HOME_BIT 7
181
183#define AUTOREAD_BIT 24
184
186#define AUTOREAD_ACC_BIT 25
187
189#define AUTOREAD_GYR_BIT 26
190
192#define AUTOREAD_POS_BIT 27
193
195#define PULSE_REPRE 10 //
196
197
198/* Macros */
200#define _read_valve(reg) reg & ((1 << RUN_BIT) | (1 << TURN_BIT) | (1 << PULSE_BIT) | (1 << HOME_BIT) | (1 << REG_BIT) | (1 << RETURN_BIT))
201
202/* Calibration constant */
204#define CAL_MUL ((360.0f/328.0f)*(360.0f/349.0f))
205
206/* Reserved */
208#define CMD0_BIT 28
209
211#define CMD1_BIT 29
212
214#define CMD2_BIT 30
215
217#define CMD3_BIT 31
218/* USER CODE END Private defines */
219
220#ifdef __cplusplus
221}
222#endif
223
224#endif /* __MAIN_H */
void Error_Handler(void)
This function is executed in case of error occurrence.
Definition main.c:379
uint8_t time_r
Time [10*ms], right valve is open.
Definition main.h:88
uint8_t angle
Angle [deg], cube rotate after turn cmd.
Definition main.h:87
int16_t home
Angle [deg], default orientation.
Definition main.h:91
uint8_t time_l
Time [10*ms], left valve is open.
Definition main.h:89
uint8_t time_a
Period [100*ms], sensor report will be sended.
Definition main.h:90