c++ - 如何将带有 SPL 的 STM32F3 代码移植到 STM32F7
问题描述
我有软件在 72MHz STM32F303 上运行,带有一些真正严格的控制回路,并且已经意识到我的回路运行速度不够快。我需要将代码移植到更快的 216MHz STM32F765,但我发现 F7 系列不支持 F3 的 SPL,只支持较新的 HAL。HAL 有一个较低层的驱动程序,但如果可以的话,我正试图节省几个月的重新编码我的软件的时间。有谁知道将代码移植到 F7 而不涉及数月编码的任何方法?
解决方案
看起来你需要做一些工作。事实上,SPL 已经死了,HAL 似乎非常不适合这个用例,因为您正在谈论紧密的控制循环。
我的建议是切换到 HAL 并推出您自己的功能来控制您使用的外围设备。这允许您仍然使用类型定义,例如UART_HandleTypeDef
ST 维护并与 HAL 一起使用的类型定义,用于性能较低的事情。这也使您可以快速添加新内容并在以后进行优化。
同样重要的是:测试您的先入之见,HAL 可能会更慢,因为它更通用,我个人不建议在 SPI 外围设备上使用它。(我已经看到 HAL 在传输之间花费的时间超过了必要的时间。因为线路上有三分之二的时间是暂停而不是数据。)但是 你的要求是什么?可能 HAL 就足够了,如果是这样,那么您应该使用它。如果还不够,则为您的平台 (F7) 实现一个更好的优化版本,并针对 HAL 实现进行测试。
推荐阅读
- python-3.x - 使用 Python 通过 JSON 循环?
- c# - 如何调用方法 onEndEdit 输入字段或统一单击确定按钮?
- wpf - WPF - 按钮无法识别其图标路径
- ios - Objective C如何根据其他数组项从数组中删除项
- sql - 具有别名的同一列上的多个连接
- php - PHP使用特定标签删除div及其子元素
- php - Twilio 可编程视频:在小组会议室中是否可以拥有一对一的音频?
- r - 如何使用 stringr 包仅替换 R 中匹配项中的特定组?
- c++ - 为什么在opencv中使用uchar矩阵会给我错误结果?
- java - 所需类型:T 提供:列表
在通用 Java 类中