| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- /********************************** (C) COPYRIGHT *******************************
- * File Name : ch32v20x_misc.c
- * Author : WCH
- * Version : V1.0.0
- * Date : 2021/06/06
- * Description : This file provides all the miscellaneous firmware functions .
- *********************************************************************************
- * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
- * Attention: This software (modified or not) and binary are used for
- * microcontroller manufactured by Nanjing Qinheng Microelectronics.
- *******************************************************************************/
- #include "ch32v20x_misc.h"
- __IO uint32_t NVIC_Priority_Group = 0;
- /*********************************************************************
- * @fn NVIC_PriorityGroupConfig
- *
- * @brief Configures the priority grouping - pre-emption priority and subpriority.
- *
- * @param NVIC_PriorityGroup - specifies the priority grouping bits length.
- * NVIC_PriorityGroup_0 - 0 bits for pre-emption priority
- * 3 bits for subpriority
- * NVIC_PriorityGroup_1 - 1 bits for pre-emption priority
- * 2 bits for subpriority
- *
- * @return none
- */
- void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)
- {
- NVIC_Priority_Group = NVIC_PriorityGroup;
- }
- /*********************************************************************
- * @fn NVIC_Init
- *
- * @brief Initializes the NVIC peripheral according to the specified parameters in
- * the NVIC_InitStruct.
- *
- * @param NVIC_InitStruct - pointer to a NVIC_InitTypeDef structure that contains the
- * configuration information for the specified NVIC peripheral.
- * interrupt nesting enable(CSR-0x804 bit1 = 1)
- * NVIC_IRQChannelPreemptionPriority - range from 0 to 1.
- * NVIC_IRQChannelSubPriority - range from 0 to 3.
- *
- * interrupt nesting disable(CSR-0x804 bit1 = 0)
- * NVIC_IRQChannelPreemptionPriority - range is 0.
- * NVIC_IRQChannelSubPriority - range from 0 to 7.
- *
- * @return none
- */
- void NVIC_Init(NVIC_InitTypeDef *NVIC_InitStruct)
- {
- #if (INTSYSCR_INEST == INTSYSCR_INEST_NoEN)
- if(NVIC_Priority_Group == NVIC_PriorityGroup_0)
- {
- NVIC_SetPriority(NVIC_InitStruct->NVIC_IRQChannel, NVIC_InitStruct->NVIC_IRQChannelSubPriority << 4);
- }
- #else
- if(NVIC_Priority_Group == NVIC_PriorityGroup_1)
- {
- if(NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority == 1)
- {
- NVIC_SetPriority(NVIC_InitStruct->NVIC_IRQChannel, (1 << 7) | (NVIC_InitStruct->NVIC_IRQChannelSubPriority << 5));
- }
- else if(NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority == 0)
- {
- NVIC_SetPriority(NVIC_InitStruct->NVIC_IRQChannel, (0 << 7) | (NVIC_InitStruct->NVIC_IRQChannelSubPriority << 5));
- }
- }
- #endif
- if(NVIC_InitStruct->NVIC_IRQChannelCmd != DISABLE)
- {
- NVIC_EnableIRQ(NVIC_InitStruct->NVIC_IRQChannel);
- }
- else
- {
- NVIC_DisableIRQ(NVIC_InitStruct->NVIC_IRQChannel);
- }
- }
|