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

"PDU" node source code More...

#include "common/can_library/faults_common.h"
#include "common/common_defs/common_defs.h"
#include "common/freertos/freertos.h"
#include "common/phal/adc.h"
#include "common/phal/can.h"
#include "common/phal/dma.h"
#include "common/phal/gpio.h"
#include "common/phal/rcc.h"
#include "common/heartbeat/heartbeat.h"
#include "auto_switch.h"
#include "common/can_library/generated/PDU.h"
#include "cooling.h"
#include "fan_control.h"
#include "flow_rate.h"
#include "led.h"
#include "main.h"

Macros

#define TargetCoreClockrateHz   16'000'000
 

Functions

void HardFault_Handler ()
 
void send_iv_readings ()
 
void send_flowrates ()
 
void sparkle_leds ()
 
 DEFINE_TASK (CAN_rx_update, 0, osPriorityHigh, STACK_2048)
 
 DEFINE_TASK (CAN_tx_update, 5, osPriorityHigh, STACK_1024)
 
 DEFINE_TASK (autoSwitchPeriodic, 15, osPriorityNormal, STACK_512)
 
 DEFINE_TASK (update_cooling_periodic, 100, osPriorityNormal, STACK_1024)
 
 DEFINE_TASK (LED_periodic, 500, osPriorityLow, STACK_512)
 
 DEFINE_TASK (send_iv_readings, 500, osPriorityLow, STACK_512)
 
 DEFINE_TASK (checkSwitchFaults, 100, osPriorityLow, STACK_512)
 
 DEFINE_TASK (send_flowrates, 200, osPriorityLow, STACK_256)
 
 DEFINE_TASK (fault_library_periodic, 100, osPriorityLow, STACK_1024)
 
 DEFINE_HEARTBEAT_TASK (sparkle_leds)
 
int main ()
 
void CAN1_RX0_IRQHandler ()
 

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

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},
}

◆ 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_config

dma_init_t adc_dma_config
Initial value:
= ADC1_DMA_CONT_CONFIG((uint32_t)&adc_readings,
sizeof(adc_readings) / sizeof(adc_readings.v24_vs),
0b01)

◆ 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)),
}

◆ 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
}