3061|1

695

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

Tiva串口FIFO是怎么用的啊. [复制链接]

本帖最后由 cl17726 于 2013-12-24 11:03 编辑

串口FIFO是怎么用的啊.我写了个测试,还没用中断,发现只能一直打印H.我是用Tiva Launchpad
单步跟入:UARTCharPutNonBlocking(UART0_BASE,*Buf++);



第二次跟入:

  1. void UART0_Init(void){
  2.     SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
  3.     SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

  4.     GPIOPinConfigure(GPIO_PA0_U0RX);
  5.     GPIOPinConfigure(GPIO_PA1_U0TX);
  6.     GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
  7.     UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(),115200,(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));
  8.     UARTFIFOEnable(UART0_BASE);
  9.     UARTFIFOLevelSet(UART0_BASE,UART_FIFO_TX7_8,UART_FIFO_RX7_8);
  10.     UARTEnable(UART0_BASE);
  11. }

  12. void UART0_SendStr(const char *Buf){
  13.         unsigned char len;
  14.         len = strlen(Buf);
  15.         while(len--){
  16.                 if(UARTSpaceAvail(UART0_BASE)){
  17.                         UARTCharPutNonBlocking(UART0_BASE,*Buf++);
  18.                 }
  19.         }while(!UARTSpaceAvail(UART0_BASE));
  20. }

  21. int main(void)
  22. {
  23.     SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);
  24.     UART0_Init();
  25.     while(1)
  26.     {
  27.             UART0_SendStr("Hello World\n");
  28.     }
  29. }
复制代码

最新回复

TIVA C 针对UART 的发送提供两个库函数,UARTCharPutNonBlocking,UARTCharPut,前一个函数直接把一个字符放入到UART的发送FIFO后就退出,后一个函数要等到这个字符发送结束后才退出函数. 你的程序中把字符放到FIFO后就退出函数了,还没等字符发送完,你又进入下一次循环又开始写"Hello World" ,所以每次都只打印得出'H', 解决问题有两个办法: 1. 把UARTCharPutNonBlocking 更换成UARTCharPut 2. 在主函数的while(1)循环中增加一个延时函数.  详情 回复 发表于 2014-1-14 11:43
 
点赞 关注

回复
举报

400

帖子

0

TA的资源

五彩晶圆(中级)

沙发
 
TIVA C 针对UART 的发送提供两个库函数,UARTCharPutNonBlocking,UARTCharPut,前一个函数直接把一个字符放入到UART的发送FIFO后就退出,后一个函数要等到这个字符发送结束后才退出函数.
你的程序中把字符放到FIFO后就退出函数了,还没等字符发送完,你又进入下一次循环又开始写"Hello World" ,所以每次都只打印得出'H', 解决问题有两个办法:
1. 把UARTCharPutNonBlocking 更换成UARTCharPut
2. 在主函数的while(1)循环中增加一个延时函数.
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表