77 vTaskDelay(pdMS_TO_TICKS(500));
86 xTaskEnableGroup = xEventGroupCreate();
87 xSystemStatusGroup = xEventGroupCreate();
88 xMsgReadyGroup = xEventGroupCreate();
89 xEventGroupSetBits(xMsgReadyGroup, GROUP_MESSAGE_READY_LORA);
92 xUsbTxBuff = xMessageBufferCreate(USB_TX_SIZE);
93 xUsbRxBuff = xStreamBufferCreate(USB_RX_SIZE, 1);
94 xGpsRxBuff = xStreamBufferCreate(GPS_RX_SIZE, 1);
96 xUsbMutex = xSemaphoreCreateMutex();
99 xLoRaTxBuff = xMessageBufferCreate(LORA_BUFF_SIZE);
108 RCC_START_PERIPHERAL(AHB1, GPIOA);
109 RCC_START_PERIPHERAL(AHB1, GPIOB);
110 RCC_START_PERIPHERAL(AHB1, GPIOC);
111 RCC_START_PERIPHERAL(AHB1, GPIOD);
112 RCC_START_PERIPHERAL(AHB1, GPIOE);
113 RCC_START_PERIPHERAL(AHB1, GPIOF);
114 RCC_START_PERIPHERAL(APB2, SPI1);
115 RCC_START_PERIPHERAL(APB1, SPI3);
116 RCC_START_PERIPHERAL(APB2, SPI4);
117 RCC_START_PERIPHERAL(APB1, TIM6);
118 RCC_START_PERIPHERAL(APB1, USART3);
119 RCC_START_PERIPHERAL(APB2, USART6);
120 RCC_START_PERIPHERAL(APB2, SYSCFG);
135 static StateHandle_t __attribute__((section(
".state_mem"), unused)) mem;
137 memcpy(mem.name,
"Memory", STATE_NAME_LENGTH);
139 uint8_t buff[MEM_BUFF_SIZE];
140 MemBuff_init(&_mem, buff, MEM_BUFF_SIZE, FLASH_PAGE_SIZE);
151 static StateHandle_t __attribute__((section(
".state_tilt"), unused)) tilt;
152 static float _tilt = 0.0f;
154 memcpy(tilt.name,
"Tilt", STATE_NAME_LENGTH);
157 static StateHandle_t __attribute__((section(
".state_cosine"), unused)) cosine;
158 static float _cosine = 0.0f;
159 cosine.state = &_cosine;
160 memcpy(cosine.name,
"Cosine", STATE_NAME_LENGTH);
163 static StateHandle_t __attribute__((section(
".state_altitude"), unused)) altitude;
164 static float _altitude = 0.0f;
165 altitude.state = &_altitude;
166 memcpy(altitude.name,
"Altitude", STATE_NAME_LENGTH);
169 static StateHandle_t __attribute__((section(
".state_velocity"), unused)) velocity;
170 static float _velocity = 0.0f;
171 velocity.state = &_velocity;
172 memcpy(velocity.name,
"Velocity", STATE_NAME_LENGTH);
175 static StateHandle_t __attribute__((section(
".state_flightState"), unused)) flightState;
176 static enum State _flightState = PRELAUNCH;
177 flightState.state = &_flightState;
178 memcpy(flightState.name,
"FlightState", STATE_NAME_LENGTH);
181 static StateHandle_t __attribute__((section(
".state_qRot"), unused)) qRot;
182 static Quaternion _qRot;
183 Quaternion_init(&_qRot);
185 memcpy(qRot.name,
"RotationQuaternion", STATE_NAME_LENGTH);
188 static StateHandle_t __attribute__((section(
".state_vAttitude"), unused)) vAttitude;
189 static float _vAttitude[3] = {0, 0, 1};
190 vAttitude.state = _vAttitude;
191 memcpy(vAttitude.name,
"AttitudeVector", STATE_NAME_LENGTH);
194 static StateHandle_t __attribute__((section(
".state_vLaunch"), unused)) vLaunch;
195 static float _vLaunch[3] = {0, 0, 1};
196 vLaunch.state = _vLaunch;
197 memcpy(vLaunch.name,
"LaunchVector", STATE_NAME_LENGTH);
200 static StateHandle_t __attribute__((section(
".state_avgVel"), unused)) avgVel;
201 static SlidingWindow _avgVel = {};
202 avgVel.state = &_avgVel;
203 memcpy(avgVel.name,
"AvgVelBuffer", STATE_NAME_LENGTH);
206 static StateHandle_t __attribute__((section(
".state_avgPress"), unused)) avgPress;
207 static SlidingWindow _avgPress = {};
208 avgPress.state = &_avgPress;
209 memcpy(avgPress.name,
"AvgPressBuffer", STATE_NAME_LENGTH);
212 float avgPressBuff[AVG_BUFF_SIZE];
213 SlidingWindow_init(avgPress.state, avgPressBuff, AVG_BUFF_SIZE);
216 float avgVelBuff[AVG_BUFF_SIZE];
217 SlidingWindow_init(avgVel.state, avgVelBuff, AVG_BUFF_SIZE);
230 xTaskCreate(vHDataAcquisition,
"HDataAcq", 512, &_mem, configMAX_PRIORITIES - 2,
TaskList_new());
231 xTaskCreate(vLDataAcquisition,
"LDataAcq", 512, &_mem, configMAX_PRIORITIES - 3,
TaskList_new());
232 xTaskCreate(vStateUpdate,
"StateUpdate", 512, NULL, configMAX_PRIORITIES - 4,
TaskList_new());
233 xTaskCreate(vFlashBuffer,
"FlashData", 512, &_mem, configMAX_PRIORITIES - 1,
TaskList_new());
234 xTaskCreate(vUsbTransmit,
"UsbTx", 256, NULL, configMAX_PRIORITIES - 6,
TaskList_new());
235 xTaskCreate(vUsbReceive,
"UsbRx", 256, &shell, configMAX_PRIORITIES - 6,
TaskList_new());
236 xTaskCreate(vIdle,
"Idle", 256, &_mem, tskIDLE_PRIORITY,
TaskList_new());
248 xTraceEnable(TRC_START);
void vSystemInit(void *pvParameters)
Initialisation of RTOS tasks.
void configure_interrupts()