PER Firmware
Loading...
Searching...
No Matches
main.c File Reference

"PDU" node source code More...

#include "main.h"
#include "can_library/faults_common.h"
#include "can_library/generated/PDU.h"
#include "common/rtos/rtos.h"
#include "common/heartbeat/heartbeat.h"
#include "common/phal_F4/adc/adc.h"
#include "common/phal_F4/can/can.h"
#include "common/phal_F4/dma/dma.h"
#include "common/phal_F4/gpio/gpio.h"
#include "common/phal_F4/rcc/rcc.h"
#include "common/utils/countof.h"
#include "common/watchdog/watchdog.h"
#include "cooling_fsm.h"
#include "faults.h"
#include "led.h"
#include "state.h"
#include "switches.h"
#include "telemetry.h"
Include dependency graph for main.c:

Macros

#define TargetCoreClockrateHz   16'000'000
 

Functions

void HardFault_Handler ()
 
static void heartbeat_led_sweep (void)
 
static void tsal_delayed_start ()
 
 DEFINE_CAN_TASKS ()
 
 RTOS_DEFINE_TASK (switches_periodic, 15, TASK_PRIORITY_NORMAL, STACK_512)
 
 RTOS_DEFINE_TASK (tsal_delayed_start, 1000, TASK_PRIORITY_LOW, STACK_512)
 
 RTOS_DEFINE_TASK (cooling_fsm_periodic, COOLING_FSM_PERIOD_MS, TASK_PRIORITY_NORMAL, STACK_1024)
 
 RTOS_DEFINE_TASK (LED_periodic, 500, TASK_PRIORITY_LOW, STACK_512)
 
 RTOS_DEFINE_TASK (faults_periodic, 100, TASK_PRIORITY_LOW, STACK_512)
 
 RTOS_DEFINE_TASK (fault_library_periodic, 100, TASK_PRIORITY_LOW, STACK_1024)
 
 RTOS_DEFINE_TASK (telemetry_10hz, 100, TASK_PRIORITY_LOW, STACK_1024)
 
 DEFINE_WATCHDOG_TASK ()
 
 DEFINE_HEARTBEAT_TASK (heartbeat_led_sweep)
 
int main ()
 

Variables

GPIOInitConfig_t gpio_config []
 
ADCInitConfig_t adc_config
 
dma_init_t spi_rx_dma_config = SPI1_RXDMA_CONT_CONFIG(NULL, 2)
 
dma_init_t spi_tx_dma_config = SPI1_TXDMA_CONT_CONFIG(NULL, 1)
 
SPI_InitConfig_t spi_config
 
volatile ADCReadings_t adc_readings
 
ADCChannelConfig_t adc_channel_config []
 
dma_init_t adc_dma_config
 
ClockRateConfig_t clock_config
 
uint32_t APB1ClockRateHz
 
uint32_t APB2ClockRateHz
 
uint32_t AHBClockRateHz
 
uint32_t PLLClockRateHz
 

Detailed Description

Macro Definition Documentation

◆ TargetCoreClockrateHz

#define TargetCoreClockrateHz   16'000'000

Function Documentation

◆ DEFINE_CAN_TASKS()

DEFINE_CAN_TASKS ( )

◆ DEFINE_HEARTBEAT_TASK()

DEFINE_HEARTBEAT_TASK ( heartbeat_led_sweep )

◆ DEFINE_WATCHDOG_TASK()

DEFINE_WATCHDOG_TASK ( )

◆ HardFault_Handler()

void HardFault_Handler ( void )

◆ heartbeat_led_sweep()

static void heartbeat_led_sweep ( void )
static
Here is the call graph for this function:

◆ main()

int main ( void )
Here is the call graph for this function:

◆ RTOS_DEFINE_TASK() [1/7]

◆ RTOS_DEFINE_TASK() [2/7]

RTOS_DEFINE_TASK ( fault_library_periodic ,
100 ,
TASK_PRIORITY_LOW ,
STACK_1024  )

