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.

[参考译文] CCS/TMS320F28030:删除 while 循环时、发送 Asci 数据损坏

Guru**** 2388530 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/897743/ccs-tms320f28030-sending-ascci-data-corruption-when-while-loop-is-removed

器件型号:TMS320F28030

工具/软件:Code Composer Studio

您好、  数据是 通过 RS232位感叹号传输的、  使用 while 循环 没有问题、无论是否使用调试器、数据都能正确传输。

 当 while 循环被注释掉 时、数据是无用的(失败)、具有 和不具有调试器   

#define UART_WAIT_ONE_BIT for (delay1 = 1;delay1 <43;delay1++){asm (" NOP");asm (" NOP");asm (" NOP");asm (" NOP");asm (" NOP"); asm (" NOP");asm (" NOP");asm (" NOP");asm (" NOP");asm (" NOP");asm (" NOP"); asm (" NOP");}

 

uint8 FwRevision[]={"12345678-a" };

通过:

while (1){

TX_FirmwareSerialNumber (FwRevision);

失败:  

//while (1){

TX_FirmwareSerialNumber (FwRevision);

//}

 

子部分

void TX_FirmwareSerialNumber (uint8 *ptrFwRevision

uint8 delay1、字节计数、掩码、位索引;

字节计数= 11;

屏蔽= 0x01;  

字节计数= 0;

for (byteCount = 0;byteCount < 11;byteCount++){

//发送起始位

GpioDataRegs.GPACLEAR.bit.GPIO23 = 1;

UART_WAIT_ON1_BIT

//发送8位,移动数据

for (bitIndex = 0;bitIndex <8;bitIndex++){

if (ptrFwRevision[byteCount]& mask){

GpioDataRegs.GPASET.bit.GPIO23 = 1;

其他

GpioDataRegs.GPACLEAR.bit.GPIO23 = 1;

//LSB 优先、

掩码<= 1;

UART_WAIT_ON1_BIT

//Tx 停止位

GpioDataRegs.GPASET.bit.GPIO23 = 1;

UART_WAIT_ON1_BIT

UART_WAIT_ON1_BIT

UART_WAIT_ON1_BIT

屏蔽= 0x01;

}//end while

 

 

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    只要看一下代码、就没有什么可以让我感到很高兴。 我有几个问题可能有助于缩小范围。

    1. 数据损坏的方式是否一致、或者是否因运行而异?
    2. 您是否打开了优化功能、如果打开、关闭优化功能是否会有所不同?
    3. 您是否有任何方法可以查看信号(逻辑分析仪或类似器件)、看看它们是否看起来正常?

    谢谢、

    惠特尼

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1.否

    2、关闭

    3. 无延迟,本节的运行 速度更快

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    示波器、失败40us 与~1ms、 这是否可以 是优化器   

    • 使用计时器的代码不受影响

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    由于您已关闭优化、因此这不应该成为问题。 感谢您的确认。

    我不明白您在回答3时的意思。 "示波器、失败40us 与~1ms"? 更改了什么延迟--uart_wait_one 位? 您调用相关函数的频率如何?

    惠特尼