您好,欢迎来到61ic! | [登录] [注册] 忘记密码 | 设为首页 帮助
 . 网站首页 . 业界新闻 . 设计中心 . 移动技术 . TI专栏 . ADI专栏 . FPGA专栏 . 代码工厂 . 官方商城 . 
 . 活动专区 . 新品快递 . 解决方案 . 前沿科技 . TI资源 . ADI资源 . FPGA资源 . 下载中心 . 产品展示 . 
加入收藏
付款方式
联系我们
您现在的位置: 61IC电子在线 >> TI专栏 >> TI Stellaris ARM >> LM3S Cortex-M3 >> 正文
  LM3S一个较可靠的串口接收方法           ★★★ 【字体:
LM3S一个较可靠的串口接收方法
作者:EE2012    文章来源:EE2012    点击数:    更新时间:2012-12-1    

编写串口接收函数时

当通信速率很高,且单片机速度较慢时

如果接收函数写的不仔细就会发生数据没接收到的情况

下面的代码考虑到了每次对接收缓冲区的操作 每次进中断就读取缓冲区所有的数据 值得借鉴

// UART2中断服务函数
void UART2_ISR(void)
{
char c;
unsigned long ulStatus;
ulStatus = UARTIntStatus(UART2_BASE, true); // 读取当前中断状态
UARTIntClear(UART2_BASE, ulStatus); // 清除中断状态
if ((ulStatus & UART_INT_RX) || (ulStatus & UART_INT_RT)) // 若是接收中断或者
{ // 接收超时中断
for (;;)
{
if (!UARTCharsAvail(UART2_BASE)) break; // 若接收FIFO里无字符则跳出
c = UARTCharGetNB(UART2_BASE); // 从接收FIFO里读取字符
if (c == '\r')
{
UARTCharPut(UART2_BASE, '\r'); // 回显回车换行
UARTCharPut(UART2_BASE, '\n');
RxEndFlag = true; // 接收结束标志置位
break;
}
if (isprint(c)) // 若是可打印字符
{
if (BufP MAX_SIZE)
{
UARTCharPut(UART2_BASE, c); // 回显
RxBuf[BufP++] = c;
RxBuf[BufP] = '\0';
}
}
}
}
}
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    LM3S片内FLASH编程
    LM3S9B96使用bootloader通过…
    LM3S编程软件篇-------Keil …
    LM3s8962体验……关于Startu…
    LM3S的库文件配置–Keil
    折腾人的LM3S单片机内部故障…
    折腾人的LM3S单片机内部故障…
    折腾人的LM3S单片机内部故障…
    LM3S以太网远程升级带加密解…
    TI 推出最新款Stellaris机器…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号