完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
ESP32如何控制外部中断触发在指定core上?
在gpio_example_main.c历程中 按照参考手册将APP_GPIO_INTERRUPT_APP_MAP_REG寄存器配置为0x0d后 在isr中查询 DPORT_PRO_INTR_STATUS_0_REG寄存器的值为0x30400000 DPORT_APP_INTR_STATUS_0_REG寄存器的值为0x30000000 gpio中断任然触发在PROCORE上 应该如何配置才能使中断触发在APPCORE上 |
|
相关推荐
1个回答
|
|
要实现ESP32在指定core上触发外部中断,您需要按照以下步骤进行配置:
1. 配置GPIO为中断模式:首先,您需要配置GPIO为中断模式。这可以通过调用`gpio_config()`函数实现。例如,如果您要将GPIO 4配置为中断模式,可以这样写: ```c gpio_config_t io_conf; io_conf.intr_type = GPIO_PIN_INTR_POSEDGE; // 配置中断类型,这里以上升沿为例 io_conf.mode = GPIO_MODE_INPUT; io_conf.pin_bit_mask = (1ULL< io_conf.pull_up_en = 1; gpio_config(&io_conf); ``` 2. 设置中断服务程序(ISR):接下来,您需要设置中断服务程序。这可以通过调用`gpio_install_isr_service()`函数实现。然后,注册ISR函数,例如: ```c gpio_isr_handle_t gpio_isr_handle; gpio_install_isr_service(0); gpio_set_intr_type(GPIO_NUM_4, GPIO_PIN_INTR_POSEDGE); gpio_isr_register(GPIO_NUM_4, &your_isr_function, NULL, 0, &gpio_isr_handle); ``` 3. 配置中断触发在指定core上:要将中断触发在指定core上,您需要设置`APP_GPIO_INTERRUPT_APP_MAP_REG`寄存器。根据您的描述,您已经尝试将该寄存器设置为0x0d,但中断仍然在PRO CPU上触发。这可能是因为您的设置没有生效。请确保在设置寄存器之前,已经正确地安装了ISR服务并注册了ISR函数。 4. 检查中断状态:在ISR中,您可以查询`DPORT_PRO_INTR_STATUS_0_REG`和`DPORT_APP_INTR_STATUS_0_REG`寄存器的值,以确定中断是否在预期的core上触发。如果中断在APP CPU上触发,`DPORT_APP_INTR_STATUS_0_REG`寄存器的值应该不为0。 5. 如果以上步骤仍然无法解决问题,您可以尝试升级ESP-IDF框架到最新版本,或者查看ESP32的官方文档和社区william hill官网 ,看看是否有其他开发者遇到了类似的问题。 总之,要实现ESP32在指定core上触发外部中断,您需要正确配置GPIO、安装ISR服务、注册ISR函数,并设置`APP_GPIO_INTERRUPT_APP_MAP_REG`寄存器。如果问题仍然存在,请查阅官方文档或寻求社区支持。 |
|
|
|
只有小组成员才能发言,加入小组>>
374 浏览 1 评论
1210 浏览 1 评论
592浏览 6评论
486浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
471浏览 5评论
469浏览 4评论
447浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-1 11:21 , Processed in 0.978274 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号