/** ***************************************************************************************** * Copyright(c) 2016, Realtek Semiconductor Corporation. All rights reserved. ***************************************************************************************** * @file System_rtl876x.h * @brief CMSIS Device System Header file * @details CMSIS Device System Header File for RTL876x Device Series * @author * @date 3. March 2016 * @version v1.0 * ************************************************************************************* * @attention *

© COPYRIGHT 2016 Realtek Semiconductor Corporation

* ************************************************************************************ */ /*============================================================================* * Define to prevent recursive inclusion *============================================================================*/ #ifndef SYSTEM_RTL876X_H #define SYSTEM_RTL876X_H /*============================================================================* * Headers *============================================================================*/ #include #include #ifdef __cplusplus extern "C" { #endif /** @defgroup SYSTEM_RTL876X System RTL876X * @brief CMSIS API sets for RTL876x Device Series * @{ */ /*============================================================================* * Types *============================================================================*/ /** @defgroup SYSTEM_RTL876X_Exported_Types System RTL876X Exported Types * @{ */ typedef void (*IRQ_Fun)(); /**< ISR Handler Prototype */ typedef enum { LOG_TIMESTAMP_OS = 0, LOG_TIMESTAMP_HW_TIMER = 1, LOG_TIMESTAMP_RSVD = 2, LOG_TIMESTAMP_MAX = 3 } T_LOG_TIMESTAMP_TYPE; typedef enum { LOG_BAUD_RATE_9600, LOG_BAUD_RATE_19200, LOG_BAUD_RATE_115200, LOG_BAUD_RATE_230400, LOG_BAUD_RATE_460800, LOG_BAUD_RATE_921600, LOG_BAUD_RATE_2000000, LOG_BAUD_RATE_3000000, LOG_BAUD_RATE_4000000, LOG_BAUD_RATE_6000000 } LOG_BAUD_RATE_TypeDef; typedef enum { InitialSP_VECTORn = 0, Reset_VECTORn, NMI_VECTORn, HardFault_VECTORn, RSVD_MemMang_VECTORn, RSVD_BusFault_VECTORn, RSVD_UsageFault_VECTORn, RSVD0_VECTORn, RSVD1_VECTORn, RSVD2_VECTORn, RSVD3_VECTORn, SVC_VECTORn, DebugMonitor_VECTORn, RSVD4_VECTORn, PendSV_VECTORn, SysTick_VECTORn, System_VECTORn = 16, WDG_VECTORn, BTMAC_VECTORn, Timer3_VECTORn, Timer2_VECTORn, Platform_VECTORn, I2S0_TX_VECTORn, I2S0_RX_VECTORn, Timer4_5_VECTORn, GPIO4_VECTORn, GPIO5_VECTORn, Uart1_VECTORn, Uart0_VECTORn, RTC_VECTORn, SPI0_VECTORn, SPI1_VECTORn, I2C0_VECTORn, I2C1_VECTORn, ADC_VECTORn, Peripheral_VECTORn, GDMA0_Channel0_VECTORn, GDMA0_Channel1_VECTORn, GDMA0_Channel2_VECTORn, GDMA0_Channel3_VECTORn, Enhanced_Timer0_VECTORn, Enhanced_Timer1_VECTORn, GPIO_Group3_VECTORn, GPIO_Group2_VECTORn, IR_VECTORn, GPIO_Group1_VECTORn, GPIO_Group0_VECTORn, RSVD5_VECTORn, Timer4_VECTORn = 48, Timer5_VECTORn, SPIC0_VECTORn = 50, Qdecode_VECTORn, Keyscan_VECTORn, SPI2W_VECTORn, LPCOMP_VECTORn, PTA_Mailbox_VECTORn, CAP_Touch_VECTORn, TRNG_VECTORn = 57, } VECTORn_Type; typedef enum _SYSTEM_CALL_OPCODE { SYSTEM_CALL_BASE = 0x0, SYSTEM_CALL_WDG_RESET, SYSTEM_CALL_AUTO_K_RF, SYSTEM_CALL_PMU_FORCE_PWM_MODE, SYSTEM_CALL_ENTER_POWERDOWN_DIRECTLY, } T_SYSTEM_CALL_OPCODE; typedef bool (*APP_MAIN_FUNC)(); typedef void (*USER_CALL_BACK)(); /** @} */ /* End of group SYSTEM_RTL876X_Exported_types */ /*============================================================================* * Variables *============================================================================*/ /** @defgroup SYSTEM_RTL876X_Exported_Variables System RTL876X Exported Variables * @brief * @{ */ extern APP_MAIN_FUNC upperstack_entry; extern APP_MAIN_FUNC app_pre_main; extern APP_MAIN_FUNC app_main; extern USER_CALL_BACK app_pre_main_cb; /** @} */ /* End of group SYSTEM_RTL876X_Exported_Variables */ /*============================================================================* * Functions *============================================================================*/ /** @defgroup SYSTEM_RTL876X_Exported_Functions System RTL876X Exported Functions * @brief * @{ */ /** * @brief Initialize RAM vector table to a given RAM address. * @param ram_vector_addr: RAM Vector Address. * @retval TRUE Success * @retval FALSE Fail * @note When using vector table relocation, the base address of the new vector * table must be aligned to the size of the vector table extended to the * next larger power of 2. In RTL8762C, the base address is aligned at 0x100. */ extern bool RamVectorTableInit(uint32_t ram_vector_addr); /** * @brief Update ISR Handler in RAM Vector Table. * @param v_num: Vector number(index) * @param isr_handler: User defined ISR Handler. * @retval TRUE Success * @retval FALSE Fail */ extern bool RamVectorTableUpdate(VECTORn_Type v_num, IRQ_Fun isr_handler); /* * @brief Call the system service. * @param opcode: operation code. * @param parm: parameter. * @return none */ extern void SystemCall(uint32_t opcode, uint32_t parm); /* * @brief update ram layout for app. * @param app_global_size: app global ram size. * @param data_heap_size: data on heap total size. * @param share_cache_ram_size: the size of share cache to ram. * @return none */ extern void update_ram_layout(uint32_t app_global_size, uint32_t data_heap_size, uint32_t share_cache_ram_size); /** * @brief get cpu clock * @param none * @return uint32, for example 40000000 is 40M, 20000000 is 20M. */ extern uint32_t get_cpu_clock(void); /** * @brief get ic type * @param none * @return uint8_t, ic type: * #define RTL8762ESF 0x1D * #define RTL8762EGF 0x18 * #define RTL8762ERF 0x28 * #define RTL8762EJF 0x29 * #define RTL8762EMF 0x39 * #define RS625MF 0x49 * #define RTL8762EKF 0x5A * #define RTL8762EKO 0x6C */ extern uint8_t get_ic_type(void); /** * @brief Deinit the IO function of one pin. * @param Pin_Num: pin number. * This parameter is from ADC_0 to P4_1, please refer to rtl876x.h "Pin_Number" part. * @retval None */ extern void Pinmux_Deinit_rom(uint8_t Pin_Num); /** @} */ /* End of group SYSTEM_RTL876X_Exported_Functions */ /** @} */ /* End of group SYSTEM_RTL876X */ #ifdef __cplusplus } #endif #endif /* SYSTEM_RTL876X_H */