9328|8

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

while ((IFG1 & UTXIFG0)==0); 停止怎么解决? [复制链接]

初始化函数:
void S_Init()
{
P6SEL&=~(SCK+SDA+SVCC);                   //选择P6.3 P6.4 为IO端口输出, P6.5输入
P6DIR|=(SCK+SVCC);
P6DIR&=~SDA;
BCSCTL1=(XT2OFF+RSEL2);             //关闭XT2,1MHz DOC     
DCOCTL=DCO2;                              //设定DCO频率为1MHz
WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
U0CTL |= SWRST;
P3SEL |= 0x30; // 选择P3.4和P3.5做UART通信端口
P3DIR |=BIT4;                             //P3.4为输出方向
ME1 |= UTXE0 + URXE0; // 使能USART0的发送和接受
IE1|=URXIE0;
UCTL0 |= CHAR; // 选择8位字符
UTCTL0 |= SSEL0; // UCLK = ACLK
UBR00 = 0x68; // 波特率9600
UBR10 = 0x00; //
UMCTL0 = 0x11; // Modulation
UCTL0 &= ~SWRST; // 初始化UART状态机
_EINT();
}
/**********************************************************************************************************
**Function Name:     print output
**Description:        
**Input Parameters:   无
**Output Parameters: 无
**********************************************************************************************************/
void put(uchar *x)
{
  while(*x)
  {
    TXBUF0=*x;
    x++;
   while ((IFG1 & UTXIFG0)==0);                // USCI_A0 TX buffer ready?  
    }
}
主程序来输出几个字符的,结果运行的时候到while ((IFG1 & UTXIFG0)==0);           停止不前了,可能初始化部分没设置好,不是很懂,希望高手多多指点下,先在此拜谢啦!

最新回复

我也遇到过这样的问题,我的问题是因为我写好程序后用的是软件仿真,所以程序老停在这一句。后来在IAR中改成硬件仿真后就正常了,希望后来人不要重蹈我的覆辙。  详情 回复 发表于 2015-8-19 11:00
 
点赞 关注

回复
举报

109

帖子

0

TA的资源

纯净的硅(初级)

沙发
 

回答

这位兄台,能说明白点吗? 我不是很容易看明白你要干什么?
是不是要用串口打印一些字符?

Fred
 
 

回复

44

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
这程序就不能简化一下么,用个好的提问方式会更好些
 
 
 

回复

44

帖子

0

TA的资源

一粒金砂(中级)

4
 
还是简化一下吧,也许能很快解决问题
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

5
 

1、要检测数据发送是否可以开始,用TXEPT比较好,它为“0”表示发送缓存和发送移位寄存器为“空”,即状态为“闲”;而UTXIFG0为“1”表示要触发数据发送。

2、看看这段话有没有用,就是说,看看此时UTXIE0是“0”还是“1”:

A transfer is triggered when the UTXIFG0 flag is set. UTXIFG0 is automatically reset when the transfer starts. If UTXIE0 is set, the UTXIFG0 flag will not trigger a transfer.

[ 本帖最后由 mmtcyq 于 2011-6-30 13:30 编辑 ]
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

6
 
原帖由 mmtcyq 于 2011-6-30 13:17 发表
1、要检测数据发送是否可以开始,用TXEPT比较好,它为“0”表示发送缓存和发送移位寄存器为“空”,即状态为“闲”;而UTXIFG0为“1”表示要触发数据发送。
2、看看这段话有没有用,就是说,看看此时UTXIE0是“0”还 ...



我这资料怎么写的是:TXEPT为1,表示移位寄存器跟UTXBUF为空????
查的是数据手册,还有本《MSP430系列超低功耗的单片机原理与实践》。
 
 
 

回复

28

帖子

0

TA的资源

一粒金砂(中级)

7
 
是TXERT为1时,表示UTXBUF为空!
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

8
 
我也遇到这样的问题。
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

9
 
我也遇到过这样的问题,我的问题是因为我写好程序后用的是软件仿真,所以程序老停在这一句。后来在IAR中改成硬件仿真后就正常了,希望后来人不要重蹈我的覆辙。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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