◆ RTOS_DEFINE_TASK() [3/7]

RTOS_DEFINE_TASK ( faults_periodic ,
100 ,
TASK_PRIORITY_LOW ,
STACK_512  )

◆ RTOS_DEFINE_TASK() [4/7]

RTOS_DEFINE_TASK ( LED_periodic ,
500 ,
TASK_PRIORITY_LOW ,
STACK_512  )

◆ RTOS_DEFINE_TASK() [5/7]

RTOS_DEFINE_TASK ( switches_periodic ,
15 ,
TASK_PRIORITY_NORMAL ,
STACK_512  )

◆ RTOS_DEFINE_TASK() [6/7]

RTOS_DEFINE_TASK ( telemetry_10hz ,
100 ,
TASK_PRIORITY_LOW ,
STACK_1024  )

◆ RTOS_DEFINE_TASK() [7/7]

RTOS_DEFINE_TASK ( tsal_delayed_start ,
1000 ,
TASK_PRIORITY_LOW ,
STACK_512  )

◆ tsal_delayed_start()

static void tsal_delayed_start ( )
static
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ adc_channel_config

ADCChannelConfig_t adc_channel_config[]
Initial value:
= {
{.channel = PUMP_1_IMON_ADC_CHNL, .rank = 1, .sampling_time = ADC_CHN_SMP_CYCLES_480},
{.channel = PUMP_2_IMON_ADC_CHNL, .rank = 2, .sampling_time = ADC_CHN_SMP_CYCLES_480},
{.channel = HXFAN_IMON_ADC_CHNL, .rank = 3, .sampling_time = ADC_CHN_SMP_CYCLES_480},
{.channel = SDC_IMON_ADC_CHNL, .rank = 4, .sampling_time = ADC_CHN_SMP_CYCLES_480},
{.channel = DLFR_CS_ADC_CHNL, .rank = 5, .sampling_time = ADC_CHN_SMP_CYCLES_480},
{.channel = DLBK_CS_ADC_CHNL, .rank = 6, .sampling_time = ADC_CHN_SMP_CYCLES_480},
{.channel = MAIN_CS_ADC_CHNL, .rank = 7, .sampling_time = ADC_CHN_SMP_CYCLES_480},
{.channel = DASH_CS_ADC_CHNL, .rank = 8, .sampling_time = ADC_CHN_SMP_CYCLES_480},
{.channel = ABOX_CS_ADC_CHNL, .rank = 9, .sampling_time = ADC_CHN_SMP_CYCLES_480},
{.channel = DAQ_IMON_ADC_CHNL, .rank = 10, .sampling_time = ADC_CHN_SMP_CYCLES_480},
{.channel = V24_VS_ADC_CHNL, .rank = 11, .sampling_time = ADC_CHN_SMP_CYCLES_480},
{.channel = V24_CS_ADC_CHNL, .rank = 12, .sampling_time = ADC_CHN_SMP_CYCLES_480},
{.channel = V5_VS_ADC_CHNL, .rank = 13, .sampling_time = ADC_CHN_SMP_CYCLES_480},
{.channel = V5_CS_ADC_CHNL, .rank = 14, .sampling_time = ADC_CHN_SMP_CYCLES_480},
{.channel = V3V3_VS_ADC_CHNL, .rank = 15, .sampling_time = ADC_CHN_SMP_CYCLES_480},
{.channel = INTERNAL_THERM_ADC_CHNL, .rank = 16, .sampling_time = ADC_CHN_SMP_CYCLES_480},
{.channel = MUX_OUT_ADC_CHNL, .rank = 17, .sampling_time = ADC_CHN_SMP_CYCLES_480},
}
#define MUX_OUT_ADC_CHNL
Definition main.h:236
#define V24_CS_ADC_CHNL
Definition main.h:240
#define V3V3_VS_ADC_CHNL
Definition main.h:250
#define INTERNAL_THERM_ADC_CHNL
Definition main.h:255
#define MAIN_CS_ADC_CHNL
Definition main.h:183
#define V5_VS_ADC_CHNL
Definition main.h:247
#define PUMP_2_IMON_ADC_CHNL
Definition main.h:131
#define SDC_IMON_ADC_CHNL
Definition main.h:143
#define DASH_CS_ADC_CHNL
Definition main.h:190
#define V5_CS_ADC_CHNL
Definition main.h:243
#define V24_VS_ADC_CHNL
Definition main.h:234
#define DAQ_IMON_ADC_CHNL
Definition main.h:254
#define ABOX_CS_ADC_CHNL
Definition main.h:197
#define DLBK_CS_ADC_CHNL
Definition main.h:164
#define PUMP_1_IMON_ADC_CHNL
Definition main.h:125
#define DLFR_CS_ADC_CHNL
Definition main.h:161
#define HXFAN_IMON_ADC_CHNL
Definition main.h:138
@ ADC_CHN_SMP_CYCLES_480
Definition adc.h:56

