工具/软件:Code Composer Studio
您好!
我一直在研究 TI 项目示例"network_terminal_CC322SF_LAUNCHXL_tirtos_gcc"。在此项目中,我使用 了函数 GetCmd ()从串行监视器或终端(PuTTY)读取数据"命令"。
当我调用此函数 GetCmd ()时,MCU 将保持运行状态,因为有 一个 UART_readPolling()函数在没有中断的情况下工作,它仍将等待来自用户的数据。
我希望使用中断接收数据(命令)。 您有这样的示例吗?
我要做的是构建 一个函数、如果(serial.available ()){//my code} \\\\\\相似 Arduino、则该函数可用于中断\\\
serial.available ()如果用户使用 串行监视器将数据发送到 MCU,则将是我的中断,然后我将读取数据并将其保存到缓冲区中。
我已经使用 了这个文件中的函数来生成一个中断
文件://C:/ti/simplelink_cc32xx_sdk_3_10_00_04/docs/tidrivers/doxygen/html/_u_a_r_t_8h.html
文件://C:/ti/simplelink_cc32xx_sdk_3_10_00_04/docs/tidrivers/doxygen/html/struct_u_a_r_t___params__.html
谢谢、
莫斯塔法。
TI 函数是 //没有任何变化
int GetCmd (char *pcBuffer,
unsigned int uiBufLen)
{
char cChar;
int iLen = 0;
UART_readPolling (uartHandle、&cChar、1);
iLen = 0;
//
//检查命令结束
//
while (1)
{
//
//处理缓冲区溢出
//
if (iLen >= uiBufLen)
{
return(-1);
}
//
//将数据从 UART 复制到缓冲区中
//
if ((cChar ='\r')||(cChar ='\n'))
{
UART_writePolling (uartHandle、&cChar、1);
中断;
}
否则、如果(cChar ='\b')
{
//
//删除回退时的最后一个字符
//
字符 ch;
UART_writePolling (uartHandle、&cChar、1);
CH =';
UART_writePolling (uartHandle、&ch、1);
IF (iLen)
{
UART_writePolling (uartHandle、&cChar、1);
iLen--;
}
其他
{
CH ='\a';
UART_writePolling (uartHandle、&ch、1);
}
}
其他
{
//
//回显接收到的字符
//
UART_writePolling (uartHandle、&cChar、1);
*(pcBuffer + iLen)= cChar;
iLen++;
}
UART_readPolling (uartHandle、&cChar、1);
}
*(pcBuffer + iLen)='\0';
return (iLen);
}