#ifndef __CLK_RST_H__ #define __CLK_RST_H__ /******************************************************************************* * Include files ******************************************************************************/ #include "stdint.h" /* C binding of definitions if building with C++ compiler */ #ifdef __cplusplus extern "C" { #endif // the following macro make sure mutual exclusive read-modify-write when enable or disable peripheral clk in multi-task OS #define PeriClk_MutEnable(__CLK__) ((__CLK__)<32 ? PeriClk0MutEnable(0x1u<<(__CLK__)) : \ PeriClk1MutEnable(0x1u<<((__CLK__)&0x1Fu))) #define PeriClk_MutDisable(__CLK__) ((__CLK__)<32 ? PeriClk0MutDisable(~(0x1u<<(__CLK__))) : \ PeriClk1MutDisable(~(0x1u<<((__CLK__)&0x1Fu)))) // the following is defined for __CLK__ typedef enum { PeriClk_Uart0 = 0u, PeriClk_Uart1 = 1u, PeriClk_LpUart0 = 2u, PeriClk_LpUart1 = 3u, PeriClk_I2c0 = 4u, PeriClk_I2c1 = 5u, PeriClk_Spi0 = 6u, PeriClk_Spi1 = 7u, PeriClk_BaseTim = 8u, PeriClk_LpTim0 = 9u, PeriClk_AdvTim = 10u, PeriClk_Tim3 = 11u, PeriClk_Opa = 13u, PeriClk_Pca = 14u, PeriClk_Wdt = 15u, PeriClk_AdcBgr = 16u, PeriClk_VcLvd = 17u, PeriClk_Trng = 18u, PeriClk_Pcnt = 19u, PeriClk_Rtc = 20u, PeriClk_Trim = 21u, PeriClk_Lcd = 22u, PeriClk_Tick = 24u, PeriClk_Swd = 25u, PeriClk_Crc = 26u, PeriClk_Aes = 27u, PeriClk_Gpio = 28u, PeriClk_Dma = 29u, PeriClk_Flash = 31u, PeriClk_Dac = 35u, PeriClk_LpTim1 = 36u, PeriClk_Uart2 = 40u, PeriClk_Uart3 = 41u, } peri_clk_t; typedef enum { ResetUart0 = 0u, ResetUart1 = 1u, ResetLpUart0 = 2u, ResetLpUart1 = 3u, ResetI2c0 = 4u, ResetI2c1 = 5u, ResetSpi0 = 6u, ResetSpi1 = 7u, ResetBaseTim = 8u, ResetLpTim0 = 9u, ResetAdvTim = 10u, ResetTim3 = 11u, ResetOpa = 13u, ResetPca = 14u, ResetAdcBgr = 16u, ResetVcLvd = 17u, ResetRng = 18u, ResetPcnt = 19u, ResetRtc = 20u, ResetTrim = 21u, ResetLcd = 22u, ResetTick = 24u, ResetSwd = 25u, ResetCrc = 26u, ResetAes = 27u, ResetGpio = 28u, ResetDma = 29u, ResetDac = 35u, ResetLpTim1 = 36u, ResetUart2 = 40u, ResetUart3 = 41u, } peri_reset_t; extern void PeriClk0MutEnable(uint32_t ClkBitMsk); extern void PeriClk1MutEnable(uint32_t ClkBitMsk); extern void PeriClk0MutDisable(uint32_t ClkBitMsk_n); extern void PeriClk1MutDisable(uint32_t ClkBitMsk_n); extern void MutResetPeri(peri_reset_t PeriRst); typedef struct{ uint8_t valid : 1; // Bit[0] int32_t ppm : 31; // Bit[31:1] } clkoffset_t; extern void clktrim_init(void); extern clkoffset_t clktrim_check(void); #ifdef __cplusplus } #endif #endif /* __CLK_RST_H__ */ /****************************************************************************** * EOF (not truncated) ******************************************************************************/