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

"Dashboard" 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/phal/usart.h"
#include "common/strbuf/strbuf.h"
#include "common/heartbeat/heartbeat.h"
#include "common/can_library/generated/DASHBOARD.h"
#include "lcd.h"
#include "main.h"
#include "pedals.h"

Functions

void LCD_tx_update ()
 Called periodically to send commands to the Nextion LCD display via USART.
 
void config_button_irqs ()
 
void driver_interface_periodic ()
 Processes dashboard button flags and triggers corresponding actions.
 
void send_version ()
 
void LCD_init (uint32_t baud_rate)
 
void sweep_external_leds ()
 
void service_start_button ()
 
void HardFault_Handler ()
 
 ALLOCATE_STRBUF (lcd_tx_buf, 2048)
 
 DEFINE_TASK (pedalsPeriodic, PEDALS_PERIOD_MS, osPriorityHigh, STACK_1024)
 
 DEFINE_TASK (CAN_rx_update, 0, osPriorityHigh, STACK_2048)
 
 DEFINE_TASK (CAN_tx_update, 2, osPriorityNormal, STACK_2048)
 
 DEFINE_TASK (fault_library_periodic, DASHBOARD_FAULT_SYNC_PERIOD_MS, osPriorityNormal, STACK_1024)
 
 DEFINE_TASK (updateTelemetryPages, 100, osPriorityNormal, STACK_1024)
 
 DEFINE_TASK (service_start_button, START_BUTTON_PERIOD_MS, osPriorityLow, STACK_512)
 
 DEFINE_TASK (driver_interface_periodic, 50, osPriorityLow, STACK_1024)
 
 DEFINE_TASK (LCD_tx_update, 20, osPriorityLow, STACK_512)
 
 DEFINE_HEARTBEAT_TASK (sweep_external_leds)
 
int main (void)
 
void EXTI9_5_IRQHandler ()
 
void EXTI15_10_IRQHandler ()
 

Variables

GPIOInitConfig_t gpio_config []
 
volatile raw_adc_values_t raw_adc_values
 
ADCInitConfig_t adc_config
 
ADCChannelConfig_t adc_channel_config []
 
dma_init_t adc_dma_config
 
dma_init_t usart_tx_dma_config = USART1_TXDMA_CONT_CONFIG(NULL, 1)
 
dma_init_t usart_rx_dma_config = USART1_RXDMA_CONT_CONFIG(NULL, 2)
 
usart_init_t lcd
 
ClockRateConfig_t clock_config
 
uint32_t APB1ClockRateHz
 
uint32_t APB2ClockRateHz
 
uint32_t AHBClockRateHz
 
uint32_t PLLClockRateHz
 
page_t curr_page
 
volatile dashboard_input_state_t input_state = {0}
 
bool start_button_pressed = false
 

Detailed Description

Function Documentation

◆ driver_interface_periodic()

void driver_interface_periodic ( )

Processes dashboard button flags and triggers corresponding actions.

Meant to be called periodically.

Variable Documentation

◆ adc_channel_config

ADCChannelConfig_t adc_channel_config[]
Initial value:
= {
{.channel = THTL_1_ADC_CHNL, .rank = 1, .sampling_time = ADC_CHN_SMP_CYCLES_480},
{.channel = THTL_2_ADC_CHNL, .rank = 2, .sampling_time = ADC_CHN_SMP_CYCLES_480},
{.channel = BRK_1_ADC_CHNL, .rank = 3, .sampling_time = ADC_CHN_SMP_CYCLES_480},
{.channel = BRK_2_ADC_CHNL, .rank = 4, .sampling_time = ADC_CHN_SMP_CYCLES_480},
{.channel = BRAKE1_PRESSURE_ADC_CHANNEL, .rank = 5, .sampling_time = ADC_CHN_SMP_CYCLES_480},
{.channel = BRAKE2_PRESSURE_ADC_CHANNEL, .rank = 6, .sampling_time = ADC_CHN_SMP_CYCLES_480}
}

◆ adc_config

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

◆ adc_dma_config

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

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

◆ lcd

Initial value:
= {
.baud_rate = LCD_BAUD_RATE,
.word_length = WORD_8,
.stop_bits = SB_ONE,
.parity = PT_NONE,
.hw_flow_ctl = HW_DISABLE,
.ovsample = OV_16,
.obsample = OB_DISABLE,
.periph = USART1,
.wake_addr = false,
.usart_active_num = USART1_ACTIVE_IDX,
.tx_dma_cfg = &usart_tx_dma_config,
.rx_dma_cfg = &usart_rx_dma_config,
}
@ WORD_8
8-Bit word length
Definition usart.h:65
@ HW_DISABLE
Hardware flow control disable.
Definition usart.h:77
@ OB_DISABLE
Disable one bit sampling.
Definition usart.h:89
@ PT_NONE
Disable Parity bits.
Definition usart.h:61
@ SB_ONE
One Stop bit.
Definition usart.h:70
@ OV_16
Oversample by 16.
Definition usart.h:84