STM32-自学笔记(14.NVIC和外部中断,程序用到的库函数介绍)

1.GPIO_EXTILineConfig

函数原型:void GPIO_EXTILineConfig(u8 GPIO_PortSource,u8 GPIO_PinSource)

功能:选择GPIO引脚用作外部中断线路

参数

  • GPIO_PortSource:选择用作外部中断源的GPIO端口
  • GPIO_PinSource:待设置的外部中断引脚。该参数可以取GPIO_PinSourcex(x可以是0~15)

返回值:无

参数:GPIO_PortSource

  • GPIO_PortSourceGPIOA                  选择GPIOA
  • GPIO_PortSourceGPIOB                  选择GPIOB
  • GPIO_PortSourceGPIOC                  选择GPIOC
  • GPIO_PortSourceGPIOD                  选择GPIOD
  • GPIO_PortSourceGPIOE                  选择GPIOE

例子

GPIO_EXTILineConfig (GPIO_PortSourceGPIOB,GPIO_PinSource8);         //设置PB.8引脚为外部中断入口8

2.NVIC_PriorityGroupConfig

函数原型:void NVIC_PriorityGroupConfig (u32 NVIC_PriorityGroup)

功能:设置优先级分组的先占优先级和从优先级的数量。

参数: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_PriorityGroupConfig (NVIC_PriorityGroup_1 );          //使用优先级分组1

3.NVIC_Init

函数原型:void NVIC_Init (NVIC_InitTypeDef*NVIC_InitStruct)

功能:根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器。

参数:NVIC_InitStruct:指向结构NVIC_InitTypeDef的指针,包含了外设GPIO的配置信息。

返回值:无

参数:NVIC_InitTypeDef  structure,定义于文件“stm32f10x_nvic.h”:

typedef struct

{

u8 NVIC_IRQChannel;

u8 NVIC_IRQChannelPreemptionPriority;

u8 NVIC_IRQChannelSubPriority;

FunctionalState NVIC_IRQChannelCmd;

}

NVIC_InitTypeDef;

NVIC_IRQChannel,使能或者失能指定的IRQ通道

NVIC_IRQChannelPreemptionPriority,设置成员NVIC_IRQChannel中的先占优先级,设置范围取决于NVIC_PriorityGroup。

NVIC_IRQChannelSubPriority,设置成员NVIC_IRQChannel中的次占优先级,其设置范围取决于NVIC_PriorityGroup。

NVIC_IRQChannelCmd,指定在成员NVIC_IRQChannelCmd中定义的IRQ通道被使能还是失能。这个参数取值为ENABLE或DISABLE。

例子

NVIC_InitTypeDef NVIC_InitStructure;

NVIC_PriorityGroupConfig (NVIC_PriorityGroup_1 );          //使用优先级分组1

//开启TIM3全局中断,赋予其先占优先级0,次占优先级2。

NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQChannel;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_InitStructure(&NVIC_InitStructure);

4.EXTI_Init

函数原型:void EXTI_Init (EXTI_InitTypeDef*EXTI_InitStruct)

功能:根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器

参数:EXTI_InitStruct:指向结构EXTI_InitTypeDef的指针,包含了外设EXTI1的配置信息

返回值:无

参数:EXTI_InitTypeDef structure,定义于文件stm32f10x_exti.h.

typedef struct

{

u32 EXTI_Line;

EXTIMODE_TypeDef EXTI_MODE;

EXTIrigger_TypeDef EXTI_Trigger;

FunctionalState EXTI_LineCmd;

}

EXTI_InitTypeDef;

EXTI_Line,选择待使能或者失能的外部中断线路。

EXTI_Mode,设置被使能线路的模式。

EXTI_Trigger,设置被使能线路的触发边沿。

EXTI_LineCmd,用来定义选中线路的新状态。它可以被设为ENABLE或DISABLE。

例子

//开启外部中断12和14通道,并设置为下降沿触发。

EXTI_InitTypeDef EXTI_InitStructure;

EXTI_InitStructure.EXTI_Line=EXTI_Line12 | EXTI_Line14;

EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;

EXTI_InitStructure.EXTI_LineCmd=ENABLE;

EXTI_Init (&EXTI_InitStructure);

5.EXTI_GenerateSWInterrupt

函数原型:void EXTI_GenerateSWInterrupt (u32 EXTI_Line)

功能:产生一个软件中断

参数:EXTI_Line:产生软件中断的EXTI线路

返回值:无

例子

EXTI_GenerateSWInterrupt (EXTI_Line6);             //在外部中断6通道上产生软件中断

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值