专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
两个msp430g2553单片机之间的串行通讯
2019-03-24 09:36
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
4385
15
1071
做了好几天msp430g2553单片机的串口通讯都没有做出来,不知道怎么调试,通讯结果始终不能出来,是两个单片机都要单步调试还是只有发的那个单片机要单步调试阿?本人初学者,希望各位大大帮个忙。加急重赏!!!
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
15条回答
qwqwqw2088
2019-03-25 21:07
fzfz 发表于 2016-1-7 18:01
怎么用大神教教我
仔细阅读楼上几位的建议
然后给你推荐下面红字体文档,,,参考
MSP430 LaunchPad是TI新推出的一个超值开发板。在需要调试别的系统的目标板上的TTL串口时,可以先取下板上RXD和TXD的短路块,然后通过杜邦线进行连接其他的目标板
不过在使用中发现,外部目标板有时会出现接收数据错误的现象。经过实验发现,如果目标板的RXD引脚没有接上拉电阻,或者没有允许内部上拉电阻时,就会出现这个现象。在原理图上,可以看到虚拟串口是通过MSP430F16X单片机上引出的,估计是内部固件程序在初始化串口时存在bug,造成了这个问题。因为暂时找不到可以升级的固件,为了使这个虚拟串口具有更好的通用性,可以接一个外部的上拉电阻,例如在J3的第2脚和第6脚之间接一个10K左右的电阻,就可以解决这个问题了。
/******************************************************
程序功能:接收来自PC机的字符,然后重新发送给PC机
-------------------------------------------------------
通信格式:N.8.1, 9600
无校验,8个数据位,1个停止位,波特率9600
------------------------------------------------------
测试说明:打开串口调试助手,正确设置通信格式,向学习板
发送一个字符,观察是否收到回发的字符,以及是否
正确
*******************************************************/
#include <msp430x14x.h>
/********************主函数********************/
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗
P3SEL |= 0x30; // 选择P3.4和P3.5做UART通信端口
ME1 |= UTXE0 + URXE0; // 使能USART0的发送和接受
UCTL0 |= CHAR; // 选择8位字符
UTCTL0 |= SSEL0; // UCLK = ACLK
UBR00 = 0x03; // 波特率9600
UBR10 = 0x00; //
UMCTL0 = 0x4A; // Modulation
UCTL0 &= ~SWRST; // 初始化UART状态机
IE1 |= URXIE0; // 使能USART0的接收中断
while(1)
{
_EINT(); //打开全局中断
LPM1; //进入LPM1模式
while (!(IFG1 & UTXIFG0)); //等待以前的字符发送完毕
TXBUF0 = RXBUF0; //将收到的字符发送出去
}
}
/*******************************************
函数名称:UART0_RXISR
功 能:UART0的接收中断服务函数,在这里唤醒
CPU,使它退出低功耗模式
参 数:无
返回值 :无
********************************************/
#pragma vector = UART0RX_VECTOR
__interrupt void UART0_RXISR(void)
{
LPM1_EXIT; //退出低功耗模式
}
加载中...
查看其它15个回答
一周热门
更多
>
相关问题
相关文章
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
仔细阅读楼上几位的建议
然后给你推荐下面红字体文档,,,参考
MSP430 LaunchPad是TI新推出的一个超值开发板。在需要调试别的系统的目标板上的TTL串口时,可以先取下板上RXD和TXD的短路块,然后通过杜邦线进行连接其他的目标板不过在使用中发现,外部目标板有时会出现接收数据错误的现象。经过实验发现,如果目标板的RXD引脚没有接上拉电阻,或者没有允许内部上拉电阻时,就会出现这个现象。在原理图上,可以看到虚拟串口是通过MSP430F16X单片机上引出的,估计是内部固件程序在初始化串口时存在bug,造成了这个问题。因为暂时找不到可以升级的固件,为了使这个虚拟串口具有更好的通用性,可以接一个外部的上拉电阻,例如在J3的第2脚和第6脚之间接一个10K左右的电阻,就可以解决这个问题了。 /******************************************************
程序功能:接收来自PC机的字符,然后重新发送给PC机
-------------------------------------------------------
通信格式:N.8.1, 9600
无校验,8个数据位,1个停止位,波特率9600
------------------------------------------------------
测试说明:打开串口调试助手,正确设置通信格式,向学习板
发送一个字符,观察是否收到回发的字符,以及是否
正确
*******************************************************/
#include <msp430x14x.h>
/********************主函数********************/
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗
P3SEL |= 0x30; // 选择P3.4和P3.5做UART通信端口
ME1 |= UTXE0 + URXE0; // 使能USART0的发送和接受
UCTL0 |= CHAR; // 选择8位字符
UTCTL0 |= SSEL0; // UCLK = ACLK
UBR00 = 0x03; // 波特率9600
UBR10 = 0x00; //
UMCTL0 = 0x4A; // Modulation
UCTL0 &= ~SWRST; // 初始化UART状态机
IE1 |= URXIE0; // 使能USART0的接收中断
while(1)
{
_EINT(); //打开全局中断
LPM1; //进入LPM1模式
while (!(IFG1 & UTXIFG0)); //等待以前的字符发送完毕
TXBUF0 = RXBUF0; //将收到的字符发送出去
}
}
/*******************************************
函数名称:UART0_RXISR
功 能:UART0的接收中断服务函数,在这里唤醒
CPU,使它退出低功耗模式
参 数:无
返回值 :无
********************************************/
#pragma vector = UART0RX_VECTOR
__interrupt void UART0_RXISR(void)
{
LPM1_EXIT; //退出低功耗模式
}
一周热门 更多>