This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F280025C:RAM 上的 CAN't RUN DELAY_us 函数

Guru**** 2872500 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1581437/tms320f280025c-can-t-run-delay_us-function-on-ram

器件型号: TMS320F280025C

尊敬的专家:  

 

我们正在尝试在 RAM 上运行 delay_us()。  

我知道在 RAM 上运行需要这个函数。  

添加以下 pragma 代码后、我看到在从闪存运行的 ISR 中调用 delay_US () 时发生了这种情况。  

delay_us() 仍在闪存上运行。  

我还必须移动 ISR 在 RAM 上运行、使 delay_US () 在 RAM 上运行。  

在内部调用 RAM 函数时、这是否是将 ISR 从闪存移至 RAM 的要求?

请允许我为此向您提供帮助?  

 

# pragma CODE_SECTION (SysCtl_delay ,".TI.ramfunc")

#define DEVICE_DELAY_US(x) SysCtl_delay(((((long double)(x)) / (1000000.0L /  \
                              (long double)DEVICE_SYSCLK_FREQ)) - 9.0L) / 5.0L)

 

ISR 在闪存上运行=>但 delay_us 无法在 RAM 上运行

image.png

将 ISR 移至 RAM => DELAY_us 可以在 RAM 上运行

image.png

.map image.png

 

此致、

Eric Chen