Settings menu works Movement working & TMP calibrated Tip reading sensibily Accuracy seems ok Trimmed down overshoot by biasing integral Saving to flash working, detailed idle Sleep mode Description scrolls Building for DFU working Motion detection update Use manual alg instead, using highpass filter, then sum current change vs rolling average Re-shuffle the pwm code organisation
105 lines
2.6 KiB
C
105 lines
2.6 KiB
C
// This is the stock standard STM interrupt file full of handlers
|
|
#include "stm32f1xx_hal.h"
|
|
#include "stm32f1xx.h"
|
|
#include "stm32f1xx_it.h"
|
|
#include "cmsis_os.h"
|
|
#include "Setup.h"
|
|
|
|
extern TIM_HandleTypeDef htim1; //used for the systick
|
|
|
|
/******************************************************************************/
|
|
/* Cortex-M3 Processor Interruption and Exception Handlers */
|
|
/******************************************************************************/
|
|
|
|
void NMI_Handler(void) {
|
|
|
|
}
|
|
|
|
//We have the assembly for a breakpoint trigger here to halt the system when a debugger is connected
|
|
// Hardfault handler, often a screwup in the code
|
|
void HardFault_Handler(void) {
|
|
while (1) {
|
|
asm("bkpt");
|
|
}
|
|
}
|
|
|
|
// Memory management unit had an error
|
|
void MemManage_Handler(void) {
|
|
while (1) {
|
|
asm("bkpt");
|
|
}
|
|
}
|
|
|
|
// Prefetcher or busfault occured
|
|
void BusFault_Handler(void) {
|
|
while (1) {
|
|
asm("bkpt");
|
|
}
|
|
}
|
|
|
|
void UsageFault_Handler(void) {
|
|
while (1) {
|
|
asm("bkpt");
|
|
}
|
|
}
|
|
|
|
void DebugMon_Handler(void) {
|
|
}
|
|
|
|
// Systick is used by FreeRTOS tick
|
|
void SysTick_Handler(void) {
|
|
osSystickHandler();
|
|
}
|
|
|
|
/******************************************************************************/
|
|
/* STM32F1xx Peripheral Interrupt Handlers */
|
|
/* Add here the Interrupt Handlers for the used peripherals. */
|
|
/* For the available peripheral interrupt handler names, */
|
|
/* please refer to the startup file. */
|
|
/******************************************************************************/
|
|
|
|
// DMA used to move the ADC readings into system ram
|
|
void DMA1_Channel1_IRQHandler(void) {
|
|
HAL_DMA_IRQHandler(&hdma_adc1);
|
|
}
|
|
|
|
// DMA used for transmitting I2C packets
|
|
void DMA1_Channel6_IRQHandler(void) {
|
|
HAL_DMA_IRQHandler(&hdma_i2c1_tx);
|
|
}
|
|
|
|
//DMA used for receiving I2C packets
|
|
void DMA1_Channel7_IRQHandler(void) {
|
|
HAL_DMA_IRQHandler(&hdma_i2c1_rx);
|
|
}
|
|
|
|
//ADC interrupt used for DMA
|
|
void ADC1_2_IRQHandler(void) {
|
|
HAL_ADC_IRQHandler(&hadc1);
|
|
}
|
|
|
|
//Timer 1 has overflowed, used for HAL ticks
|
|
void TIM1_UP_IRQHandler(void) {
|
|
HAL_TIM_IRQHandler(&htim1);
|
|
|
|
}
|
|
//Timer 3 is used for the PWM output to the tip
|
|
void TIM3_IRQHandler(void) {
|
|
HAL_TIM_IRQHandler(&htim3);
|
|
}
|
|
|
|
//Timer 2 is used for co-ordination of PWM & ADC
|
|
void TIM2_IRQHandler(void) {
|
|
HAL_TIM_IRQHandler(&htim2);
|
|
}
|
|
//EXTI 3 is triggered via the accelerometer on orientation change
|
|
void EXTI3_IRQHandler(void) {
|
|
|
|
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);
|
|
}
|
|
//EXTI 5 is triggered via the accelerometer on movement
|
|
void EXTI9_5_IRQHandler(void) {
|
|
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_5);
|
|
|
|
}
|