* ApiHal: console abstraction, change uart baud rate to 230400. Bootloader: drop F5. Furi: prevent thread local output to serial console in stdglue. * ApiHal: take control over system initialization, reorder some subsystems in a hope of fixing USB issues. * Main: cleanup dead code. ISR: take care of HSECSS by our self. USB: leave clock configuration alone. * F6 cube: switch RCC to LL. * Cli: rollback return behavior.
		
			
				
	
	
		
			110 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include "main.h"
 | 
						|
#include "stm32wbxx_it.h"
 | 
						|
#include "FreeRTOS.h"
 | 
						|
#include "task.h"
 | 
						|
 | 
						|
extern PCD_HandleTypeDef hpcd_USB_FS;
 | 
						|
extern ADC_HandleTypeDef hadc1;
 | 
						|
extern COMP_HandleTypeDef hcomp1;
 | 
						|
extern RTC_HandleTypeDef hrtc;
 | 
						|
extern TIM_HandleTypeDef htim1;
 | 
						|
extern TIM_HandleTypeDef htim2;
 | 
						|
extern TIM_HandleTypeDef htim16;
 | 
						|
extern TIM_HandleTypeDef htim17;
 | 
						|
 | 
						|
extern void HW_TS_RTC_Wakeup_Handler();
 | 
						|
extern void HW_IPCC_Tx_Handler();
 | 
						|
extern void HW_IPCC_Rx_Handler();
 | 
						|
 | 
						|
void NMI_Handler(void) {
 | 
						|
    if (LL_RCC_IsActiveFlag_HSECSS()) {
 | 
						|
        LL_RCC_ClearFlag_HSECSS();
 | 
						|
        NVIC_SystemReset();
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
void HardFault_Handler(void) {
 | 
						|
    if ((*(volatile uint32_t *)CoreDebug_BASE) & (1 << 0)) {
 | 
						|
        __asm("bkpt 1");
 | 
						|
    }
 | 
						|
    while (1) {}
 | 
						|
}
 | 
						|
 | 
						|
void MemManage_Handler(void) {
 | 
						|
    __asm("bkpt 1");
 | 
						|
    while (1) {}
 | 
						|
}
 | 
						|
 | 
						|
void BusFault_Handler(void) {
 | 
						|
    __asm("bkpt 1");
 | 
						|
    while (1) {}
 | 
						|
}
 | 
						|
 | 
						|
void UsageFault_Handler(void) {
 | 
						|
    __asm("bkpt 1");
 | 
						|
    while (1) {}
 | 
						|
}
 | 
						|
 | 
						|
void DebugMon_Handler(void) {
 | 
						|
}
 | 
						|
 | 
						|
void SysTick_Handler(void) {
 | 
						|
    HAL_IncTick();
 | 
						|
}
 | 
						|
 | 
						|
void TAMP_STAMP_LSECSS_IRQHandler(void) {
 | 
						|
    if (LL_RCC_IsActiveFlag_LSECSS()) {
 | 
						|
        LL_RCC_ClearFlag_LSECSS();
 | 
						|
        if (!LL_RCC_LSE_IsReady()) {
 | 
						|
            // TODO: notify user about issue with LSE
 | 
						|
            LL_RCC_ForceBackupDomainReset();
 | 
						|
            LL_RCC_ReleaseBackupDomainReset();
 | 
						|
            NVIC_SystemReset();
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
void RCC_IRQHandler(void) {
 | 
						|
}
 | 
						|
 | 
						|
void ADC1_IRQHandler(void) {
 | 
						|
    HAL_ADC_IRQHandler(&hadc1);
 | 
						|
}
 | 
						|
 | 
						|
void USB_LP_IRQHandler(void) {
 | 
						|
    HAL_PCD_IRQHandler(&hpcd_USB_FS);
 | 
						|
}
 | 
						|
 | 
						|
void COMP_IRQHandler(void) {
 | 
						|
    HAL_COMP_IRQHandler(&hcomp1);
 | 
						|
}
 | 
						|
 | 
						|
void TIM1_UP_TIM16_IRQHandler(void) {
 | 
						|
    HAL_TIM_IRQHandler(&htim1);
 | 
						|
    HAL_TIM_IRQHandler(&htim16);
 | 
						|
}
 | 
						|
 | 
						|
void TIM1_TRG_COM_TIM17_IRQHandler(void) {
 | 
						|
    HAL_TIM_IRQHandler(&htim1);
 | 
						|
}
 | 
						|
 | 
						|
void TIM1_CC_IRQHandler(void) {
 | 
						|
    HAL_TIM_IRQHandler(&htim1);
 | 
						|
}
 | 
						|
 | 
						|
void HSEM_IRQHandler(void) {
 | 
						|
    HAL_HSEM_IRQHandler();
 | 
						|
}
 | 
						|
 | 
						|
void RTC_WKUP_IRQHandler(void){
 | 
						|
    HW_TS_RTC_Wakeup_Handler();
 | 
						|
}
 | 
						|
 | 
						|
void IPCC_C1_TX_IRQHandler(void){
 | 
						|
    HW_IPCC_Tx_Handler();
 | 
						|
}
 | 
						|
 | 
						|
void IPCC_C1_RX_IRQHandler(void){
 | 
						|
    HW_IPCC_Rx_Handler();
 | 
						|
}
 |