5312|8

19

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教430的串口问题 [复制链接]

用串口调试工具,pc跟430的串口通讯。 单片机发出的数据串口调试工具能收到,pc发出的数据单片机却收不到。
串口2,3脚接在一起时,串口调试工具显示收发正常。。。
以下是调试的程序:
先感谢关注

#include <msp430x44x.h>

void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
FLL_CTL0 |= XCAP18PF; // Configure load caps
P2SEL |= 0x30; // P2.4,5 = USART0 TXD/RXD
ME1 |= UTXE0 + URXE0; // Ena××e USART0 TXD/RXD
UCTL0 |= CHAR; // 8-bit character
UTCTL0 |= SSEL1; // UCLK = SMCLK
UBR00 = 0x6D; // 1MHz 9600
UBR10 = 0x00; // 1MHz 9600
UMCTL0 = 0x03; // modulation
UCTL0 &= ~SWRST; // Initialize USART state machine
IE1 |= URXIE0; // Ena××e USART0 RX interrupt
P2DIR |= 0x10; // P2.4 output direction

while(1) //橙色部分,是调试加的
{
while (!(IFG1 & UTXIFG0));
TXBUF0=0x66;

if(RXBUF0==0x22)
{
while (!(IFG1 & UTXIFG0));
TXBUF0=0x55;
}
}
_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
}

#pragma vector=UART0RX_VECTOR //发现就是进不了中断,
__interrupt void usart0_rx (void)
{
_NOP();
while (!(IFG1 & UTXIFG0)); // USART0 TX buffer ready?
TXBUF0 = RXBUF0; // RXBUF0 to TXBUF0
}

最新回复

谢谢大家对我问题的关注。我的问题已经解决。说出来有难为情,仔细研究我的449开发板原理图后,发现我把485,721通信口的通道的拨盘开关都打开了,把其关上,只打开232的拨盘开关就没这个问题了。。。应该是有什么干扰吧,欢迎有更深入的讨论。 有类似问题的朋友可以试试。。。  详情 回复 发表于 2008-6-4 22:12
 
点赞 关注

回复
举报

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
用示波器看一下波形的幅值。或许串口芯片毁掉了呢,我遇到过。仅供参考
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
你用的是232还是485通讯,如果是485通讯则线路连接肯定是正确的,如果是232,你可以再查查你的线路连接.另外你说的串口2,3脚连在一起,不知道你是什么意思//
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
进不了中断是正常的,因为你的程序欠缺太多了,给你个例子瞧瞧吧!

#include <msp430x44x.h>

void delay(unsigned long int j)
{
unsigned long int i ;
for(i=0;i<j;i++)
;
}

void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
FLL_CTL0 |= XCAP14PF; // Configure load caps
UTCTL0 = SSEL1; // UCLK = SMCLK
UBR00 = 0x6D; // 1MHz 9600
UBR10 = 0x00; // 1MHz 9600
UMCTL0 = 0x00; // no modulation
UCTL0 = CHAR; // 8-bit character *SWRST*
ME1 |= UTXE0 + URXE0; // Ena××e USART0 TXD/RXD
IE1 |= URXIE0; // Ena××e USART0 RX interrupt
P2SEL |= 0x30; // P2.4,5 = USART0 TXD/RXD
P2DIR |= 0x10; // P2.4,7 output direction

_EINT(); // Ena××e interrupts

for (;;)
{
_NOP(); // Required only for C-spy
}
}



#pragma vector=UART0RX_VECTOR
__interrupt void usart0_rx(void)
{
while ((IFG1 & UTXIFG0) == 0); // USART0 TX buffer ready?
TXBUF0 = RXBUF0; // RXBUF0 to TXBUF0
}
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

5
 
总中断好象就没开.
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

6
 
感谢大家的建议和帮助,能接受到数据,而且我们实验室两块板子都是这情况,应该不是串口片子问题。
我用的是232,我指的2,3脚是指串口的发送和接受端,接在一起串口调试显示正常收发。

botom前辈的程序该怎么调试,for死循环里Required only for C-spy,不明白,希望指点。。。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

7
 
不知道greenlove还在不在关注本主题,我和你的问题差不多。我用169和PC机通信,用MAX3221转换。我的情况是:PC机发的数据,单片机的接受与发射寄存器都可以正常显示。但是,串口调试助手的接收区域却怎么也没有数据显示。但当把DB9针的2脚和3脚连起来时,串口调试助手的接收区域可以正常显示。
不知道还能不能得到回应。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

8
 
楼上的又是MAX3221的控制不对,建议仔细研究一下MAX3221的数据手册
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

9
 
谢谢大家对我问题的关注。我的问题已经解决。说出来有难为情,仔细研究我的449开发板原理图后,发现我把485,721通信口的通道的拨盘开关都打开了,把其关上,只打开232的拨盘开关就没这个问题了。。。应该是有什么干扰吧,欢迎有更深入的讨论。
有类似问题的朋友可以试试。。。
 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表