openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

108 lines
2.7 KiB

#ifdef STM32F4
#include "stm32fx/inc/stm32f4xx.h"
#include "stm32fx/inc/stm32f4xx_hal_gpio_ex.h"
#define MCU_IDCODE 0x463U
#else
#include "stm32fx/inc/stm32f2xx.h"
#include "stm32fx/inc/stm32f2xx_hal_gpio_ex.h"
#define MCU_IDCODE 0x411U
#endif
// from the linker script
#define APP_START_ADDRESS 0x8004000U
#define CORE_FREQ 96U // in MHz
#define APB1_FREQ (CORE_FREQ/2U)
#define APB1_TIMER_FREQ (APB1_FREQ*2U) // APB1 is multiplied by 2 for the timer peripherals
#define APB2_FREQ (CORE_FREQ/2U)
#define APB2_TIMER_FREQ (APB2_FREQ*2U) // APB2 is multiplied by 2 for the timer peripherals
#define BOOTLOADER_ADDRESS 0x1FFF0004U
// Around (1Mbps / 8 bits/byte / 12 bytes per message)
#define CAN_INTERRUPT_RATE 12000U
#define MAX_LED_FADE 8192U
#define NUM_INTERRUPTS 102U // There are 102 external interrupt sources (see stm32f413.h)
#define TICK_TIMER_IRQ TIM1_BRK_TIM9_IRQn
#define TICK_TIMER TIM9
#define MICROSECOND_TIMER TIM2
#define INTERRUPT_TIMER_IRQ TIM6_DAC_IRQn
#define INTERRUPT_TIMER TIM6
#define IND_WDG IWDG
#define PROVISION_CHUNK_ADDRESS 0x1FFF79E0U
#define DEVICE_SERIAL_NUMBER_ADDRESS 0x1FFF79C0U
#define LOGGING_FLASH_SECTOR_A 10U
#define LOGGING_FLASH_SECTOR_B 11U
#define LOGGING_FLASH_BASE_A 0x080C0000U
#define LOGGING_FLASH_BASE_B 0x080E0000U
#define LOGGING_FLASH_SECTOR_SIZE 0x20000U
#include "can_definitions.h"
#include "comms_definitions.h"
#ifndef BOOTSTUB
#ifdef PANDA
#include "main_declarations.h"
#else
#include "pedal/main_declarations.h"
#endif
#else
#include "bootstub_declarations.h"
#endif
#include "libc.h"
#include "critical.h"
#include "faults.h"
#include "utils.h"
#include "drivers/registers.h"
#include "drivers/interrupts.h"
#include "drivers/gpio.h"
#include "stm32fx/peripherals.h"
#include "stm32fx/interrupt_handlers.h"
#include "drivers/timers.h"
#include "stm32fx/board.h"
#include "stm32fx/clock.h"
#include "drivers/watchdog.h"
#include "stm32fx/llflash.h"
#if defined(PANDA) || defined(BOOTSTUB)
#include "drivers/spi.h"
#include "stm32fx/llspi.h"
#endif
#if !defined(BOOTSTUB) && (defined(PANDA) || defined(PEDAL_USB))
#include "drivers/uart.h"
#include "stm32fx/lluart.h"
#endif
#if !defined(PEDAL_USB) && !defined(PEDAL) && !defined(BOOTSTUB)
#include "stm32fx/llexti.h"
#endif
#ifndef BOOTSTUB
#include "stm32fx/llbxcan.h"
#endif
#if defined(PANDA) || defined(BOOTSTUB) || defined(PEDAL_USB)
#include "stm32fx/llusb.h"
#endif
#ifdef PEDAL
#include "stm32fx/lldac.h"
#endif
void early_gpio_float(void) {
RCC->AHB1ENR = RCC_AHB1ENR_GPIOAEN | RCC_AHB1ENR_GPIOBEN | RCC_AHB1ENR_GPIOCEN;
GPIOA->MODER = 0; GPIOB->MODER = 0; GPIOC->MODER = 0;
GPIOA->ODR = 0; GPIOB->ODR = 0; GPIOC->ODR = 0;
GPIOA->PUPDR = 0; GPIOB->PUPDR = 0; GPIOC->PUPDR = 0;
}