diff --git a/midi2cv/bootloader/bootloader.cc b/midi2cv/bootloader/bootloader.cc index 15a8a8a..50e4d62 100644 --- a/midi2cv/bootloader/bootloader.cc +++ b/midi2cv/bootloader/bootloader.cc @@ -1,3 +1,13 @@ +#include + +#include "stmlib/system/bootloader_utils.h" + +using namespace stmlib; + +const uint32_t kStartAddress = 0x08001000; + int main(void) { -for(;;) ; //casual chillout + SystemInit(); + Uninitialize(); + JumpTo(kStartAddress); } diff --git a/midi2cv/drivers/gpio.cc b/midi2cv/drivers/gpio.cc index 4648995..8e64115 100644 --- a/midi2cv/drivers/gpio.cc +++ b/midi2cv/drivers/gpio.cc @@ -17,5 +17,5 @@ void GPIO::Init() { } void GPIO::Write(GPIO_TypeDef* port, uint16_t pin, bool state) { - GPIO_WriteBit(GPIOB, pin, static_cast(state)); + GPIO_WriteBit(port, pin, static_cast(state)); } diff --git a/midi2cv/makefile b/midi2cv/makefile index adac14f..6cd197f 100644 --- a/midi2cv/makefile +++ b/midi2cv/makefile @@ -32,7 +32,7 @@ DENSITY = md MEMORY_MODE = flash # USB = enabled -APPLICATION = TRUE +APPLICATION_SMALL = TRUE BOOTLOADER = midi2cv_bootloader # Preferred upload command diff --git a/midi2cv/midi2cv.cc b/midi2cv/midi2cv.cc index 9061d95..4055edc 100644 --- a/midi2cv/midi2cv.cc +++ b/midi2cv/midi2cv.cc @@ -1,22 +1,54 @@ #include -#include "stmlib/system/system_clock.h" #include "drivers/gpio.h" using namespace stmlib; + + GPIO gpio; + +// Default interrupt handlers. +extern "C" { + void NMI_Handler() { } + void HardFault_Handler() { + while (1); + } + void MemManage_Handler() { while (1); } + void BusFault_Handler() { while (1); } + void UsageFault_Handler() { while (1); } + void SVC_Handler() { } + void DebugMon_Handler() { } + void PendSV_Handler() { } + + // called every 1ms + void SysTick_Handler() { + } +} + + + void Init(void) { - //system_clock.Init(); + SystemInit(); + NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x1000); + + RCC_APB2PeriphClockCmd( + RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | + RCC_APB2Periph_TIM1 | RCC_APB2Periph_USART1, ENABLE); + RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE); + gpio.Init(); } int main(void) { Init(); +while (1) { // hi gpio.Write(GPIO_PIN(GATE_OUT_1), 1); gpio.Write(GPIO_PIN(GATE_OUT_2), 0); gpio.Write(GPIO_PIN(GATE_OUT_3), 1); gpio.Write(GPIO_PIN(GATE_OUT_4), 0); } +} +