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.

TMS320F28379D: 例程gpio_ex1_setup.c中,对于FLASH的这段定义的功能有几个问题。

Part Number: TMS320F28379D

没有在这个例程的工程里面找到FLASH的宏定义声明,在predefine symbol里面也没看见。
1、灰色的这段代码的主要功能是什么?

2、程序中还有其他类似的ifdef语句,在predefine symbol中添加相应的定义,是可以的吗?

  • 1、这段代码用于工程在flash运行时候将部分代码搬移至ram运行以提高运行速度,也就是通过memcpy函数。

    2、程序中用ifdef是为了区别ram运行和flash运行的情况,ram运行(在线仿真)情况下不需要_FLASH的预定义,所以用了ifdef。

  • 还有几个问题

    1、可以去掉这个#ifdef _FLASH(line.75)与#endif(line.90)这两行,直接调用memcpy与Flash_initModule这两个函数吗

    2、我现在程序可以在ram里面在线仿真运行,但是无法烧写进flash中,可以通过问题1、里面的这个操作做到烧写到flash里面。吗?

    3、 device.c中的SysCtl_deviceCal()函数是什么作用可以介绍一下吗?

  • 1、正如之前所说,memcpy是用于工程在flash运行时候将部分代码搬移至ram运行以提高运行速度的。所以,如果工程是要flash运行,那么去掉#ifdef _FLASH也无所谓,例程中加了这句只不过是为了兼顾ram运行和flash运行。

    2、不可以,无法烧写flash跟cmd文件选择,硬件问题等等相关,可以通过无法烧写的时候CCS的报错查看可能的原因。但是跟#ifdef _FLASH无关。

    3、所实话没研究过这个函数,大概就是说Sysctl_deviceCal 是 Device_Cal 的封装函数,可以使用 SysCtl_deviceCal() 来执行调用 Device_cal() 函数的校准。