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.

[参考译文] TM4C123GH6PZ:打印浮点数据将卡住

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1224459/tm4c123gh6pz-print-float-data-will-stuck

器件型号:TM4C123GH6PZ

大家好、

客户有问题需要您的帮助:

void UART_printf(uint32_t baseAddress, const char *format,...)
{
	uint32_t length;
	va_list args;
	uint32_t i;
	char TxBuffer[128] = {0};

	va_start(args, format);
	length = vsnprintf((char*)TxBuffer, sizeof(TxBuffer), (char*)format, args);
	va_end(args);

	for(i = 0; i < length; i++)
	{
		 while(UARTBusy(baseAddress));
		 UARTCharPut(baseAddress,TxBuffer[i]);
	}
}

停留在此处:

发送整数是可以的、但浮点将卡滞、我的程序是如果串行端口接收到字符 A、则计时器中断间隔以浮点数据的形式发送到计算机。  如果发送了浮点数据、它将在 几次后卡在 FaultIsR 中断中。  但是、如果我将计时器中断间隔处理为整数数据、并以整数数据的形式将其发送到计算机、则没有问题。

已打开 FPU、但仍会卡住。

您能帮助检查这个问题吗?

谢谢。此致、

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

    尊敬的 Ben:

     我目前不在办公室、一直到星期三。  当我周四回来时、我可以展示如何解决这个问题。 基本上、您需要首先从浮点转换为字符串、然后通过 UARTprintf 将字符串发送出去。  

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

    尊敬的 Ben:

     如前所述、UARTpritnf 不支持%f 悬空。 请参见下方的。  您 需要先将浮点值转换为字符串,然后将字符串发送到 UARTprintf()以进行打印。