1 /********************************** (C) COPYRIGHT ******************************* 2 * File Name : ch32f20x_misc.h 3 * Author : WCH 4 * Version : V1.0.0 5 * Date : 2021/08/08 6 * Description : This file contains all the functions prototypes for the 7 * miscellaneous firmware library functions. 8 *******************************************************************************/ 9 #ifndef __CH32F20x_MISC_H 10 #define __CH32F20x_MISC_H 11 12 #ifdef __cplusplus 13 extern "C" { 14 #endif 15 16 #include "ch32f20x.h" 17 18 /* NVIC Init Structure definition */ 19 typedef struct 20 { 21 uint8_t NVIC_IRQChannel; /* Specifies the IRQ channel to be enabled or disabled. 22 This parameter can be a value of @ref IRQn_Type 23 (For the complete CH32 Devices IRQ Channels list, please 24 refer to ch32f10x.h file) */ 25 26 uint8_t NVIC_IRQChannelPreemptionPriority; /* Specifies the pre-emption priority for the IRQ channel 27 specified in NVIC_IRQChannel. This parameter can be a value 28 between 0 and 15 as described in the table @ref NVIC_Priority_Table */ 29 30 uint8_t NVIC_IRQChannelSubPriority; /* Specifies the subpriority level for the IRQ channel specified 31 in NVIC_IRQChannel. This parameter can be a value 32 between 0 and 15 as described in the table @ref NVIC_Priority_Table */ 33 34 FunctionalState NVIC_IRQChannelCmd; /* Specifies whether the IRQ channel defined in NVIC_IRQChannel 35 will be enabled or disabled. 36 This parameter can be set either to ENABLE or DISABLE */ 37 } NVIC_InitTypeDef; 38 39 40 /* Vector_Table_Base */ 41 #define NVIC_VectTab_RAM ((uint32_t)0x20000000) 42 #define NVIC_VectTab_FLASH ((uint32_t)0x08000000) 43 44 /* System_Low_Power */ 45 #define NVIC_LP_SEVONPEND ((uint8_t)0x10) 46 #define NVIC_LP_SLEEPDEEP ((uint8_t)0x04) 47 #define NVIC_LP_SLEEPONEXIT ((uint8_t)0x02) 48 49 50 /* Preemption_Priority_Group */ 51 #define NVIC_PriorityGroup_0 ((uint32_t)0x700) /* 0 bits for pre-emption priority 52 4 bits for subpriority */ 53 #define NVIC_PriorityGroup_1 ((uint32_t)0x600) /* 1 bits for pre-emption priority 54 3 bits for subpriority */ 55 #define NVIC_PriorityGroup_2 ((uint32_t)0x500) /* 2 bits for pre-emption priority 56 2 bits for subpriority */ 57 #define NVIC_PriorityGroup_3 ((uint32_t)0x400) /* 3 bits for pre-emption priority 58 1 bits for subpriority */ 59 #define NVIC_PriorityGroup_4 ((uint32_t)0x300) /* 4 bits for pre-emption priority 60 0 bits for subpriority */ 61 62 /* SysTick_clock_source */ 63 #define SysTick_CLKSource_HCLK_Div8 ((uint32_t)0xFFFFFFFB) 64 #define SysTick_CLKSource_HCLK ((uint32_t)0x00000004) 65 66 67 void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup); 68 void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct); 69 void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset); 70 void NVIC_SystemLPConfig(uint8_t LowPowerMode, FunctionalState NewState); 71 void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource); 72 73 #ifdef __cplusplus 74 } 75 #endif 76 77 #endif 78 79