中断处理流程

外设中断处理流程

  1. NVIC中断优先级分组

NVIC_SetPriorityGrouping(NVIC_PriorityGroup_2);

  1. 初始化中断

GPIO_InitTypeDef GPIO_InitStructure;

USART_InitTypeDef USART_InitStructure;

NVIC_InitTypeDef NVIC_InitStructure;

以stm32f103为例

(1)使能GPIOA,USART1时钟

(2)配置PA9为复用功能推挽输出、配置PA10为浮空输入

(3)NVIC配置,初始化参数配置(分配抢占优先级和响应优先级等等)

(4)USART1配置,初始化参数配置(配置传输的位数等等)

(5)清除RXNE接收非空,TC发送完成标记

void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG);

(6)清除中断标志,以便接收新的中断

(7)使能接收非空中断

void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState);

(8)使能USART1

void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState);

  1. 写中断处理(服务)函数

void USART1_IRQHandler(void)

  1. 判断是否是接收非空中断

ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT);

  1. 关闭中断

USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);

  1. 清除接收非空标志

USART_ClearITPendingBit(USART1, USART_IT_RXNE);

外部中断处理流程(针对IO口)

  1. NVIC中断优先级分组

  1. 初始化中断

GPIO_InitTypeDef GPIO_InitStructure;

EXTI_InitTypeDef EXTI_InitStructure;

NVIC_InitTypeDef NVIC_InitStructure;

(1)RCC使能AFIO和GPIOA

(2)NVIC配置,初始化参数配置(分配抢占优先级和响应优先级等等)

(3)配置PA0为输入上拉

(4)中断线配置

(5)清除中断线上的中断标志

(6)EXTI初始化参数配置

  1. 函数配置

在中断向量表中找到需要的函数并复制使用

void EXTI0_IRQHandler(void)

函数使用结束后,必须清除中断标志,如果不清楚则无法响应后续中断

EXTI_ClearITPendingBit(EXTI_Line0);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值