开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Ansi C
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
MCU 自订的函数
问题(Question):
不想使用while在那里不断地等待,占用CPU的时间.
那段时间可以执行近万行指令.
喂入的资料(Input):
同样的参数
预期的正确结果(Expected Output):
同样的结果
错误结果(Wrong Output):
现在测试出的结果有
1.程式乱飞(PC乱了)
2.不断地持续传送
程式码(Code):(请善用置底文网页, 记得排版)
好读版
http://ideone.com/dz4HER
void UART1WriteString( char *string)
{
// P_Debug_O=1;
while(*string != '\0')
{
while(!UARTTransmitterIsReady(UART_MODULE_ID))
;
UARTSendDataByte(UART_MODULE_ID, *string);
string++;
while(!UARTTransmissionHasCompleted(UART_MODULE_ID))
;
}
// P_Debug_O=0;
}
补充说明(Supplement):
我试过下面这一种写法还是不行
IO_FLAG是自己订的Union,用来作流程控制的.
void UART1Trans_fail( void)
{
P_Debug_O=1;
if(UARTTransmitterIsReady(UART_MODULE_ID))
{
UARTSendDataByte(UART_MODULE_ID, U1TX_Buffer[U1TX_Index]);
// IO_FLAG.U1TXP=1; //Uart1 TX in processing flag hand up
IO_FLAG.U1TXReady=0;
}
// P_Debug_O=0;
if(UARTTransmissionHasCompleted(UART_MODULE_ID))
{
// IO_FLAG.U1TXP=0;
if(U1TX_CNT==0) //check need to send next byte
{
IO_FLAG.U1TXReady=1;
IO_FLAG.U1TXP=0;
}
U1TX_CNT