◆ adc_config

ADCInitConfig_t adc_config
Initial value:
= {
.clock_prescaler = ADC_CLK_PRESC_6,
.resolution = ADC_RES_12_BIT,
.data_align = ADC_DATA_ALIGN_RIGHT,
.cont_conv_mode = true,
.adc_number = 1,
.dma_mode = ADC_DMA_CIRCULAR
}
@ ADC_DMA_CIRCULAR
Definition adc.h:31
@ ADC_RES_12_BIT
Definition adc.h:15
@ ADC_DATA_ALIGN_RIGHT
Definition adc.h:35
@ ADC_CLK_PRESC_6
Definition adc.h:24

◆ adc_dma_config

dma_init_t adc_dma_config
Initial value:
sizeof(adc_readings) / sizeof(adc_readings.v24_vs),
0b01)
volatile ADCReadings_t adc_readings
Definition main.c:189
#define ADC1_DMA_CONT_CONFIG(mem_addr_, tx_size_, priority_)
Definition adc.h:66

◆ adc_readings

volatile ADCReadings_t adc_readings

◆ AHBClockRateHz

uint32_t AHBClockRateHz
extern

◆ APB1ClockRateHz

uint32_t APB1ClockRateHz
extern

◆ APB2ClockRateHz

uint32_t APB2ClockRateHz
extern

◆ clock_config

ClockRateConfig_t clock_config
Initial value:
= {
.clock_source = CLOCK_SOURCE_HSE,
.use_pll = false,
.vco_output_rate_target_hz = 160'000'000,
.pll_src = PLL_SRC_HSE,
.system_clock_target_hz = TargetCoreClockrateHz,
.ahb_clock_target_hz = (TargetCoreClockrateHz / 1),
.apb1_clock_target_hz = (TargetCoreClockrateHz / (1)),
.apb2_clock_target_hz = (TargetCoreClockrateHz / (1)),
}
#define TargetCoreClockrateHz
Definition main.c:71
@ CLOCK_SOURCE_HSE
Definition rcc.h:65
@ PLL_SRC_HSE
Definition rcc.h:43

◆ gpio_config

GPIOInitConfig_t gpio_config[]

◆ PLLClockRateHz

uint32_t PLLClockRateHz
extern

◆ spi_config

SPI_InitConfig_t spi_config
Initial value:
= {
.data_len = 8,
.nss_sw = false,
.rx_dma_cfg = &spi_rx_dma_config,
.tx_dma_cfg = &spi_tx_dma_config,
.periph = SPI1
}
dma_init_t spi_rx_dma_config
Definition main.c:84
dma_init_t spi_tx_dma_config
Definition main.c:85
DMA_TypeDef * periph
Definition dma.h:35

◆ spi_rx_dma_config

dma_init_t spi_rx_dma_config = SPI1_RXDMA_CONT_CONFIG(NULL, 2)

◆ spi_tx_dma_config

dma_init_t spi_tx_dma_config = SPI1_TXDMA_CONT_CONFIG(NULL, 1)