Part Number:TMDSCNCD28388D
如题我使用TMDSCNCD28388D开发板在CCS上进行SCI数据收发
在debug模式下
可以进入SCI接收中断,并且可以对上位机发送的数据进行处理并回发;
在release模式下
可以进入SCI接收中断,但是对上位机发送的数据没有任何反应;
请问这个是为什么?
我在定义了几个数组和结构体,但是没有初始化赋值,具体如下:
uint16_t senddata[2]; uint16_t recdata[50]; uint16_t sd[100]; typedef stuuct {uint16_t head;uint16_t legnth;uint16_t data[100]; }
然后宏定义了几个判断接收状态的值
#define REC 1U #define REC_C 2U
Green Deng:
一般来说,debug下运行正常而flash下运行出问题的情况,大多是因为memcpy的问题,也就是说没有将类似delay_us、中断函数之类的程序代码复制到ram中运行。
不知道你的程序中包含这部分内容了吗?
,
user6327524:
但是我在flash调试中,SCI的接收中断是正常的,目前还没有用到延迟函数
,
Green Deng:
你可以看一下例程中关于memcpy的说明,并且在你的程序中加上这个函数再试一下:
#ifdef _FLASH//// Copy time critical code and flash setup code to RAM. This includes the// following functions: InitFlash();//// The RamfuncsLoadStart, RamfuncsLoadSize, and RamfuncsRunStart symbols// are created by the linker. Refer to the device .cmd file.//memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);//// Call Flash Initialization to setup flash waitstates. This function must// reside in RAM.//Flash_initModule(FLASH0CTRL_BASE, FLASH0ECC_BASE, DEVICE_FLASH_WAITSTATES); #endif
,
user6327524:
哦哦,我把您说的这段程序加进去,发现现象没有变,不过确实感觉是自己写的函数没有运行,您说的这个memcpy这个在28388的哪个例程有用到呢?
,
user6327524:
您好,我的问题解决了,是因为我做串口发送的判断位是使用结构体里的变量,改成了变量做标志位就好了,请问这个是为什么呢?
,
Green Deng:
可能跟你的结构体定义有关,具体是如何定义的?