发新帖我要提问
123
返回列表
打印
[其他ST产品]

STM32“智能人数控制系统”(GPIO+EXTI外部中断)

[复制链接]
楼主: 4c1l
手机看帖
扫描二维码
随时随地手机跟帖
41
4c1l|  楼主 | 2023-11-22 12:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
配置中断通道:

GPIO_EXTILineConfig(GPIO_PortSource,GPIO_PinSource)

使用特权

评论回复
42
4c1l|  楼主 | 2023-11-22 12:15 | 只看该作者
参数说明:

GPIO_PortSource:GPIO引脚所在的GPIO端口编号,取值范围为GPIO_PortSource_GPIOx,x为A、B、C等。
GPIO_PinSource:GPIO引脚的引脚编号,取值范围为GPIO_PinSource_x,x为0~15。

使用特权

评论回复
43
4c1l|  楼主 | 2023-11-22 12:15 | 只看该作者
例如,如果要将GPIOA的Pin0与外部中断线路0关联,可以使用以下代码:GPIO_EXTILineConfig(GPIO_PortSource_GPIOA, GPIO_PinSource_0)

通过这个函数的调用,将指定的GPIO引脚与指定的外部中断线路关联起来,以便在产生外部中断时能够触发相应的中断处理程序

第四步:配置EXIT选择边沿触发方式,比如上升沿、下降沿或者双边沿,选择触发响应方式,中断响应或者事件响应。

使用特权

评论回复
44
4c1l|  楼主 | 2023-11-22 12:15 | 只看该作者
EXTI_InitTypeDef EXTI_InitStructure; //EXIT初始化结构体

EXTI_Line:指定要使用的外部中断线路。可以使用逻辑或运算符(|)将多个中断线路组合在一起。取值可以是以下之一:

EXTI_Line0 ~ EXTI_Line15:分别对应外部中断线路0 ~ 15。
EXTI_LineNone:表示不使用任何外部中断线路。

使用特权

评论回复
45
4c1l|  楼主 | 2023-11-22 12:16 | 只看该作者
EXTI_Mode:指定外部中断的工作模式。可以取值为以下之一

EXTI_Mode_Interrupt:配置为中断模式。当外部中断触发时,会产生中断请求。
EXTI_Mode_Event:配置为事件模式。当外部中断触发时,不会产生中断请求,但会触发事件。

使用特权

评论回复
46
4c1l|  楼主 | 2023-11-22 12:16 | 只看该作者
EXTI_Trigger:指定外部中断触发的方式。可以取值为以下之一:

EXTI_Trigger_Rising:上升沿触发。
EXTI_Trigger_Falling:下降沿触发。
EXTI_Trigger_Rising_Falling:上升沿和下降沿都触发。

使用特权

评论回复
47
4c1l|  楼主 | 2023-11-22 12:16 | 只看该作者
EXTI_LineCmd:指定是否使能外部中断线路。可以取值为以下之一:

ENABLE:使能外部中断线路。
DISABLE:禁用外部中断线路。

使用特权

评论回复
48
4c1l|  楼主 | 2023-11-22 12:16 | 只看该作者
EXTI_Init(&EXTI_InitStructure);

第五步:配置NVIC,配置中断的合适优先级

设置优先级分组:NVIC_PriorityGroupConfig();

NVIC_PriorityGroup_0:优先级分组为0,不分组,4位抢占优先级,没有子优先级。
NVIC_PriorityGroup_1:优先级分组为1,2位抢占优先级,2位子优先级。
NVIC_PriorityGroup_2:优先级分组为2,3位抢占优先级,1位子优先级。
NVIC_PriorityGroup_3:优先级分组为3,4位抢占优先级,没有子优先级。

使用特权

评论回复
49
4c1l|  楼主 | 2023-11-22 12:16 | 只看该作者
配置NVIC:

NVIC_InitTypeDef NVIC_InitStructure;

NVIC_IRQChannel:指定要配置的中断通道。取值范围为0到239。通道号可以通过查看芯片的参考手册或者使用HAL库提供的宏定义来确定。
NVIC_IRQChannelPreemptionPriority:指定中断抢占优先级。取值范围为0到15。数值越小,优先级越高。
NVIC_IRQChannelSubPriority:指定中断子优先级。取值范围为0到15。数值越小,优先级越高。
NVIC_IRQChannelCmd:指定中断使能状态。可以为ENABLE或DISABLE。

使用特权

评论回复
50
4c1l|  楼主 | 2023-11-22 12:18 | 只看该作者
NVIC_Init(&NVIC_InitStructure);

最后编写中断函数(中断函数的命名于使用的通道有关需要查看库函数定义)返回值和参数都是void

使用特权

评论回复
51
4c1l|  楼主 | 2023-11-22 12:18 | 只看该作者
学习完这些就可轻松完成本次的功能,我是一名刚刚学习嵌入式的小白,欢迎大家一起交流学习讨论。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则