有没有办法在 PA0 和 PB0 上同时触发中断?
Is there a way to have an interrupt firing on both PA0 and PB0?
PDF手册的语言让我很困惑,谷歌搜索也让我不确定。我的理解是否正确,您只能将 16 个外部按钮中断连接到 16 个不同的引脚,并且不能同时配置 PA0 和 PB0 或者说 PB5 和 PC5?所以你基本上仅限于16个外部按钮?
确实,外部GPIO中断的数量限制为16个,不能同时配置PA0和PB0作为中断源。
但是,外部中断并不是读取按钮状态的唯一方法。您可以使用定时器中断实现周期性 GPIO 扫描机制。例如,键盘扫描 方法允许您使用 x+y
GPIO 引脚扫描 x*y
按钮。此方法可以选择使用外部中断(x*y
按钮的 x EXTI)。
您可以转移一个定时器,从 GPIO 到中断控制器 NVIC 获取另一条触发线:
在其中一个引脚(可以是 TIMx_ETR、TIMx_CH1 或 TIM x_CH2 用于任何免费 "TIMx",但不是 TIMx_CH3 或 TIMx_CH4据我所知)。
配置 TIMx 以使用 ETR 或链接到您的引脚的相应通道作为外部触发输入,并在第一个事件时溢出 (PSC=ARR=RCR=0 ).然后每次这个引脚改变时你都会得到一个中断。
您可以根据需要选择侧面极性并激活噪声过滤来进一步扩展此设计。
PDF手册的语言让我很困惑,谷歌搜索也让我不确定。我的理解是否正确,您只能将 16 个外部按钮中断连接到 16 个不同的引脚,并且不能同时配置 PA0 和 PB0 或者说 PB5 和 PC5?所以你基本上仅限于16个外部按钮?
确实,外部GPIO中断的数量限制为16个,不能同时配置PA0和PB0作为中断源。
但是,外部中断并不是读取按钮状态的唯一方法。您可以使用定时器中断实现周期性 GPIO 扫描机制。例如,键盘扫描 方法允许您使用 x+y
GPIO 引脚扫描 x*y
按钮。此方法可以选择使用外部中断(x*y
按钮的 x EXTI)。
您可以转移一个定时器,从 GPIO 到中断控制器 NVIC 获取另一条触发线:
在其中一个引脚(可以是 TIMx_ETR、TIMx_CH1 或 TIM x_CH2 用于任何免费 "TIMx",但不是 TIMx_CH3 或 TIMx_CH4据我所知)。
配置 TIMx 以使用 ETR 或链接到您的引脚的相应通道作为外部触发输入,并在第一个事件时溢出 (PSC=ARR=RCR=0 ).然后每次这个引脚改变时你都会得到一个中断。
您可以根据需要选择侧面极性并激活噪声过滤来进一步扩展此设计。