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

"Driveline" node source code More...

#include "can_library/generated/DRIVELINE.h"
#include "common/phal/can.h"
#include "common/phal/gpio.h"
#include "common/phal/rcc.h"
#include "common/phal/adc.h"
#include "common/phal/dma.h"
#include "common/freertos/freertos.h"
#include "common/heartbeat/heartbeat.h"
#include "common/utils/countof.h"
#include "common/watchdog/watchdog.h"
#include "config.h"
#include "pin_defs.h"
#include "oil_temps_table.h"

Classes

struct  raw_adc1_values_t
 
struct  raw_adc2_values_t
 
struct  raw_adc3_values_t
 
struct  raw_adc4_values_t
 

Functions

void HardFault_Handler ()
 
void shockpot_thread ()
 
void oil_temps_thread ()
 
 DEFINE_CAN_TASKS ()
 
 DEFINE_TASK (shockpot_thread, FRONT_SHOCKPOTS_PERIOD_MS, osPriorityNormal, STACK_512)
 
 DEFINE_TASK (oil_temps_thread, FRONT_OIL_TEMPS_PERIOD_MS, osPriorityNormal, STACK_512)
 
 DEFINE_WATCHDOG_TASK ()
 
 DEFINE_HEARTBEAT_TASK (nullptr)
 
int main (void)
 

Variables

GPIOInitConfig_t gpio_config []
 
ClockRateConfig_t clock_config
 
ADCInitConfig_t adc1_config
 
ADCChannelConfig_t adc1_channel_config []
 
volatile raw_adc1_values_t raw_adc1_values
 
dma_init_t adc1_dma_config = ADC1_DMA_CONT_CONFIG((uint32_t)&raw_adc1_values, sizeof(raw_adc1_values) / sizeof(uint16_t), 0b01)
 
ADCInitConfig_t adc2_config
 
ADCChannelConfig_t adc2_channel_config []
 
volatile raw_adc2_values_t raw_adc2_values
 
dma_init_t adc2_dma_config = ADC2_DMA_CONT_CONFIG((uint32_t)&raw_adc2_values, sizeof(raw_adc2_values) / sizeof(uint16_t), 0b01)
 
ADCInitConfig_t adc3_config
 
ADCChannelConfig_t adc3_channel_config []
 
volatile raw_adc3_values_t raw_adc3_values
 
dma_init_t adc3_dma_config = ADC3_DMA_CONT_CONFIG((uint32_t)&raw_adc3_values, sizeof(raw_adc3_values) / sizeof(uint16_t), 0b01)
 
ADCInitConfig_t adc4_config
 
ADCChannelConfig_t adc4_channel_config []
 
volatile raw_adc4_values_t raw_adc4_values
 
dma_init_t adc4_dma_config = ADC4_DMA_CONT_CONFIG((uint32_t)&raw_adc4_values, sizeof(raw_adc4_values) / sizeof(uint16_t), 0b01)
 
uint32_t APB1ClockRateHz
 
uint32_t APB2ClockRateHz
 
uint32_t AHBClockRateHz
 
uint32_t PLLClockRateHz
 
uint16_t left_length_scaled = 0
 
uint16_t right_length_scaled = 0
 
int16_t left_celsius_scaled = 0
 
int16_t right_celsius_scaled = 0
 

Detailed Description

"Driveline" node source code

Author
Irving Wang (irvin.nosp@m.gw@p.nosp@m.urdue.nosp@m..edu)
Anya Pokrovskaya (apokr.nosp@m.ovs@.nosp@m.purdu.nosp@m.e.ed.nosp@m.u)

Variable Documentation

◆ adc1_channel_config

ADCChannelConfig_t adc1_channel_config[]
Initial value:
= {
{.channel = OIL_TEMP_L_ADC_CH, .rank = 1, .sampling_time = ADC_CHN_SMP_CYCLES_480},
}

◆ adc1_config

ADCInitConfig_t adc1_config
Initial value:
= {
.prescaler = ADC_CLK_PRESC_2,
.resolution = ADC_RES_12_BIT,
.data_align = ADC_DATA_ALIGN_RIGHT,
.cont_conv_mode = true,
.dma_mode = ADC_DMA_CIRCULAR,
.periph = ADC1,
}

