STM32F1xx_StdPeriph_Driver——MISC

一:定义的数据结构

typedef struct
{
  uint8_t NVIC_IRQChannel;    //指定要启用或禁用的IRQ通道。此参数可以是IRQn_Type枚举的枚举器(有关完整的STM32设备                                                        IRQ通道列表,请参阅stm32f1xx.h文件)

  uint8_t NVIC_IRQChannelPreemptionPriority; //指定NVIC_IRQChannel中指定的IRQ通道的抢占优先级。该参数可以是0到15之                                                                                  间的值,如表MISC_NVIC_Priority_Table中所述。较低优先级值表示较高优先级

  uint8_t NVIC_IRQChannelSubPriority;     //指定NVIC_IRQChannel中指定的IRQ通道的子优先级。该参数可以是0到15之间的                                                                                    值,如表MISC_NVIC_Priority_Table中所述。较低优先级值表示较高优先级

  FunctionalState NVIC_IRQChannelCmd;     //指定是启用还是禁用NVIC_IRQChannel中定义的IRQ通道。此参数可以设置为                                                                                      ENABLE或DISABLE
} NVIC_InitTypeDef;

 

二:预定义的配置项

/*------------------MISC_Vector_Table_Base----------------------------*/

#define NVIC_VectTab_RAM             ((uint32_t)0x20000000)
#define NVIC_VectTab_FLASH           ((uint32_t)0x08000000)
#define IS_NVIC_VECTTAB(VECTTAB) (((VECTTAB) == NVIC_VectTab_RAM) || \
                                  ((VECTTAB) == NVIC_VectTab_FLASH))
 

/*------------------MISC_System_Low_Power----------------------------*/

#define NVIC_LP_SEVONPEND            ((uint8_t)0x10)
#define NVIC_LP_SLEEPDEEP            ((uint8_t)0x04)
#define NVIC_LP_SLEEPONEXIT          ((uint8_t)0x02)
#define IS_NVIC_LP(LP) (((LP) == NVIC_LP_SEVONPEND) || \
                        ((LP) == NVIC_LP_SLEEPDEEP) || \
                        ((LP) == NVIC_LP_SLEEPONEXIT))

/*------------------MISC_Preemption_Priority_Group----------------------------*/

#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 */

#define IS_NVIC_PRIORITY_GROUP(GROUP) (((GROUP) == NVIC_PriorityGroup_0) || \
                                       ((GROUP) == NVIC_PriorityGroup_1) || \
                                       ((GROUP) == NVIC_PriorityGroup_2) || \
                                       ((GROUP) == NVIC_PriorityGroup_3) || \
                                       ((GROUP) == NVIC_PriorityGroup_4))

#define IS_NVIC_PREEMPTION_PRIORITY(PRIORITY)  ((PRIORITY) < 0x10)

#define IS_NVIC_SUB_PRIORITY(PRIORITY)  ((PRIORITY) < 0x10)

#define IS_NVIC_OFFSET(OFFSET)  ((OFFSET) < 0x000FFFFF)

 

/*------------------MISC_SysTick_clock_source ----------------------------*/

#define SysTick_CLKSource_HCLK_Div8    ((uint32_t)0xFFFFFFFB)
#define SysTick_CLKSource_HCLK         ((uint32_t)0x00000004)
#define IS_SYSTICK_CLK_SOURCE(SOURCE) (((SOURCE) == SysTick_CLKSource_HCLK) || \
                                       ((SOURCE) == SysTick_CLKSource_HCLK_Div8))


三:定义的功能函数

void NVIC_Init(NVIC_InitTypeDef *NVIC_InitStruct)     
说明:    根据NVIC_InitStruct中的指定参数初始化NVIC外设。

注意:
        要正确配置中断优先级,应先调用NVIC_PriorityGroupConfig()函数。
参数:
        NVIC_InitStruct:     指向NVIC_InitTypeDef结构的指针,该结构包含指定NVIC外设的配置信息。
返回值:
        无     
void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)     
说明:    配置优先级分组:抢占优先级和子优先级。

参数:
        NVIC_PriorityGroup  : 指定优先级分组位长度。此参数可以是以下值之一:
        NVIC_PriorityGroup_0:0比特用于抢占优先级4比特用于子优先级
        NVIC_PriorityGroup_1:1比特用于抢占优先级3比特用于子优先级
        NVIC_PriorityGroup_2:2比特用于抢占优先级2比特用于子优先级
        NVIC_PriorityGroup_3:3比特用于抢占优先级1比特用于子优先级
        NVIC_PriorityGroup_4:4比特,用于抢占优先级为0的比特用于子优先级
注意:
        选择NVIC_PriorityGroup_0时,IRQ抢占不再可能。待处理的IRQ优先级将仅由子优先级管理。
返回值:
        无     
void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset);            
说明:    设置向量表位置和偏移量。

参数:
        NVIC_VectTab: 指定向量表是在RAM还是FLASH存储器中。此参数可以是以下值之一:
            NVIC_VectTab_RAM:内部SRAM中的向量表。
            NVIC_VectTab_FLASH:内部FLASH中的向量表。
        Offset      : 矢量表基本偏移字段。该值必须是0x200的倍数。
返回值:
        无     
void NVIC_SystemLPConfig(uint8_t LowPowerMode,FunctionalState     NewState)            
说明:    选择系统进入低功耗模式的条件。

参数:
        LowPowerMode       : 指定系统进入低功耗模式的新模式。此参数可以是以下值之一:
        NVIC_LP_SEVONPEND  :Pend上的低功耗SEV。
        NVIC_LP_SLEEPDEEP  :低功耗DEEPSLEEP请求。
        NVIC_LP_SLEEPONEXIT:退出时低功耗睡眠。
        NewState           : LP状态的新状态。此参数可以是:ENABLE或DISABLE。
返回值:
        无     
void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource)     
说明:    配置SysTick时钟源。

参数:
        SysTick_CLKSource          : 指定SysTick时钟源。此参数可以是以下值之一:
        SysTick_CLKSource_HCLK_Div8:AHB时钟除以8选为SysTick时钟源。
        SysTick_CLKSource_HCLK     :选择AHB时钟作为SysTick时钟源。
返回值:
        无     
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值