确实是被CCS优化了,编译器觉得没有用处,自己给你删除了.
DEBUG模式默认是不带任何优化的,所有没有问题. 但RELEASE模式默认是-O2的优化,编译器会去掉它觉得没用的代码(PAGE54 - spru187n.pdf). 可以打开.map文件搜索delay函数名, 你会发现这个函数只有一个
BNOP.X B3,5之类的指令, 这条指令应该只是一个类似于RTS的指令(函数调用返回), 你可以把断点设在这条指令对应的地址上,程序根本不会停在这儿. 也就是说CCS把DELAY函数体优化得只剩一个RTS指令,而且根本不会去调用它. 我用C6747的DSP, 可能不同DSP, 那个BNOP指令不同.
|