在使用TMS320F28027 实验板的时候,屏蔽掉for循环里面的一个函数,导致程序无法正常运行。
屏蔽的函数如图1,函数内部如图2,屏蔽函数后,程序直接跳过for循环到程序末尾,for循环内的程序都不执行,但不屏蔽程序,屏蔽程序内部功能,即让该函数成为一个空函数,程序就能正常运行,很费解这是为什么,这两者有什么本质区别吗?
mangui zhang:一个是Console.App()一个是console_app()不一样的函数啊
在使用TMS320F28027 实验板的时候,屏蔽掉for循环里面的一个函数,导致程序无法正常运行。
屏蔽的函数如图1,函数内部如图2,屏蔽函数后,程序直接跳过for循环到程序末尾,for循环内的程序都不执行,但不屏蔽程序,屏蔽程序内部功能,即让该函数成为一个空函数,程序就能正常运行,很费解这是为什么,这两者有什么本质区别吗?
笨鸟:楼主的描述还是不清楚,屏蔽的是哪几个语句,第二个函数屏蔽掉居然只有一个分号,没报错吗?
在使用TMS320F28027 实验板的时候,屏蔽掉for循环里面的一个函数,导致程序无法正常运行。
屏蔽的函数如图1,函数内部如图2,屏蔽函数后,程序直接跳过for循环到程序末尾,for循环内的程序都不执行,但不屏蔽程序,屏蔽程序内部功能,即让该函数成为一个空函数,程序就能正常运行,很费解这是为什么,这两者有什么本质区别吗?
user4855009:
回复 mangui zhang:
非常感谢您回答我的问题,可能是因为我没描述清楚,for循环里屏蔽的console.app()函数调用了console_app()函数,我将该函数的函数功能屏蔽,而不是将调用该函数的语句屏蔽,程序能够正常运行,但屏蔽调用该函数的语句却让程序不正常运行,即连for循环都无法进入,直接跳到程序结尾。
在使用TMS320F28027 实验板的时候,屏蔽掉for循环里面的一个函数,导致程序无法正常运行。
屏蔽的函数如图1,函数内部如图2,屏蔽函数后,程序直接跳过for循环到程序末尾,for循环内的程序都不执行,但不屏蔽程序,屏蔽程序内部功能,即让该函数成为一个空函数,程序就能正常运行,很费解这是为什么,这两者有什么本质区别吗?
user4855009:
回复 笨鸟:
非常感谢您回答我的问题,我在图一中屏蔽Console.App()函数,该函数调用了console_app()函数;
只要屏蔽的Console.App()函数,程序就会跳过for循环直接运行到程序末尾;而我所希望的就是屏蔽该函数的功能。如图二所示,屏蔽所调用的console_app()函数功能,不会报错,功能也能够被正常屏蔽,但还是比较困惑。
在使用TMS320F28027 实验板的时候,屏蔽掉for循环里面的一个函数,导致程序无法正常运行。
屏蔽的函数如图1,函数内部如图2,屏蔽函数后,程序直接跳过for循环到程序末尾,for循环内的程序都不执行,但不屏蔽程序,屏蔽程序内部功能,即让该函数成为一个空函数,程序就能正常运行,很费解这是为什么,这两者有什么本质区别吗?
笨鸟:
回复 user4855009:
我感觉是这个样子的,你第一张图中的函数,除了Console.App()函数外,其他都是赋值语句,左值只被赋值,不被读取,很可能会被优化掉。你是单步运行的时候,发现程序就会跳过for循环直接运行到程序末尾的吗?你是如何检测的?
在使用TMS320F28027 实验板的时候,屏蔽掉for循环里面的一个函数,导致程序无法正常运行。
屏蔽的函数如图1,函数内部如图2,屏蔽函数后,程序直接跳过for循环到程序末尾,for循环内的程序都不执行,但不屏蔽程序,屏蔽程序内部功能,即让该函数成为一个空函数,程序就能正常运行,很费解这是为什么,这两者有什么本质区别吗?
user4855009:
回复 笨鸟:
是的,我是用单步运行时发现这样做程序运行不正常,直接跳过了for循环,同时我在for循环中添加了一个变量aa,使它在每个循环自增,结果aa的值一直为0,但PWM中断还是能够正常进入。即使Console.App()是一个空的函数,屏蔽它,程序还是会运行不正常。
在使用TMS320F28027 实验板的时候,屏蔽掉for循环里面的一个函数,导致程序无法正常运行。
屏蔽的函数如图1,函数内部如图2,屏蔽函数后,程序直接跳过for循环到程序末尾,for循环内的程序都不执行,但不屏蔽程序,屏蔽程序内部功能,即让该函数成为一个空函数,程序就能正常运行,很费解这是为什么,这两者有什么本质区别吗?
笨鸟:
回复 user4855009:
其实,你的那个for循环可以删掉,或者加上变量,让他循环几次,我总感觉怪怪的。第二,Console.App()里面那个单独的冒号是干啥用的,是否有影响呢?3.变量前面加static试试