NVIC外部中断实验(很好理解的版本)

注意:中断服务函数在启动文件startup_stm32f10x_hd.s里找

一、如何做中断初始化?

  1. 首先选择中断分组:调用NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)

这个函数有1个参数?如何赋值?

0组、1组、2组、3组、4组,对应的宏NVIC_PriorityGroup_0~NVIC_PriorityGroup_4; 

调用函数的格式:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2)

  1. NVIC初始化(使用哪个中断?这个中断主优先等级、响应等级是什么呢?使能中断,使CPU能够响应这个中断。)

 

 

调用void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);

NVIC_InitStruct初始化结构体成员:

1)中断通道    IRQChannel

2)中断主优先等级PreemptionPriority

3)中断响应等级SubPriority

4)使能Cmd

  • 四个成员变量如何?
  • 1)中断通道    IRQChannel----- stm32f10x.h头文件里面所有中断通道枚举
  • 2)中断主优先等级PreemptionPriority------依据所选的中断分组,选定主优先等级
  • 0~2NVIC_PriorityGroup_2);
  • 3)中断响应等级SubPriority------依据所选的中断分组,选定主优先等级0~2NVIC_PriorityGroup_2);
  • 4)使能Cmd-----ENABLE/DISABLE

 

二、第一个中断类型:

外部中断EXTI  EXTI0~EXTI15

外部中断的初始化:比如用EXTI4

  1. EXTI4外部中断映射到对应的端口引脚PA4上:

调用void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)

两个参数的宏分别是什么?

端口宏:GPIO_PortSourceGPIOA~GPIO_PortSourceGPIOG;

引脚宏:GPIO_PinSource0~GPIO_PinSource15

GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource4)

  1. EXTI中断线初始化:调用EXTI_Init(); 

初始化哪些参数:

1)指定外部中断线EXTI_Line;

2)外部中断线工作模式mode

3)触发的边沿Trigger

4)使能中断线Cmd)

4个成员如何赋值:

  1. 指定外部中断线EXTI_Line----stm32f10x_exti.h头文件中的宏EXTI_Line0~EXTI_Line15
  2. 外部中断线工作模式mode----中断工作模式/事件工作模式stm32f10x_exti.h头文件中的宏EXTI_Mode_Interrupt 或者 EXTI_Mode_Event
  3. 触发的边沿Trigger----上升沿、下降沿、上升沿和下降沿,对应stm32f10x_exti.h头文件中的宏EXTI_Trigger_RisingEXTI_Trigger_Falling EXTI_Trigger_Rising_Falling
  4. 使能中断线Cmd-----ENABLE/DISABLE.

  1. 中断要做什么事?

中断服务函数编写:

  1. 所用的中断对应中断服务函数名字什么?

启动文件startup_stm32f10x_hd.s用汇编语言给出所有中断函数的名称。

 

  1. 中断服务函数的格式:

1)先通过中断标志状态判断中断发生?

2)中断结束之前清除中断标志位。

这个是中断服务函数

void EXTI15_10_IRQHandler(void)

{

   if(EXTI_GetITStatus(EXTI_Line15) != RESET)   //1)先通过中断标志状态判断中断发生?

    {

        SPK_TOGGLE;  //中断要的事情

        EXTI_ClearITPendingBit(EXTI_Line15);   //2)中断结束之前清除中断标志位。

    } 

}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值