Early 2020 STM32 fixes (#308)
* Some Fixes to work * Fix BluePill * Remove libmaple defs * STM32 Timers rework * GCC9 Fix * BlackPill update * Disable FRAM as default for STM32 * STM32 storage options for all cores
This commit is contained in:
parent
cbc35346ba
commit
e7dbbb2a75
|
@ -1,7 +1,7 @@
|
|||
#ifndef STM32_H
|
||||
#define STM32_H
|
||||
#if defined(CORE_STM32_GENERIC)
|
||||
|
||||
//#define USE_FRAM
|
||||
/*
|
||||
***********************************************************************************************************
|
||||
* General
|
||||
|
@ -11,9 +11,17 @@
|
|||
#define COMPARE_TYPE uint16_t
|
||||
#define COUNTER_TYPE uint16_t
|
||||
#define micros_safe() micros() //timer5 method is not used on anything but AVR, the micros_safe() macro is simply an alias for the normal micros()
|
||||
#if defined(SRAM_AS_EEPROM)
|
||||
#define EEPROM_LIB_H "src/BackupSram/BackupSramAsEEPROM.h"
|
||||
#elif defined(SPIFLASH_AS_EEPROM)
|
||||
#define EEPROM_LIB_H "src/SPIAsEEPROM/SPIAsEEPROM.h"
|
||||
#elif defined(USE_FRAM) //https://github.com/VitorBoss/FRAM
|
||||
#define EEPROM_LIB_H <Fram.h>
|
||||
#else
|
||||
#define EEPROM_LIB_H <EEPROM.h>
|
||||
#endif
|
||||
#ifndef USE_SERIAL3
|
||||
#define USE_SERIAL3
|
||||
#define EEPROM_LIB_H <Fram.h>
|
||||
#endif
|
||||
void initBoard();
|
||||
uint16_t freeRam();
|
||||
|
@ -24,7 +32,11 @@
|
|||
|
||||
#if defined(USE_FRAM)
|
||||
#include <Fram.h>
|
||||
#ifdef(ARDUINO_BLACK_F407VE)
|
||||
FramClass EEPROM(PB0, PB3, PB4, PB5, 15000000);
|
||||
#else
|
||||
FramClass EEPROM(PB12, PB13, PB14, PB15, 15000000); //BluePill
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//Much of the below is not correct, but included to allow compilation
|
||||
|
@ -47,23 +59,23 @@
|
|||
#define A14 PC4
|
||||
#define A15 PC5
|
||||
#else
|
||||
#define A0 PB0
|
||||
#define A1 PA7
|
||||
#define A2 PA6
|
||||
#define A3 PA5
|
||||
#define A0 PA0
|
||||
#define A1 PA1
|
||||
#define A2 PA2
|
||||
#define A3 PA3
|
||||
#define A4 PA4
|
||||
#define A5 PA3
|
||||
#define A6 PA2
|
||||
#define A7 PA1
|
||||
#define A8 PA0
|
||||
//STM32F1 have only 9 12bit adc
|
||||
#define A9 PB0
|
||||
#define A10 PA7
|
||||
#define A11 PA6
|
||||
#define A12 PA5
|
||||
#define A13 PA4
|
||||
#define A14 PA3
|
||||
#define A15 PA2
|
||||
#define A5 PA5
|
||||
#define A6 PA6
|
||||
#define A7 PA7
|
||||
#define A8 PB0
|
||||
#define A9 PB1
|
||||
//STM32F1 have only 10 12bit adc
|
||||
#define A10 PA0
|
||||
#define A11 PA1
|
||||
#define A12 PA2
|
||||
#define A13 PA3
|
||||
#define A14 PA4
|
||||
#define A15 PA5
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -88,222 +100,114 @@
|
|||
#define MAX_TIMER_PERIOD 65535*2 //The longest period of time (in uS) that the timer can permit (IN this case it is 65535 * 2, as each timer tick is 2uS)
|
||||
#define uS_TO_TIMER_COMPARE(uS) (uS >> 1) //Converts a given number of uS into the required number of timer ticks until that time has passed.
|
||||
|
||||
#if defined(ARDUINO_ARCH_STM32) && !defined(_VARIANT_ARDUINO_STM32_) // STM32GENERIC core
|
||||
#define FUEL1_COUNTER (TIM2)->CNT
|
||||
#define FUEL2_COUNTER (TIM2)->CNT
|
||||
#define FUEL3_COUNTER (TIM2)->CNT
|
||||
#define FUEL4_COUNTER (TIM2)->CNT
|
||||
#define FUEL1_COUNTER (TIM2)->CNT
|
||||
#define FUEL2_COUNTER (TIM2)->CNT
|
||||
#define FUEL3_COUNTER (TIM2)->CNT
|
||||
#define FUEL4_COUNTER (TIM2)->CNT
|
||||
|
||||
#define FUEL1_COMPARE (TIM2)->CCR1
|
||||
#define FUEL2_COMPARE (TIM2)->CCR2
|
||||
#define FUEL3_COMPARE (TIM2)->CCR3
|
||||
#define FUEL4_COMPARE (TIM2)->CCR4
|
||||
#define FUEL1_COMPARE (TIM2)->CCR1
|
||||
#define FUEL2_COMPARE (TIM2)->CCR2
|
||||
#define FUEL3_COMPARE (TIM2)->CCR3
|
||||
#define FUEL4_COMPARE (TIM2)->CCR4
|
||||
|
||||
#define IGN1_COUNTER (TIM3)->CNT
|
||||
#define IGN2_COUNTER (TIM3)->CNT
|
||||
#define IGN3_COUNTER (TIM3)->CNT
|
||||
#define IGN4_COUNTER (TIM3)->CNT
|
||||
#define IGN1_COUNTER (TIM3)->CNT
|
||||
#define IGN2_COUNTER (TIM3)->CNT
|
||||
#define IGN3_COUNTER (TIM3)->CNT
|
||||
#define IGN4_COUNTER (TIM3)->CNT
|
||||
|
||||
#define IGN1_COMPARE (TIM3)->CCR1
|
||||
#define IGN2_COMPARE (TIM3)->CCR2
|
||||
#define IGN3_COMPARE (TIM3)->CCR3
|
||||
#define IGN4_COMPARE (TIM3)->CCR4
|
||||
#define IGN1_COMPARE (TIM3)->CCR1
|
||||
#define IGN2_COMPARE (TIM3)->CCR2
|
||||
#define IGN3_COMPARE (TIM3)->CCR3
|
||||
#define IGN4_COMPARE (TIM3)->CCR4
|
||||
|
||||
#ifndef SMALL_FLASH_MODE
|
||||
#define FUEL5_COUNTER (TIM5)->CNT
|
||||
#define FUEL6_COUNTER (TIM5)->CNT
|
||||
#define FUEL7_COUNTER (TIM5)->CNT
|
||||
#define FUEL8_COUNTER (TIM5)->CNT
|
||||
#ifndef SMALL_FLASH_MODE
|
||||
#define FUEL5_COUNTER (TIM5)->CNT
|
||||
#define FUEL6_COUNTER (TIM5)->CNT
|
||||
#define FUEL7_COUNTER (TIM5)->CNT
|
||||
#define FUEL8_COUNTER (TIM5)->CNT
|
||||
|
||||
#define FUEL5_COMPARE (TIM5)->CCR1
|
||||
#define FUEL6_COMPARE (TIM5)->CCR2
|
||||
#define FUEL7_COMPARE (TIM5)->CCR3
|
||||
#define FUEL8_COMPARE (TIM5)->CCR4
|
||||
#define FUEL5_COMPARE (TIM5)->CCR1
|
||||
#define FUEL6_COMPARE (TIM5)->CCR2
|
||||
#define FUEL7_COMPARE (TIM5)->CCR3
|
||||
#define FUEL8_COMPARE (TIM5)->CCR4
|
||||
|
||||
#define IGN5_COUNTER (TIM4)->CNT
|
||||
#define IGN6_COUNTER (TIM4)->CNT
|
||||
#define IGN7_COUNTER (TIM4)->CNT
|
||||
#define IGN8_COUNTER (TIM4)->CNT
|
||||
#define IGN5_COUNTER (TIM4)->CNT
|
||||
#define IGN6_COUNTER (TIM4)->CNT
|
||||
#define IGN7_COUNTER (TIM4)->CNT
|
||||
#define IGN8_COUNTER (TIM4)->CNT
|
||||
|
||||
#define IGN5_COMPARE (TIM4)->CCR1
|
||||
#define IGN6_COMPARE (TIM4)->CCR2
|
||||
#define IGN7_COMPARE (TIM4)->CCR3
|
||||
#define IGN8_COMPARE (TIM4)->CCR4
|
||||
#endif
|
||||
//github.com/rogerclarkmelbourne/Arduino_STM32/blob/754bc2969921f1ef262bd69e7faca80b19db7524/STM32F1/system/libmaple/include/libmaple/timer.h#L444
|
||||
#define FUEL1_TIMER_ENABLE() (TIM2)->CCER |= TIM_CCER_CC1E
|
||||
#define FUEL2_TIMER_ENABLE() (TIM2)->CCER |= TIM_CCER_CC2E
|
||||
#define FUEL3_TIMER_ENABLE() (TIM2)->CCER |= TIM_CCER_CC3E
|
||||
#define FUEL4_TIMER_ENABLE() (TIM2)->CCER |= TIM_CCER_CC4E
|
||||
#define IGN5_COMPARE (TIM4)->CCR1
|
||||
#define IGN6_COMPARE (TIM4)->CCR2
|
||||
#define IGN7_COMPARE (TIM4)->CCR3
|
||||
#define IGN8_COMPARE (TIM4)->CCR4
|
||||
#endif
|
||||
//github.com/rogerclarkmelbourne/Arduino_STM32/blob/754bc2969921f1ef262bd69e7faca80b19db7524/STM32F1/system/libmaple/include/libmaple/timer.h#L444
|
||||
#define FUEL1_TIMER_ENABLE() (TIM2)->CCER |= TIM_CCER_CC1E
|
||||
#define FUEL2_TIMER_ENABLE() (TIM2)->CCER |= TIM_CCER_CC2E
|
||||
#define FUEL3_TIMER_ENABLE() (TIM2)->CCER |= TIM_CCER_CC3E
|
||||
#define FUEL4_TIMER_ENABLE() (TIM2)->CCER |= TIM_CCER_CC4E
|
||||
|
||||
#define FUEL1_TIMER_DISABLE() (TIM2)->CCER &= ~TIM_CCER_CC1E
|
||||
#define FUEL2_TIMER_DISABLE() (TIM2)->CCER &= ~TIM_CCER_CC2E
|
||||
#define FUEL3_TIMER_DISABLE() (TIM2)->CCER &= ~TIM_CCER_CC3E
|
||||
#define FUEL4_TIMER_DISABLE() (TIM2)->CCER &= ~TIM_CCER_CC4E
|
||||
#define FUEL1_TIMER_DISABLE() (TIM2)->CCER &= ~TIM_CCER_CC1E
|
||||
#define FUEL2_TIMER_DISABLE() (TIM2)->CCER &= ~TIM_CCER_CC2E
|
||||
#define FUEL3_TIMER_DISABLE() (TIM2)->CCER &= ~TIM_CCER_CC3E
|
||||
#define FUEL4_TIMER_DISABLE() (TIM2)->CCER &= ~TIM_CCER_CC4E
|
||||
|
||||
#define IGN1_TIMER_ENABLE() (TIM3)->CCER |= TIM_CCER_CC1E
|
||||
#define IGN2_TIMER_ENABLE() (TIM3)->CCER |= TIM_CCER_CC2E
|
||||
#define IGN3_TIMER_ENABLE() (TIM3)->CCER |= TIM_CCER_CC3E
|
||||
#define IGN4_TIMER_ENABLE() (TIM3)->CCER |= TIM_CCER_CC4E
|
||||
#define IGN1_TIMER_ENABLE() (TIM3)->CCER |= TIM_CCER_CC1E
|
||||
#define IGN2_TIMER_ENABLE() (TIM3)->CCER |= TIM_CCER_CC2E
|
||||
#define IGN3_TIMER_ENABLE() (TIM3)->CCER |= TIM_CCER_CC3E
|
||||
#define IGN4_TIMER_ENABLE() (TIM3)->CCER |= TIM_CCER_CC4E
|
||||
|
||||
#define IGN1_TIMER_DISABLE() (TIM3)->CCER &= ~TIM_CCER_CC1E
|
||||
#define IGN2_TIMER_DISABLE() (TIM3)->CCER &= ~TIM_CCER_CC2E
|
||||
#define IGN3_TIMER_DISABLE() (TIM3)->CCER &= ~TIM_CCER_CC3E
|
||||
#define IGN4_TIMER_DISABLE() (TIM3)->CCER &= ~TIM_CCER_CC4E
|
||||
#define IGN1_TIMER_DISABLE() (TIM3)->CCER &= ~TIM_CCER_CC1E
|
||||
#define IGN2_TIMER_DISABLE() (TIM3)->CCER &= ~TIM_CCER_CC2E
|
||||
#define IGN3_TIMER_DISABLE() (TIM3)->CCER &= ~TIM_CCER_CC3E
|
||||
#define IGN4_TIMER_DISABLE() (TIM3)->CCER &= ~TIM_CCER_CC4E
|
||||
|
||||
#ifndef SMALL_FLASH_MODE
|
||||
#define FUEL5_TIMER_ENABLE() (TIM5)->CCER |= TIM_CCER_CC1E
|
||||
#define FUEL6_TIMER_ENABLE() (TIM5)->CCER |= TIM_CCER_CC2E
|
||||
#define FUEL7_TIMER_ENABLE() (TIM5)->CCER |= TIM_CCER_CC3E
|
||||
#define FUEL8_TIMER_ENABLE() (TIM5)->CCER |= TIM_CCER_CC4E
|
||||
#ifndef SMALL_FLASH_MODE
|
||||
#define FUEL5_TIMER_ENABLE() (TIM5)->CCER |= TIM_CCER_CC1E
|
||||
#define FUEL6_TIMER_ENABLE() (TIM5)->CCER |= TIM_CCER_CC2E
|
||||
#define FUEL7_TIMER_ENABLE() (TIM5)->CCER |= TIM_CCER_CC3E
|
||||
#define FUEL8_TIMER_ENABLE() (TIM5)->CCER |= TIM_CCER_CC4E
|
||||
|
||||
#define FUEL5_TIMER_DISABLE() (TIM5)->CCER &= ~TIM_CCER_CC1E
|
||||
#define FUEL6_TIMER_DISABLE() (TIM5)->CCER &= ~TIM_CCER_CC2E
|
||||
#define FUEL7_TIMER_DISABLE() (TIM5)->CCER &= ~TIM_CCER_CC3E
|
||||
#define FUEL8_TIMER_DISABLE() (TIM5)->CCER &= ~TIM_CCER_CC4E
|
||||
#define FUEL5_TIMER_DISABLE() (TIM5)->CCER &= ~TIM_CCER_CC1E
|
||||
#define FUEL6_TIMER_DISABLE() (TIM5)->CCER &= ~TIM_CCER_CC2E
|
||||
#define FUEL7_TIMER_DISABLE() (TIM5)->CCER &= ~TIM_CCER_CC3E
|
||||
#define FUEL8_TIMER_DISABLE() (TIM5)->CCER &= ~TIM_CCER_CC4E
|
||||
|
||||
#define IGN5_TIMER_ENABLE() (TIM4)->CCER |= TIM_CCER_CC1E
|
||||
#define IGN6_TIMER_ENABLE() (TIM4)->CCER |= TIM_CCER_CC2E
|
||||
#define IGN7_TIMER_ENABLE() (TIM4)->CCER |= TIM_CCER_CC3E
|
||||
#define IGN8_TIMER_ENABLE() (TIM4)->CCER |= TIM_CCER_CC4E
|
||||
#define IGN5_TIMER_ENABLE() (TIM4)->CCER |= TIM_CCER_CC1E
|
||||
#define IGN6_TIMER_ENABLE() (TIM4)->CCER |= TIM_CCER_CC2E
|
||||
#define IGN7_TIMER_ENABLE() (TIM4)->CCER |= TIM_CCER_CC3E
|
||||
#define IGN8_TIMER_ENABLE() (TIM4)->CCER |= TIM_CCER_CC4E
|
||||
|
||||
#define IGN5_TIMER_DISABLE() (TIM4)->CCER &= ~TIM_CCER_CC1E
|
||||
#define IGN6_TIMER_DISABLE() (TIM4)->CCER &= ~TIM_CCER_CC2E
|
||||
#define IGN7_TIMER_DISABLE() (TIM4)->CCER &= ~TIM_CCER_CC3E
|
||||
#define IGN8_TIMER_DISABLE() (TIM4)->CCER &= ~TIM_CCER_CC4E
|
||||
#endif
|
||||
#else //libmaple core aka STM32DUINO
|
||||
#define FUEL1_COUNTER (TIMER2->regs).gen->CNT
|
||||
#define FUEL2_COUNTER (TIMER2->regs).gen->CNT
|
||||
#define FUEL3_COUNTER (TIMER2->regs).gen->CNT
|
||||
#define FUEL4_COUNTER (TIMER2->regs).gen->CNT
|
||||
|
||||
#define FUEL1_COMPARE (TIMER2->regs).gen->CCR1
|
||||
#define FUEL2_COMPARE (TIMER2->regs).gen->CCR2
|
||||
#define FUEL3_COMPARE (TIMER2->regs).gen->CCR3
|
||||
#define FUEL4_COMPARE (TIMER2->regs).gen->CCR4
|
||||
|
||||
#define IGN1_COUNTER (TIMER3->regs).gen->CNT
|
||||
#define IGN2_COUNTER (TIMER3->regs).gen->CNT
|
||||
#define IGN3_COUNTER (TIMER3->regs).gen->CNT
|
||||
#define IGN4_COUNTER (TIMER3->regs).gen->CNT
|
||||
|
||||
#define IGN1_COMPARE (TIMER3->regs).gen->CCR1
|
||||
#define IGN2_COMPARE (TIMER3->regs).gen->CCR2
|
||||
#define IGN3_COMPARE (TIMER3->regs).gen->CCR3
|
||||
#define IGN4_COMPARE (TIMER3->regs).gen->CCR4
|
||||
|
||||
#ifndef SMALL_FLASH_MODE
|
||||
#define FUEL5_COUNTER (TIMER5->regs).gen->CNT
|
||||
#define FUEL6_COUNTER (TIMER5->regs).gen->CNT
|
||||
#define FUEL7_COUNTER (TIMER5->regs).gen->CNT
|
||||
#define FUEL8_COUNTER (TIMER5->regs).gen->CNT
|
||||
|
||||
#define FUEL5_COMPARE (TIMER5->regs).gen->CCR1
|
||||
#define FUEL6_COMPARE (TIMER5->regs).gen->CCR2
|
||||
#define FUEL7_COMPARE (TIMER5->regs).gen->CCR3
|
||||
#define FUEL8_COMPARE (TIMER5->regs).gen->CCR4
|
||||
|
||||
#define IGN5_COUNTER (TIMER4->regs).gen->CNT
|
||||
#define IGN6_COUNTER (TIMER4->regs).gen->CNT
|
||||
#define IGN7_COUNTER (TIMER4->regs).gen->CNT
|
||||
#define IGN8_COUNTER (TIMER4->regs).gen->CNT
|
||||
|
||||
#define IGN5_COMPARE (TIMER4->regs).gen->CCR1
|
||||
#define IGN6_COMPARE (TIMER4->regs).gen->CCR2
|
||||
#define IGN7_COMPARE (TIMER4->regs).gen->CCR3
|
||||
#define IGN8_COMPARE (TIMER4->regs).gen->CCR4
|
||||
#endif
|
||||
//github.com/rogerclarkmelbourne/Arduino_STM32/blob/754bc2969921f1ef262bd69e7faca80b19db7524/STM32F1/system/libmaple/include/libmaple/timer.h#L444
|
||||
#define FUEL1_TIMER_ENABLE() (TIMER2->regs).gen->CCER |= TIMER_CCER_CC1E
|
||||
#define FUEL2_TIMER_ENABLE() (TIMER2->regs).gen->CCER |= TIMER_CCER_CC2E
|
||||
#define FUEL3_TIMER_ENABLE() (TIMER2->regs).gen->CCER |= TIMER_CCER_CC3E
|
||||
#define FUEL4_TIMER_ENABLE() (TIMER2->regs).gen->CCER |= TIMER_CCER_CC4E
|
||||
|
||||
#define FUEL1_TIMER_DISABLE() (TIMER2->regs).gen->CCER &= ~TIMER_CCER_CC1E
|
||||
#define FUEL2_TIMER_DISABLE() (TIMER2->regs).gen->CCER &= ~TIMER_CCER_CC2E
|
||||
#define FUEL3_TIMER_DISABLE() (TIMER2->regs).gen->CCER &= ~TIMER_CCER_CC3E
|
||||
#define FUEL4_TIMER_DISABLE() (TIMER2->regs).gen->CCER &= ~TIMER_CCER_CC4E
|
||||
|
||||
#define IGN1_TIMER_DISABLE() (TIMER3->regs).gen->CCER &= ~TIMER_CCER_CC1E
|
||||
#define IGN2_TIMER_DISABLE() (TIMER3->regs).gen->CCER &= ~TIMER_CCER_CC2E
|
||||
#define IGN3_TIMER_DISABLE() (TIMER3->regs).gen->CCER &= ~TIMER_CCER_CC3E
|
||||
#define IGN4_TIMER_DISABLE() (TIMER3->regs).gen->CCER &= ~TIMER_CCER_CC4E
|
||||
|
||||
#define IGN1_TIMER_ENABLE() (TIMER3->regs).gen->CCER |= TIMER_CCER_CC1E
|
||||
#define IGN2_TIMER_ENABLE() (TIMER3->regs).gen->CCER |= TIMER_CCER_CC2E
|
||||
#define IGN3_TIMER_ENABLE() (TIMER3->regs).gen->CCER |= TIMER_CCER_CC3E
|
||||
#define IGN4_TIMER_ENABLE() (TIMER3->regs).gen->CCER |= TIMER_CCER_CC4E
|
||||
|
||||
#ifndef SMALL_FLASH_MODE
|
||||
#define FUEL5_TIMER_ENABLE() (TIMER5->regs).gen->CCER |= TIMER_CCER_CC1E
|
||||
#define FUEL6_TIMER_ENABLE() (TIMER5->regs).gen->CCER |= TIMER_CCER_CC2E
|
||||
#define FUEL7_TIMER_ENABLE() (TIMER5->regs).gen->CCER |= TIMER_CCER_CC3E
|
||||
#define FUEL8_TIMER_ENABLE() (TIMER5->regs).gen->CCER |= TIMER_CCER_CC4E
|
||||
|
||||
#define IGN5_TIMER_ENABLE() (TIMER4->regs).gen->CCER |= TIMER_CCER_CC1E
|
||||
#define IGN6_TIMER_ENABLE() (TIMER4->regs).gen->CCER |= TIMER_CCER_CC2E
|
||||
#define IGN7_TIMER_ENABLE() (TIMER4->regs).gen->CCER |= TIMER_CCER_CC3E
|
||||
#define IGN8_TIMER_ENABLE() (TIMER4->regs).gen->CCER |= TIMER_CCER_CC4E
|
||||
|
||||
#define FUEL5_TIMER_DISABLE() (TIMER5->regs).gen->CCER &= ~TIMER_CCER_CC1E
|
||||
#define FUEL6_TIMER_DISABLE() (TIMER5->regs).gen->CCER &= ~TIMER_CCER_CC2E
|
||||
#define FUEL7_TIMER_DISABLE() (TIMER5->regs).gen->CCER &= ~TIMER_CCER_CC3E
|
||||
#define FUEL8_TIMER_DISABLE() (TIMER5->regs).gen->CCER &= ~TIMER_CCER_CC4E
|
||||
|
||||
#define IGN5_TIMER_DISABLE() (TIMER4->regs).gen->CCER &= ~TIMER_CCER_CC1E
|
||||
#define IGN6_TIMER_DISABLE() (TIMER4->regs).gen->CCER &= ~TIMER_CCER_CC2E
|
||||
#define IGN7_TIMER_DISABLE() (TIMER4->regs).gen->CCER &= ~TIMER_CCER_CC3E
|
||||
#define IGN8_TIMER_DISABLE() (TIMER4->regs).gen->CCER &= ~TIMER_CCER_CC4E
|
||||
#endif
|
||||
#endif
|
||||
#define IGN5_TIMER_DISABLE() (TIM4)->CCER &= ~TIM_CCER_CC1E
|
||||
#define IGN6_TIMER_DISABLE() (TIM4)->CCER &= ~TIM_CCER_CC2E
|
||||
#define IGN7_TIMER_DISABLE() (TIM4)->CCER &= ~TIM_CCER_CC3E
|
||||
#define IGN8_TIMER_DISABLE() (TIM4)->CCER &= ~TIM_CCER_CC4E
|
||||
#endif
|
||||
|
||||
/*
|
||||
***********************************************************************************************************
|
||||
* Auxilliaries
|
||||
*/
|
||||
#if defined(ARDUINO_ARCH_STM32) && !defined(_VARIANT_ARDUINO_STM32_) // STM32GENERIC core
|
||||
#define ENABLE_BOOST_TIMER() (TIM1)->CCER |= TIM_CCER_CC2E
|
||||
#define DISABLE_BOOST_TIMER() (TIM1)->CCER &= ~TIM_CCER_CC2E
|
||||
#define ENABLE_BOOST_TIMER() (TIM1)->CCER |= TIM_CCER_CC2E
|
||||
#define DISABLE_BOOST_TIMER() (TIM1)->CCER &= ~TIM_CCER_CC2E
|
||||
|
||||
#define ENABLE_VVT_TIMER() (TIM1)->CCER |= TIM_CCER_CC3E
|
||||
#define DISABLE_VVT_TIMER() (TIM1)->CCER &= ~TIM_CCER_CC3E
|
||||
#define ENABLE_VVT_TIMER() (TIM1)->CCER |= TIM_CCER_CC3E
|
||||
#define DISABLE_VVT_TIMER() (TIM1)->CCER &= ~TIM_CCER_CC3E
|
||||
|
||||
#define BOOST_TIMER_COMPARE (TIM1)->CCR2
|
||||
#define BOOST_TIMER_COUNTER (TIM1)->CNT
|
||||
#define VVT_TIMER_COMPARE (TIM1)->CCR3
|
||||
#define VVT_TIMER_COUNTER (TIM1)->CNT
|
||||
#else //libmaple core aka STM32DUINO
|
||||
#define ENABLE_BOOST_TIMER() (TIMER1->regs).gen->CCER |= TIMER_CCER_CC2E
|
||||
#define DISABLE_BOOST_TIMER() (TIMER1->regs).gen->CCER &= ~TIMER_CCER_CC2E
|
||||
|
||||
#define ENABLE_VVT_TIMER() (TIMER1->regs).gen->CCER |= TIMER_CCER_CC3E
|
||||
#define DISABLE_VVT_TIMER() (TIMER1->regs).gen->CCER &= ~TIMER_CCER_CC3E
|
||||
|
||||
#define BOOST_TIMER_COMPARE (TIMER1->regs).gen->CCR2
|
||||
#define BOOST_TIMER_COUNTER (TIMER1->regs).gen->CNT
|
||||
#define VVT_TIMER_COMPARE (TIMER1->regs).gen->CCR3
|
||||
#define VVT_TIMER_COUNTER (TIMER1->regs).gen->CNT
|
||||
#endif
|
||||
#define BOOST_TIMER_COMPARE (TIM1)->CCR2
|
||||
#define BOOST_TIMER_COUNTER (TIM1)->CNT
|
||||
#define VVT_TIMER_COMPARE (TIM1)->CCR3
|
||||
#define VVT_TIMER_COUNTER (TIM1)->CNT
|
||||
|
||||
/*
|
||||
***********************************************************************************************************
|
||||
* Idle
|
||||
*/
|
||||
#if defined(ARDUINO_ARCH_STM32) && !defined(_VARIANT_ARDUINO_STM32_) // STM32GENERIC core
|
||||
#define IDLE_COUNTER (TIM1)->CNT
|
||||
#define IDLE_COMPARE (TIM1)->CCR4
|
||||
|
||||
#define IDLE_TIMER_ENABLE() (TIM1)->CCER |= TIM_CCER_CC4E
|
||||
#define IDLE_TIMER_DISABLE() (TIM1)->CCER &= ~TIM_CCER_CC4E
|
||||
#else //libmaple core aka STM32DUINO
|
||||
#define IDLE_COUNTER (TIMER1->regs).gen->CNT
|
||||
#define IDLE_COMPARE (TIMER1->regs).gen->CCR4
|
||||
|
||||
#define IDLE_TIMER_ENABLE() (TIMER1->regs).gen->CCER |= TIMER_CCER_CC4E
|
||||
#define IDLE_TIMER_DISABLE() (TIMER1->regs).gen->CCER &= ~TIMER_CCER_CC4E
|
||||
#endif
|
||||
#define IDLE_COUNTER (TIM1)->CNT
|
||||
#define IDLE_COMPARE (TIM1)->CCR4
|
||||
|
||||
#define IDLE_TIMER_ENABLE() (TIM1)->CCER |= TIM_CCER_CC4E
|
||||
#define IDLE_TIMER_DISABLE() (TIM1)->CCER &= ~TIM_CCER_CC4E
|
||||
/*
|
||||
***********************************************************************************************************
|
||||
* Timers
|
||||
|
@ -314,6 +218,11 @@
|
|||
***********************************************************************************************************
|
||||
* CAN / Second serial
|
||||
*/
|
||||
#if defined(STM32GENERIC) // STM32GENERIC core
|
||||
SerialUART &CANSerial = Serial2;
|
||||
#else //libmaple core aka STM32DUINO
|
||||
HardwareSerial &CANSerial = Serial2;
|
||||
#endif
|
||||
|
||||
#endif //CORE_STM32
|
||||
#endif //STM32_H
|
|
@ -1,16 +1,10 @@
|
|||
#if defined(CORE_STM32_GENERIC) && !defined(ARDUINO_BLACK_F407VE)
|
||||
#if defined(CORE_STM32_GENERIC)
|
||||
#include "board_stm32_generic.h"
|
||||
#include "globals.h"
|
||||
#include "auxiliaries.h"
|
||||
#include "idle.h"
|
||||
#include "scheduler.h"
|
||||
#include "HardwareTimer.h"
|
||||
#if defined(ARDUINO_ARCH_STM32) && defined(STM32_CORE_VERSION)
|
||||
//These should really be in the stm32 libmaple libs, but for somereason they only have timers 1-4
|
||||
#include <stm32_TIM_variant_11.h>
|
||||
HardwareTimer Timer5(TIM5, chip_tim5, sizeof(chip_tim5) / sizeof(chip_tim5[0]));
|
||||
HardwareTimer Timer8(TIM8, chip_tim8, sizeof(chip_tim8) / sizeof(chip_tim8[0]));
|
||||
#endif
|
||||
|
||||
void initBoard()
|
||||
{
|
||||
|
@ -28,29 +22,28 @@ void initBoard()
|
|||
*/
|
||||
if( (configPage6.iacAlgorithm == IAC_ALGORITHM_PWM_OL) || (configPage6.iacAlgorithm == IAC_ALGORITHM_PWM_CL) )
|
||||
{
|
||||
idle_pwm_max_count = 1000000L / (configPage6.idleFreq * 2); //Converts the frequency in Hz to the number of ticks (at 2uS) it takes to complete 1 cycle. Note that the frequency is divided by 2 coming from TS to allow for up to 5KHz
|
||||
idle_pwm_max_count = 1000000L / (2 * configPage6.idleFreq * 2); //Converts the frequency in Hz to the number of ticks (at 2uS) it takes to complete 1 cycle. Note that the frequency is divided by 2 coming from TS to allow for up to 5KHz
|
||||
}
|
||||
|
||||
//This must happen at the end of the idle init
|
||||
Timer1.setMode(4, TIMER_OUTPUT_COMPARE);
|
||||
//timer_set_mode(TIMER1, 4, TIMER_OUTPUT_COMPARE;
|
||||
if(idle_pwm_max_count > 0) { Timer1.attachInterrupt(4, idleInterrupt); } //on first flash the configPage4.iacAlgorithm is invalid
|
||||
Timer1.attachInterrupt(4, idleInterrupt); //on first flash the configPage4.iacAlgorithm is invalid
|
||||
|
||||
|
||||
/*
|
||||
***********************************************************************************************************
|
||||
* Timers
|
||||
*/
|
||||
#if defined(ARDUINO_BLACK_F407VE) || defined(STM32F4) || defined(_STM32F4_)
|
||||
Timer8.setPeriod(1000); // Set up period
|
||||
Timer8.setMode(1, TIMER_OUTPUT_COMPARE);
|
||||
Timer8.attachInterrupt(1, oneMSInterval);
|
||||
Timer8.resume(); //Start Timer
|
||||
#else
|
||||
#if defined(ARDUINO_BLUEPILL_F103C8) || defined(ARDUINO_BLUEPILL_F103CB)
|
||||
Timer4.setPeriod(1000); // Set up period
|
||||
Timer4.setMode(1, TIMER_OUTPUT_COMPARE);
|
||||
Timer4.attachInterrupt(1, oneMSInterval);
|
||||
Timer4.resume(); //Start Timer
|
||||
#else
|
||||
Timer11.setPeriod(1000); // Set up period
|
||||
Timer11.setMode(1, TIMER_OUTPUT_COMPARE);
|
||||
Timer11.attachInterrupt(1, oneMSInterval);
|
||||
Timer11.resume(); //Start Timer
|
||||
#endif
|
||||
pinMode(LED_BUILTIN, OUTPUT); //Visual WDT
|
||||
|
||||
|
@ -65,25 +58,27 @@ void initBoard()
|
|||
//Need to be initialised last due to instant interrupt
|
||||
Timer1.setMode(2, TIMER_OUTPUT_COMPARE);
|
||||
Timer1.setMode(3, TIMER_OUTPUT_COMPARE);
|
||||
if(boost_pwm_max_count > 0) { Timer1.attachInterrupt(2, boostInterrupt);}
|
||||
if(vvt_pwm_max_count > 0) { Timer1.attachInterrupt(3, vvtInterrupt);}
|
||||
Timer1.attachInterrupt(2, boostInterrupt);
|
||||
Timer1.attachInterrupt(3, vvtInterrupt);
|
||||
|
||||
/*
|
||||
***********************************************************************************************************
|
||||
* Schedules
|
||||
*/
|
||||
#if defined (STM32F1) || defined(__STM32F1__)
|
||||
#if defined(ARDUINO_BLUEPILL_F103C8) || defined(ARDUINO_BLUEPILL_F103CB)
|
||||
//(CYCLES_PER_MICROSECOND == 72, APB2 at 72MHz, APB1 at 36MHz).
|
||||
//Timer2 to 4 is on APB1, Timer1 on APB2. www.st.com/resource/en/datasheet/stm32f103cb.pdf sheet 12
|
||||
Timer1.setPrescaleFactor((72 * 2)-1); //2us resolution
|
||||
Timer2.setPrescaleFactor((36 * 2)-1); //2us resolution
|
||||
Timer3.setPrescaleFactor((36 * 2)-1); //2us resolution
|
||||
#elif defined(STM32F4)
|
||||
#else
|
||||
//(CYCLES_PER_MICROSECOND == 168, APB2 at 84MHz, APB1 at 42MHz).
|
||||
//Timer2 to 14 is on APB1, Timers 1, 8, 9 and 10 on APB2. www.st.com/resource/en/datasheet/stm32f407vg.pdf sheet 120
|
||||
Timer1.setPrescaleFactor((168 * 2)-1); //2us resolution
|
||||
Timer2.setPrescaleFactor((84 * 2)-1); //2us resolution
|
||||
Timer3.setPrescaleFactor((84 * 2)-1); //2us resolution
|
||||
Timer4.setPrescaleFactor((84 * 2)-1); //2us resolution
|
||||
Timer5.setPrescaleFactor((84 * 2)-1); //2us resolution
|
||||
#endif
|
||||
Timer2.setMode(1, TIMER_OUTPUT_COMPARE);
|
||||
Timer2.setMode(2, TIMER_OUTPUT_COMPARE);
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
#define EEPROM_LIB_H "src/BackupSram/BackupSramAsEEPROM.h"
|
||||
#elif defined(USE_SPI_FLASH)
|
||||
#define EEPROM_LIB_H "src/SPIAsEEPROM/SPIAsEEPROM.h"
|
||||
#elif defined(USE_FRAM) //https://github.com/VitorBoss/FRAM
|
||||
#define EEPROM_LIB_H <Fram.h>
|
||||
#else
|
||||
#define EEPROM_LIB_H <EEPROM.h>
|
||||
#endif
|
||||
|
@ -159,8 +161,14 @@ HardwareTimer Timer1(TIM1);
|
|||
HardwareTimer Timer2(TIM2);
|
||||
HardwareTimer Timer3(TIM3);
|
||||
HardwareTimer Timer4(TIM4);
|
||||
#if !defined(ARDUINO_BLUEPILL_F103C8) && !defined(ARDUINO_BLUEPILL_F103CB) //F103 just have 4 timers
|
||||
HardwareTimer Timer5(TIM5);
|
||||
HardwareTimer Timer8(TIM8);
|
||||
#if defined(TIM11)
|
||||
HardwareTimer Timer11(TIM11);
|
||||
#elif defined(TIM7)
|
||||
HardwareTimer Timer11(TIM7);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
void oneMSInterval(HardwareTimer*);
|
||||
void boostInterrupt(HardwareTimer*);
|
||||
|
@ -180,7 +188,9 @@ void ignitionSchedule5Interrupt(HardwareTimer*);
|
|||
***********************************************************************************************************
|
||||
* CAN / Second serial
|
||||
*/
|
||||
HardwareSerial CANSerial(PD6,PD5);
|
||||
#if defined(ARDUINO_BLACK_F407VE)
|
||||
HardwareSerial CANSerial(PD6, PD5);
|
||||
#endif
|
||||
|
||||
#endif //CORE_STM32
|
||||
#endif //STM32_H
|
||||
|
|
|
@ -25,29 +25,28 @@
|
|||
*/
|
||||
if( (configPage6.iacAlgorithm == IAC_ALGORITHM_PWM_OL) || (configPage6.iacAlgorithm == IAC_ALGORITHM_PWM_CL) )
|
||||
{
|
||||
idle_pwm_max_count = 1000000L / (configPage6.idleFreq * 2); //Converts the frequency in Hz to the number of ticks (at 2uS) it takes to complete 1 cycle. Note that the frequency is divided by 2 coming from TS to allow for up to 5KHz
|
||||
idle_pwm_max_count = 1000000L / (2 * configPage6.idleFreq * 2); //Converts the frequency in Hz to the number of ticks (at 2uS) it takes to complete 1 cycle. Note that the frequency is divided by 2 coming from TS to allow for up to 5KHz
|
||||
}
|
||||
|
||||
//This must happen at the end of the idle init
|
||||
Timer1.setMode(4, TIMER_OUTPUT_COMPARE);
|
||||
//timer_set_mode(TIMER1, 4, TIMER_OUTPUT_COMPARE;
|
||||
if(idle_pwm_max_count > 0) { Timer1.attachInterrupt(4, idleInterrupt); } //on first flash the configPage4.iacAlgorithm is invalid
|
||||
Timer1.attachInterrupt(4, idleInterrupt); //on first flash the configPage4.iacAlgorithm is invalid
|
||||
|
||||
|
||||
/*
|
||||
***********************************************************************************************************
|
||||
* Timers
|
||||
*/
|
||||
#if defined(ARDUINO_BLACK_F407VE) || defined(STM32F4) || defined(_STM32F4_)
|
||||
Timer8.setOverflow(1000, MICROSEC_FORMAT); // Set up period
|
||||
Timer8.setMode(1, TIMER_OUTPUT_COMPARE);
|
||||
Timer8.attachInterrupt(1, oneMSInterval);
|
||||
Timer8.resume(); //Start Timer
|
||||
#if defined(ARDUINO_BLUEPILL_F103C8) || defined(ARDUINO_BLUEPILL_F103CB)
|
||||
Timer4.setOverflow(1000, MICROSEC_FORMAT); // Set up period
|
||||
Timer4.setMode(1, TIMER_OUTPUT_COMPARE);
|
||||
Timer4.attachInterrupt(1, oneMSInterval);
|
||||
Timer4.resume(); //Start Timer
|
||||
#else
|
||||
Timer4.setOverflow(1000, MICROSEC_FORMAT); // Set up period
|
||||
Timer4.setMode(1, TIMER_OUTPUT_COMPARE);
|
||||
Timer4.attachInterrupt(1, oneMSInterval);
|
||||
Timer4.resume(); //Start Timer
|
||||
Timer11.setOverflow(1000, MICROSEC_FORMAT); // Set up period
|
||||
Timer11.setMode(1, TIMER_OUTPUT_COMPARE);
|
||||
Timer11.attachInterrupt(1, oneMSInterval);
|
||||
Timer11.resume(); //Start Timer
|
||||
#endif
|
||||
pinMode(LED_BUILTIN, OUTPUT); //Visual WDT
|
||||
|
||||
|
@ -62,16 +61,16 @@
|
|||
//Need to be initialised last due to instant interrupt
|
||||
Timer1.setMode(2, TIMER_OUTPUT_COMPARE);
|
||||
Timer1.setMode(3, TIMER_OUTPUT_COMPARE);
|
||||
if(boost_pwm_max_count > 0) { Timer1.attachInterrupt(2, boostInterrupt);}
|
||||
if(vvt_pwm_max_count > 0) { Timer1.attachInterrupt(3, vvtInterrupt);}
|
||||
Timer1.attachInterrupt(2, boostInterrupt);
|
||||
Timer1.attachInterrupt(3, vvtInterrupt);
|
||||
|
||||
/*
|
||||
***********************************************************************************************************
|
||||
* Schedules
|
||||
*/
|
||||
Timer1.setOverflow(MAX_TIMER_PERIOD, MICROSEC_FORMAT);
|
||||
Timer2.setOverflow(MAX_TIMER_PERIOD, MICROSEC_FORMAT);
|
||||
Timer3.setOverflow(MAX_TIMER_PERIOD, MICROSEC_FORMAT);
|
||||
Timer1.setOverflow(0xFFFF, MICROSEC_FORMAT);
|
||||
Timer2.setOverflow(0xFFFF, MICROSEC_FORMAT);
|
||||
Timer3.setOverflow(0xFFFF, MICROSEC_FORMAT);
|
||||
|
||||
|
||||
Timer2.setMode(1, TIMER_OUTPUT_COMPARE);
|
||||
|
@ -92,6 +91,7 @@
|
|||
Timer3.attachInterrupt(3, fuelSchedule3Interrupt);
|
||||
Timer3.attachInterrupt(4, fuelSchedule4Interrupt);
|
||||
#if (INJ_CHANNELS >= 5)
|
||||
Timer5.setOverflow(0xFFFF, MICROSEC_FORMAT);
|
||||
Timer5.setMode(1, TIMER_OUTPUT_COMPARE);
|
||||
Timer5.attachInterrupt(1, fuelSchedule5Interrupt);
|
||||
#endif
|
||||
|
@ -114,6 +114,7 @@
|
|||
Timer2.attachInterrupt(3, ignitionSchedule3Interrupt);
|
||||
Timer2.attachInterrupt(4, ignitionSchedule4Interrupt);
|
||||
#if (IGN_CHANNELS >= 5)
|
||||
Timer4.setOverflow(0xFFFF, MICROSEC_FORMAT);
|
||||
Timer4.setMode(1, TIMER_OUTPUT_COMPARE);
|
||||
Timer4.attachInterrupt(1, ignitionSchedule5Interrupt);
|
||||
#endif
|
||||
|
|
|
@ -16,7 +16,7 @@ uint8_t Glow, Ghigh;
|
|||
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
|
||||
HardwareSerial &CANSerial = Serial3;
|
||||
#elif defined(CORE_STM32)
|
||||
#if defined(ARDUINO_ARCH_STM32) && !defined(_VARIANT_ARDUINO_STM32_) // STM32GENERIC core
|
||||
#if defined(STM32GENERIC) // STM32GENERIC core
|
||||
SerialUART &CANSerial = Serial2;
|
||||
#else //libmaple core aka STM32DUINO
|
||||
HardwareSerial &CANSerial = Serial2;
|
||||
|
|
|
@ -1769,7 +1769,7 @@ void sendToothLog()
|
|||
//TunerStudio has timed out, send a LOG of all 0s
|
||||
for(int x = 0; x < (4*TOOTH_LOG_SIZE); x++)
|
||||
{
|
||||
Serial.write(0);
|
||||
Serial.write(static_cast<byte>(0x00)); //GCC9 fix
|
||||
}
|
||||
cmdPending = false;
|
||||
}
|
||||
|
@ -1810,7 +1810,7 @@ void sendCompositeLog()
|
|||
//TunerStudio has timed out, send a LOG of all 0s
|
||||
for(int x = 0; x < (5*TOOTH_LOG_SIZE); x++)
|
||||
{
|
||||
Serial.write(0);
|
||||
Serial.write(static_cast<byte>(0x00)); //GCC9 fix
|
||||
}
|
||||
cmdPending = false;
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
#define INJ_CHANNELS 8
|
||||
#define IGN_CHANNELS 8
|
||||
|
||||
#elif defined(STM32_MCU_SERIES) || defined(ARDUINO_ARCH_STM32) || defined(__STM32F1__) || defined(STM32F4) || defined(STM32)
|
||||
#elif defined(STM32_MCU_SERIES) || defined(ARDUINO_ARCH_STM32) || defined(STM32)
|
||||
//These should be updated to 8 later, but there's bits missing currently
|
||||
#define INJ_CHANNELS 4
|
||||
#define IGN_CHANNELS 5
|
||||
|
@ -35,20 +35,23 @@
|
|||
#ifndef word
|
||||
#define word(h, l) ((h << 8) | l) //word() function not defined for this platform in the main library
|
||||
#endif
|
||||
#if defined (STM32F1) || defined(__STM32F1__)
|
||||
|
||||
#if defined(ARDUINO_BLUEPILL_F103C8) || defined(ARDUINO_BLUEPILL_F103CB) \
|
||||
|| defined(ARDUINO_BLACKPILL_F401CC) || defined(ARDUINO_BLACKPILL_F411CE)
|
||||
//STM32 Pill boards
|
||||
#define BOARD_DIGITAL_GPIO_PINS 34
|
||||
#define BOARD_NR_GPIO_PINS 34
|
||||
#ifndef LED_BUILTIN
|
||||
#define LED_BUILTIN PB1 //Maple Mini
|
||||
#endif
|
||||
#elif defined(ARDUINO_BLACK_F407VE) || defined(STM32F4)
|
||||
#define BOARD_DIGITAL_GPIO_PINS 80
|
||||
#define BOARD_NR_GPIO_PINS 80
|
||||
#elif defined(ARDUINO_BLACK_F407VE)
|
||||
#define BOARD_DIGITAL_GPIO_PINS 74
|
||||
#define BOARD_NR_GPIO_PINS 74
|
||||
#endif
|
||||
|
||||
#if defined(CORE_STM32_OFFICIAL)
|
||||
#if defined(STM32_CORE_VERSION)
|
||||
//Need to identify the official core better
|
||||
//#define CORE_STM32_OFFICIAL
|
||||
#define CORE_STM32_OFFICIAL
|
||||
#define BOARD_H "board_stm32_official.h"
|
||||
#else
|
||||
#define CORE_STM32_GENERIC
|
||||
|
@ -63,14 +66,8 @@
|
|||
#if __GNUC__ < 7 //Already included on GCC 7
|
||||
extern "C" char* sbrk(int incr); //Used to freeRam
|
||||
#endif
|
||||
#if !defined(_VARIANT_ARDUINO_STM32_) // STM32GENERIC core
|
||||
inline unsigned char digitalPinToInterrupt(unsigned char Interrupt_pin) { return Interrupt_pin; } //This isn't included in the stm32duino libs (yet)
|
||||
#else //libmaple core aka STM32DUINO
|
||||
//These are defined in STM32F1/variants/generic_stm32f103c/variant.h but return a non byte* value
|
||||
#ifndef portOutputRegister
|
||||
#define portOutputRegister(port) ((volatile byte *)( &((port)->regs->ODR) ))
|
||||
#define portInputRegister(port) ((volatile byte *)( &((port)->regs->IDR) ))
|
||||
#endif
|
||||
#ifndef digitalPinToInterrupt
|
||||
inline uint32_t digitalPinToInterrupt(uint32_t Interrupt_pin) { return Interrupt_pin; } //This isn't included in the stm32duino libs (yet)
|
||||
#endif
|
||||
#elif defined(__SAMD21G18A__)
|
||||
#define BOARD_H "board_samd21.h"
|
||||
|
|
|
@ -1082,7 +1082,7 @@ void setPinMapping(byte boardID)
|
|||
pinCoil4 = 29;
|
||||
pinCoil3 = 30;
|
||||
pinO2 = A22;
|
||||
#elif defined(STM32F4)
|
||||
#elif defined(ARDUINO_BLACK_F407VE)
|
||||
//Pin definitions for experimental board Tjeerd
|
||||
//Black F407VE wiki.stm32duino.com/index.php?title=STM32F407
|
||||
|
||||
|
@ -1193,33 +1193,29 @@ void setPinMapping(byte boardID)
|
|||
pinInjector2 = PB6; //Output pin injector 2 is on
|
||||
pinInjector3 = PB5; //Output pin injector 3 is on
|
||||
pinInjector4 = PB4; //Output pin injector 4 is on
|
||||
pinCoil1 = PB3; //Pin for coil 1
|
||||
pinCoil2 = PA15; //Pin for coil 2
|
||||
pinCoil3 = PA14; //Pin for coil 3
|
||||
pinCoil4 = PA9; //Pin for coil 4
|
||||
pinCoil5 = PA8; //Pin for coil 5
|
||||
pinTPS = A0; //TPS input pin
|
||||
pinMAP = A1; //MAP sensor pin
|
||||
pinIAT = A2; //IAT sensor pin
|
||||
pinCLT = A3; //CLS sensor pin
|
||||
pinO2 = A4; //O2 Sensor pin
|
||||
pinBat = A5; //Battery reference voltage pin
|
||||
pinCoil1 = PB9; //Pin for coil 1
|
||||
pinCoil2 = PB8; //Pin for coil 2
|
||||
pinCoil3 = PB3; //Pin for coil 3
|
||||
pinCoil4 = PA15; //Pin for coil 4
|
||||
pinTPS = A2;//TPS input pin
|
||||
pinMAP = A3; //MAP sensor pin
|
||||
pinIAT = A0; //IAT sensor pin
|
||||
pinCLT = A1; //CLS sensor pin
|
||||
pinO2 = A8; //O2 Sensor pin
|
||||
pinBat = A4; //Battery reference voltage pin
|
||||
pinBaro = pinMAP;
|
||||
pinIdle1 = PB2; //Single wire idle control
|
||||
pinIdle2 = PA2; //2 wire idle control
|
||||
pinBoost = PA1; //Boost control
|
||||
pinVVT_1 = PA0; //Default VVT output
|
||||
pinBoost = PA8; //Boost control
|
||||
//pinVVT_1 = 4; //Default VVT output
|
||||
pinStepperDir = PC15; //Direction pin for DRV8825 driver
|
||||
pinStepperStep = PC14; //Step pin for DRV8825 driver
|
||||
pinStepperEnable = PC13; //Enable pin for DRV8825
|
||||
pinDisplayReset = PB2; // OLED reset pin
|
||||
pinFan = PB1; //Pin for the fan output
|
||||
pinFuelPump = PB11; //Fuel pump output
|
||||
pinTachOut = PB10; //Tacho output pin
|
||||
pinFuelPump = PB10; //Fuel pump output
|
||||
pinTachOut = PC13; //Tacho output pin
|
||||
//external interrupt enabled pins
|
||||
pinFlex = PB8; // Flex sensor (Must be external interrupt enabled)
|
||||
pinTrigger = PA10; //The CAS pin
|
||||
pinTrigger2 = PA13; //The Cam Sensor pin
|
||||
pinFlex = PB1; // Flex sensor (Must be external interrupt enabled)
|
||||
pinTrigger = PB0; //The CAS pin
|
||||
pinTrigger2 = PB2; //The Cam Sensor pin
|
||||
#endif
|
||||
break;
|
||||
|
||||
|
@ -1792,7 +1788,7 @@ void setPinMapping(byte boardID)
|
|||
#endif
|
||||
break;
|
||||
|
||||
#if defined(STM32F4)
|
||||
#if defined(ARDUINO_BLACK_F407VE)
|
||||
case 60:
|
||||
//Pin definitions for experimental board Tjeerd
|
||||
//Black F407VE wiki.stm32duino.com/index.php?title=STM32F407
|
||||
|
@ -1942,7 +1938,7 @@ void setPinMapping(byte boardID)
|
|||
#endif
|
||||
break;
|
||||
default:
|
||||
#if defined(STM32F4)
|
||||
#if defined(ARDUINO_BLACK_F407VE)
|
||||
//Pin definitions for experimental board Tjeerd
|
||||
//Black F407VE wiki.stm32duino.com/index.php?title=STM32F407
|
||||
|
||||
|
|
Loading…
Reference in New Issue