求问高手,我给DSP i/o连续写数据时为什么要加延时??

最近在学DSP,芯片是TMS320F28335,有一点就搞不明白,我连续给某个I/O口写数据时每次写完为什么要加延时才能正确写入数据,如下:

LED1=1;
DELAY_US(10);
LED2=1;
DELAY_US(10);
LED3=0;
DELAY_US(10);
LED4=0;
DELAY_US(10);
LED都分别对应了4个GPIO口,方向为输出,为什么不能像单片机那样直接LED1=LED2=LED3=LED4=1;(试过这样无法正确写入数据)
求解惑
楼下说与编译环境有关,我的CCS版本是V4.1.2,求合适的版本

与DSP IO口本身的结构有关,具体记不住了,TI的规格书讲通用IO的Datasheet提到过,对IO口操作不建议用直接赋值的方法,而是用寄存器置高与清零指令。举例;GpioDataRegs.GPACLEAR.bit.GPIO21 = 1,为GPIO21口输出低电平,GpioDataRegs.GPASET.bit.GPIO21 = 1,为输出高电平追问

好的,那如果用set 和clear指令进行赋值连续操作需要延时吗?

追答

不需要

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-09-28
与你的编译环境有关,CCS的版本追问

我的CCS版本是V4.1.2,目前在做的项目实时性要求很高,最好是NS级延时,那该用哪个版本可以类似于这样直接写数据呢??LED1=LED2=LED3=LED4=1;

第2个回答  2019-12-10
GPXDAT不适合用来对位连续操作,比如要给GPIO65、GPIO66同时输出低电平,不要把两条赋值语句连着写,因为GPXDAT的写数据速度慢,容易影响其他管脚的操作。所以要置0或者置1的话建议用CLEAR和SET来配置寄存器,这几个寄存器操作速度快,不影响其他管脚(包括TOGGLE的取反操作)。
————————————————
版权声明:本文为CSDN博主「活泼欢乐的雷二狗」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_24096023/article/details/84995490