#ifndef __SYSTEM_STM32L4XX_H #define __SYSTEM_STM32L4XX_H #include /** @file * @brief Základní nastavení CPU. * * Doplněné o DBGMCU pro debug ve sleep módu. * */ #ifdef __cplusplus extern "C" { #endif /** System Clock Frequency (Core Clock) */ extern uint32_t SystemCoreClock; /** Inicializace jádra a hodin periferií */ extern void SystemInit (void); /** Spočte frekvenci jádra v závislosti na nastavení */ extern void SystemCoreClockUpdate (void); /** Inicializace jen tabulky vektorů, hodiny a flash inicializovány bootloaderem */ extern void UserSystemInit (void); /// Control registr DEBUG MCU typedef union { struct { uint32_t DBG_SLEEP : 1; //!< Debug Sleep mode uint32_t DBG_STOP : 1; //!< Debug Stop mode uint32_t DBG_STANDBY : 1; //!< Debug Standby mode uint32_t UNUSED1 : 2; uint32_t TRACE_IOEN : 1; //!< Trace pin assignment control uint32_t TRACE_MODE : 2; //!< TRACE pin assignment for Asynchronous/Synchronous Mode, TRACEDATA size uint32_t UNUSED2 : 24; } B; //!< jednotlivé bity uint32_t R; //!< Celková hodnota } DBGMCU_CR; /// Blok řízení DEBUG MCU typedef struct { volatile uint32_t IDCODE; //!< ID procesoru volatile DBGMCU_CR CR; //!< Řízení debug při low power modech. volatile uint32_t APB1_FZ1; //!< chování periferií při debug volatile uint32_t APB1_FZ2; //!< chování periferií při debug volatile uint32_t APB2_FZ; //!< chování periferií při debug } DBGMCU_L4; /// Adresa DBGMCU bloku static DBGMCU_L4 * const MDBGMCU = (DBGMCU_L4 *) 0xE0042000; /// Pokud použijeme v programu wfi/wfe, je nutné povolit debug i v tt. módu. static inline void EnableDebugOnSleep (void) { MDBGMCU->CR.B.DBG_SLEEP = 1; } #ifdef __cplusplus } #endif #endif /*__SYSTEM_STM32L4XX_H */