完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
我现在需要20个外部中断,所需IO口PA0/1/2/3/4/8/9/10/15,PB7/8/9/14/15,PC6/7/8/9/13/14; |
|
相关推荐
2个回答
|
|
|
在STM32F103上,每个外部中断对应一个特定的IO引脚,并且每个IO引脚只能用于一个外部中断。因此,如果先设置了某个IO口的外部中断,后设置相同IO口的外部中断会覆盖先前的设置。
要解决这个问题,您可以通过重新配置已经设置的IO口的外部中断回调函数来更改其行为。具体步骤如下: 1. 首先,使用HAL库提供的函数禁用外部中断。 2. 更改IO口的外部中断回调函数为一个空函数或您自定义的函数,确保不会执行任何操作。 3. 设置另一个IO口的外部中断并配置相应的回调函数。 例如,您可以按照以下步骤设置中断: 1. 设置PA0的外部中断: ```c HAL_GPIO_Init(GPIOA, GPIO_PIN_0, GPIO_MODE_IT_RISING); HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0); HAL_NVIC_EnableIRQ(EXTI0_IRQn); HAL_GPIO_EXTI_Callback(EXTI0_IRQn); // 设置回调函数为空函数或自定义函数 ``` 2. 设置PB8的外部中断: ```c HAL_GPIO_Init(GPIOB, GPIO_PIN_8, GPIO_MODE_IT_RISING); HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0); HAL_NVIC_EnableIRQ(EXTI9_5_IRQn); HAL_GPIO_EXTI_Callback(EXTI9_5_IRQn); // 设置回调函数为空函数或自定义函数 ``` 通过这种方式,您可以在每个IO口上设置不同的外部中断,并为每个外部中断设置一个独立的回调函数。重要的是要记住,在更改回调函数之前始终禁用外部中断,并在更改后重新启用外部中断。 |
|
|
|
|
|
如果 外部中断 不是同时 就可以分组使用,如果是 同时 单纯靠芯片自己好像没办法
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2797 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2403 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2276 浏览 0 评论
2388 浏览 1 评论
1637 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 00:28 , Processed in 0.648730 second(s), Total 44, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2224