当前位置: 首页> 教育> 就业 > 网页制作是计算机什么专业_seo怎么收费seo_表白网站制作_google入口

网页制作是计算机什么专业_seo怎么收费seo_表白网站制作_google入口

时间:2025/7/9 22:06:10来源:https://blog.csdn.net/2302_80219536/article/details/145101946 浏览次数:0次
网页制作是计算机什么专业_seo怎么收费seo_表白网站制作_google入口

EXTI

  • 一、什么是EXTI
  • 二、配置步骤
      • 1. 初始化GPIO
      • 2. 配置SYSCFG
      • 3. 配置EXTI
      • 4. 配置NVIC
      • 5. 编写中断服务函数
  • 三、注意事项
  • 总结


提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是EXTI

EXTI(外部中断/事件控制器)。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。

二、配置步骤

1. 初始化GPIO

首先,需要将目标引脚配置为输入模式。例如,将GPIOA的Pin0配置为输入模式:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 使能GPIOA时钟
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // 输入模式,带上拉
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // 选择引脚
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 设置速度
GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化GPIO

2. 配置SYSCFG

将GPIO引脚映射到EXTI中断线上。例如,将GPIOA的Pin0映射到EXTI_Line0:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); // 使能AFIO时钟
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); // 将GPIOA的Pin0映射到EXTI_Line0

3. 配置EXTI

指定中断触发条件(上升沿、下降沿或双边沿):

EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line = EXTI_Line0; // 选择中断线
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; // 设置为中断模式
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; // 下降沿触发
EXTI_InitStructure.EXTI_LineCmd = ENABLE; // 使能中断线
EXTI_Init(&EXTI_InitStructure); // 初始化EXTI

4. 配置NVIC

另一篇文章:NVIC详细介绍(点击跳转)
在NVIC中使能对应的中断优先级:

NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); // 配置NVIC优先级分组
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; // 选择中断通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; // 抢占优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 子优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; // 使能中断通道
NVIC_Init(&NVIC_InitStructure); // 初始化NVIC

5. 编写中断服务函数

函数名固定
编写中断服务函数来处理中断请求:

void EXTI0_IRQHandler(void)
{if (EXTI_GetITStatus(EXTI_Line0) == SET) // 检查中断标志{// 处理中断逻辑// 例如,读取GPIO状态if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0){// 执行相关操作}EXTI_ClearITPendingBit(EXTI_Line0); // 清除中断标志}
}

三、注意事项

  • 不同GPIO口相同Pin不能同时触发中断:原因是在AFIO进行中断引脚选择时,一个Pin只能对应一个GPIO口。
  • 中断嵌套:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源。能否进行中断嵌套,也是由中断优先级来决定的。

总结


声明:
本文为本人的学习笔记,旨在记录和分享个人在学习过程中的心得体会和原创代码。由于本人刚入门,对相关知识的理解可能还存在不足之处,文章中难免会有错误或不准确的地方。在此,我诚挚地欢迎各位读者在阅读过程中,如果发现任何问题或有其他建议,随时在评论区或通过其他方式与我交流。我将虚心听取大家的意见,及时修正和改进文章内容,以便更好地学习和成长。感谢大家的关注和支持!


关键字:网页制作是计算机什么专业_seo怎么收费seo_表白网站制作_google入口

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: