#ifndef _DRV_MISC_H_
#define _DRV_MISC_H_

#ifdef __cplusplus
extern "C" {
#endif 

#include "kit_macro.h"

#define NVIC_PriorityGroup_0         ((uint32_t)0x700) /*!< 0 bits for pre-emption priority, 4 bits for subpriority */
#define NVIC_PriorityGroup_1         ((uint32_t)0x600) /*!< 1 bits for pre-emption priority, 3 bits for subpriority */
#define NVIC_PriorityGroup_2         ((uint32_t)0x500) /*!< 2 bits for pre-emption priority, 2 bits for subpriority */
#define NVIC_PriorityGroup_3         ((uint32_t)0x400) /*!< 3 bits for pre-emption priority, 1 bits for subpriority */
#define NVIC_PriorityGroup_4         ((uint32_t)0x300) /*!< 4 bits for pre-emption priority, 0 bits for subpriority */


typedef enum
{
	kPwrOffVolt_2_2,
	kPwrOffVolt_2_3,
	kPwrOffVolt_2_4,
	kPwrOffVolt_2_5,
	kPwrOffVolt_2_6,
	kPwrOffVolt_2_7,
	kPwrOffVolt_2_8,
	kPwrOffVolt_2_9,
	kPwrOffVolt_End,
}PwrOffVolt;

void drv_misc_reset_mcu(void);
void drv_misc_reset_core(void);
void drv_misc_set_nvic(int8_t irq_channel, uint8_t priority);
void drv_misc_cfg_pwr_off_interrupt(uint8_t priority,PwrOffVolt volt, NoArgCall int_call);
void drv_mist_set_priority_group(uint16_t pri_group);
#ifdef __cplusplus
}
#endif

#endif