◆ adc2_channel_config

ADCChannelConfig_t adc2_channel_config[]
Initial value:
= {
{.channel = OIL_TEMP_R_ADC_CH, .rank = 1, .sampling_time = ADC_CHN_SMP_CYCLES_480},
}

◆ adc2_config

ADCInitConfig_t adc2_config
Initial value:
= {
.prescaler = ADC_CLK_PRESC_2,
.resolution = ADC_RES_12_BIT,
.data_align = ADC_DATA_ALIGN_RIGHT,
.cont_conv_mode = true,
.dma_mode = ADC_DMA_CIRCULAR,
.periph = ADC2,
}

◆ adc3_channel_config

ADCChannelConfig_t adc3_channel_config[]
Initial value:
= {
{.channel = SHOCKPOT_LEFT_ADC_CHNL, .rank = 1, .sampling_time = ADC_CHN_SMP_CYCLES_480},
}

◆ adc3_config

ADCInitConfig_t adc3_config
Initial value:
= {
.prescaler = ADC_CLK_PRESC_2,
.resolution = ADC_RES_12_BIT,
.data_align = ADC_DATA_ALIGN_RIGHT,
.cont_conv_mode = true,
.dma_mode = ADC_DMA_CIRCULAR,
.periph = ADC3,
}

◆ adc4_channel_config

ADCChannelConfig_t adc4_channel_config[]
Initial value:
= {
{.channel = SHOCKPOT_RIGHT_ADC_CHNL, .rank = 1, .sampling_time = ADC_CHN_SMP_CYCLES_480},
}

◆ adc4_config

ADCInitConfig_t adc4_config
Initial value:
= {
.prescaler = ADC_CLK_PRESC_2,
.resolution = ADC_RES_12_BIT,
.data_align = ADC_DATA_ALIGN_RIGHT,
.cont_conv_mode = true,
.dma_mode = ADC_DMA_CIRCULAR,
.periph = ADC4,
}

◆ clock_config

ClockRateConfig_t clock_config
Initial value:
= {
.clock_source = CLOCK_SOURCE_HSI,
.use_pll = false,
.system_clock_target_hz = TargetCoreClockrateHz,
.ahb_clock_target_hz = (TargetCoreClockrateHz / 1),
.apb1_clock_target_hz = (TargetCoreClockrateHz / (1)),
.apb2_clock_target_hz = (TargetCoreClockrateHz / (1)),
}

◆ gpio_config

GPIOInitConfig_t gpio_config[]
Initial value:
= {
GPIO_INIT_OUTPUT(HEARTBEAT_LED_PORT, HEARTBEAT_LED_PIN, GPIO_OUTPUT_LOW_SPEED),
GPIO_INIT_OUTPUT(ERROR_LED_PORT, ERROR_LED_PIN, GPIO_OUTPUT_LOW_SPEED),
GPIO_INIT_OUTPUT(CONNECTION_LED_PORT, CONNECTION_LED_PIN, GPIO_OUTPUT_LOW_SPEED),
GPIO_INIT_FDCAN2TX_PB6,
GPIO_INIT_FDCAN2RX_PB5,
GPIO_INIT_ANALOG(SHOCKPOT_LEFT_GPIO_PORT , SHOCKPOT_LEFT_GPIO_PIN),
GPIO_INIT_ANALOG(SHOCKPOT_RIGHT_GPIO_PORT, SHOCKPOT_RIGHT_GPIO_PIN),
GPIO_INIT_ANALOG(OIL_TEMP_L_GPIO_Port, OIL_TEMP_L_Pin),
GPIO_INIT_ANALOG(OIL_TEMP_R_GPIO_Port, OIL_TEMP_R_Pin),
}
#define GPIO_INIT_OUTPUT(gpio_bank, pin_num, ospeed_sel)
Create GPIO Init struct to intilize a GPIO pin for output.
Definition gpio.h:131
#define GPIO_INIT_ANALOG(gpio_bank, pin_num)
Create GPIO Init struct to intilize a GPIO pin for analog.
Definition gpio.h:148