TI中文支持网
TI专业的中文技术问题搜集分享网站

TM4C123GH6PZ: 我用keil编译他这个程序,使用自己写的串口打印程序,发现打印浮点数据会进入硬件中断

Part Number: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]);
	}
}

Ben Qin:

你好,你使用的是哪个例程?可以用CCS试一下吗?

,

风正豪:

我是自己编写的模板程序。因为使用CCS不习惯,所以使用keil

,

风正豪:

我使用如上代码,就会进入FaultIsR中断。

,

Ben Qin:

请将错误截图发上来看一下。

,

风正豪:

 我这个程序就是,如果串口接收到了字符a,然后就将定时器中断间隔时间以浮点数据形式发送给电脑。如果是发送浮点数据的话,经过几次之后就会卡死在FaultIsR中断里面。但是如果我对定时器中断间隔时间处理成整型数据,以整型数据形式发送给电脑,就没有任何问题。

,

Ben Qin:

风正豪 说:经过几次之后就会卡死在FaultIsR中断里面

你的意思是一开始可以接受到数据?

,

风正豪:

对的,一开始可以接收几十次。有时候是30多次就卡死了进入中断。有时候70多次,也有130多次才卡死的。不过都在半分钟之内就卡死了

,

Ben Qin:

你使能了FPU吗?使用浮点数的话需要使能FPU,不然就会卡死。

,

风正豪:

 之前就打开了,但是还是卡

,

Ben Qin:

好的,我将咨询下相关资深工程师,一旦有回复会立即回复您。

,

风正豪:

好的

,

Ben Qin:

你好,一般来说需要将float转换成string然后通过uart将string发送出去。

,

Ben Qin:

uart是不支持%f 浮点数打印的,请看下图。需要将浮点值转换成字符串,然后再将字符串发送给UARTprintg()打印。

赞(0)
未经允许不得转载:TI中文支持网 » TM4C123GH6PZ: 我用keil编译他这个程序,使用自己写的串口打印程序,发现打印浮点数据会进入硬件中断
分享到: 更多 (0)