arm - 在 STM32 上使用 FreeRTOS 处理多个中断
问题描述
我的基于 MCU 的控制系统必须快速检查 18 个开关触点状态。我将使用 STM32F7 MCU,它最大有 16 个 int。处理程序。所以我决定使用IO expendar IC 和分组。现在我有 12 个 IO 外部中断,另外 2 个中断来自 IO 扩展器。此外,FreeRTOS 将具有用于通信的以太网、uart 和 canbus 任务。中断对系统来说非常重要。它们之间存在毫秒差异,我必须正确检测所有引脚状态。我需要针对这种情况的专家建议。
我的问题是:
- 这是正确的方法吗?使用 14 个外部中断 onFreeRTOS 处理多个通信任务
- 有没有更好的方法呢?
解决方案
使用 IO 扩展器似乎是解决问题的错误方法(额外的复杂性和成本)。您不必为每个引脚分配一个专用的 ISR。只需在任何 GPIO 中断后读取 GPIOx_IDR 寄存器,然后检查相关位STM32 Datasheet
推荐阅读
- scheme - 放!和 Scheme 中的别名
- c++ - 当“全局”、“局部”和“非常局部”变量存在同名时如何访问“局部”变量
- c# - 编写单元测试时出现 System.UnauthorizedAccessException
- python - python JSON RPC请求响应403
- android - 谷歌地图 SDK 地理编码
- ssjs - 在云页面中使用 ampscript 或 SSJS 添加延迟
- ubuntu - 从 Ubuntu 存储库和官方 Docker 存储库安装 Docker 的区别?
- ios - UITabBar 最佳实践
- html - 元素不会相互堆叠
- java - 仅使用 SAS 令牌连接到 Azure 存储帐户?