STM32
直播中

刘刚

7年用户 1042经验值
私信 关注
[问答]

IAR和STVD在使用固件库的时候会影响到程序的运行,怎么解决?

  IAR 和 STVD  在使用固件库的时候会影响到程序的运行。大概会延迟2us左右,我用示波器试过的!
在不用库函数的情况下是时间是对的,(我试的是STVD,IAR不知道是不是)。

有大神知道的话帮忙解答一下为什么!

回帖(1)

俞舟群

2024-5-8 17:27:56
在使用固件库时,可能会因为库函数的实现方式导致程序运行延迟。以下是一些建议来解决这个问题:

1. **优化固件库函数**:检查固件库函数的实现,看看是否有优化空间。例如,减少循环次数、使用更高效的算法等。

2. **使用内联函数**:在编译器中启用内联函数选项,这样可以减少函数调用的开销。在IAR中,可以使用`#pragma inline=forced`来强制内联函数。

3. **手动实现关键函数**:对于关键的、对时间敏感的函数,可以尝试手动实现,以减少延迟。这样可以避免固件库中的额外开销。

4. **调整编译器优化选项**:在IAR和STVD中,可以尝试调整编译器的优化选项,以获得更好的性能。例如,启用更高级的优化级别。

5. **使用硬件定时器**:如果固件库中的定时器函数导致延迟,可以考虑使用硬件定时器来替代软件定时器,以获得更精确的时间控制。

6. **检查中断优先级**:确保中断优先级设置正确,以避免不必要的中断延迟。

7. **分析程序流程**:使用性能分析工具(如IAR的C-SPY或STVD的性能分析器)来分析程序的执行流程,找出性能瓶颈。

8. **固件库版本**:确保使用的固件库版本是最新的,因为新版本可能包含性能改进和bug修复。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分