stm32之外部中断

中断:在计算机系统中,中断是指计算机自动响应一个中断请求信号,暂时停止当前程序的执行,转而执行为外部设备服务的程序(中断服务程序),并在执行完服务程序后自动返回原程序执行的过程。

中断系统的优点:

1.实现实时处理。

2.实现分时操作,提高MCU的效率。

3.能及时处理故障。

外部中断

1.概念

外部中断一般是指由计算机外设发出的中断请求。

2.使用事项

1)stm32单片机上的I/O口有其对应的外部中断/事件线。

如下图中多个I/O口对应着一个外部中断/事件线:


 

在使用外部中断时对应于同一条外部中断/事件线的I/O口不能重复(如PA0与PB0)。

2)EXIT库函数

常用函数名的使用

EXTI_DeInit的使用

 

                                                              EXTI_Init的使用

 EXTI InitTypeDef structure
EXTI_InitTypeDef定义于文件“stm32f10x_exti.h”:

{typedef struct
u32 EXTI_Line;//选择外部中断线
EXTIModeTypeDef EXTI_Mode;//外部中断的模式,事件模式或中断模式
EXTIrigger TypeDef EXTI_Trigger;//外部中断触发条件,如 EXTI_Trigger_Falling为下降沿触发

FunctionalState EXTI_LineCmd ;//输出状态使能
}EXTI_InitTypeDef

                                                             EXTI_GetFlagStatus

上图例子表示 获取中断线8的状态。

                                                             EXTI_CleanFlag

 上图例子表示清除中断线2的状态。

部分资料来自stm32功能手册。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32中,我们可以使用外部中断来处理按键事件。下面是一个示例代码,展示了如何在STM32中使用外部中断处理按键事件。 首先,我们需要在stm32f10x_it.c文件中定义外部中断的中断服务函数,具体的函数名根据所使用的外部中断线来确定。例如,如果我们使用的是EXTI线0,那么中断服务函数的名字应该是EXTI0_IRQHandler。在这个函数中,我们可以编写处理按键事件的代码。 下面是一个示例代码,展示了如何在stm32f10x_it.c文件中编写外部中断的中断服务函数来处理按键事件: ``` void EXTI0_IRQHandler(void) { if (EXTI_GetITStatus(EXTI_Line0) != RESET) { // 在这里编写按键按下的处理代码 // 例如,可以控制LED的亮灭状态反转 LED_Toggle(); EXTI_ClearITPendingBit(EXTI_Line0); } } ``` 在这个示例中,我们使用了EXTI_Line0作为外部中断线,并在按键按下时切换LED的状态。当按键按下时,中断服务函数会被触发,执行对应的处理代码。 需要注意的是,我们还需要在stm32f10x_it.c文件中的NVIC中配置外部中断的优先级和使能外部中断。 通过上述代码示例,我们可以实现按键外部中断的功能。在实际应用中,可以根据具体的需求和硬件连接,修改中断服务函数中的处理代码,实现相应的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [STM32外部中断+按键](https://blog.csdn.net/qq_43940175/article/details/123034724)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [STM32—中断详解(配合按键中断代码,代码亲测)](https://blog.csdn.net/qq_43743762/article/details/97272694)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值