共2条
1/1 1 跳转至页
【求助】关于串口通信程序问题
问
使用的是MSP430F12X系列单片机,在串口通信仿真时,程序就在判断是否发送完一个字节的语句中跳不出来了,请问各位有谁碰到过这个问题,该怎么解决?谢谢!!
ps:怕自己寄存器设置有错,采用自带的例程初始化语句,加了自己改了发送的内容。
请问程序有问题吗?
#include <MSP430x12x.h>
void main(void)
{int Data[6]={10,88,55,66,55,33};
int i;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
UCTL0 = CHAR; // 8-bit character
UTCTL0 = SSEL0; // UCLK = ACLK
UBR00 = 0x0D; // 32k/2400 - 13.65
UBR10 = 0x00; //
UMCTL0 = 0x6B; //
ME2 |= UTXE0 + URXE0; // Enabled USART0 TXD/RXD
IE2 |= URXIE0; // Enabled USART0 RX interrupt
P3SEL |= 0x30; // P3.4,5 = USART0 TXD/RXD
P3DIR |= 0x10; // P3.4 output direction
for(i=0;i<=6;i++)
{
TXBUF0=Data[i];
while ((IFG2 & UTXIFG0) != UTXIFG0); //试过其他的几种方式也不行
}
} 答 1: 确认一下,你用的是串口0还是1,你程序里0和1混用了,好像是的.如果是0的话,ME2应该改为ME1,还有IFG2改为IFG1 答 2: 没有混用,12X系列只有1个串口,就是UASRT0,这应该没错,按照它的寄存器结构来的 答 3: 那你把ME2,IE2,IFG2都改为1试试看呢 答 4: 多谢!找到原因了,原来是寄存器设置上弄错了,串口没正常工作,仿真成功,但愿在硬件上跑不要出什么问题。 答 5: 应该没有问题的 ^_^ 答 6: wish
初级会员
注册日期: Jul 2004
帖子: 6
精华: 0
现金: 0 元
资产: 0 元
声望: 10
多谢!找到原因了,原来是寄存器设置上弄错了,串口没正常工作,仿真成功,但愿在硬件上跑不要出什么问题
楼主能不能告诉我你的经验,能不能给我发一个你的程序我看看。sir5163.com.谢谢
搂住 答 7: 其实也不叫经验之说了,例程IAR自带的就有,关键是要把自己用的型号的单片机的几个关于串口发送有关的寄存器弄清楚,设置正确就对了,一般不会有别的问题。 答 8: 那你怎么知道你的数据发对了。上位机的接受程序你用的是哪个?我现在正在调试串口程序,项目已经拖期两周,急需你的帮助。请问你的单片机的例子用的是那个,上位机的程序用的有是哪个?接口芯片用的是那个,我用的是max3232,请帮忙谢谢!!!!sir5163.com 答 9: 上位机用的是串口调试工具,利而达资料库中下载的;接口芯片用的是max232,其它的都行,这都无所谓的,只要芯片没问题就行。
我现在只是调试例程,用的是自带的,我用的是MSP430F123单片机;多看看datasheet和user guide。
慢慢来,我也摸索了很久。 答 10: 引用:
ps:怕自己寄存器设置有错,采用自带的例程初始化语句,加了自己改了发送的内容。
请问程序有问题吗?
#include <MSP430x12x.h>
void main(void)
{int Data[6]={10,88,55,66,55,33};
int i;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
UCTL0 = CHAR; // 8-bit character
UTCTL0 = SSEL0; // UCLK = ACLK
UBR00 = 0x0D; // 32k/2400 - 13.65
UBR10 = 0x00; //
UMCTL0 = 0x6B; //
ME2 |= UTXE0 + URXE0; // Enabled USART0 TXD/RXD
IE2 |= URXIE0; // Enabled USART0 RX interrupt
P3SEL |= 0x30; // P3.4,5 = USART0 TXD/RXD
P3DIR |= 0x10; // P3.4 output direction
for(i=0;i<=6;i++)
{
TXBUF0=Data[i];
while ((IFG2 & UTXIFG0) != UTXIFG0); //试过其他的几种方式也不行
}
} 答 1: 确认一下,你用的是串口0还是1,你程序里0和1混用了,好像是的.如果是0的话,ME2应该改为ME1,还有IFG2改为IFG1 答 2: 没有混用,12X系列只有1个串口,就是UASRT0,这应该没错,按照它的寄存器结构来的 答 3: 那你把ME2,IE2,IFG2都改为1试试看呢 答 4: 多谢!找到原因了,原来是寄存器设置上弄错了,串口没正常工作,仿真成功,但愿在硬件上跑不要出什么问题。 答 5: 应该没有问题的 ^_^ 答 6: wish
初级会员
注册日期: Jul 2004
帖子: 6
精华: 0
现金: 0 元
资产: 0 元
声望: 10
多谢!找到原因了,原来是寄存器设置上弄错了,串口没正常工作,仿真成功,但愿在硬件上跑不要出什么问题
楼主能不能告诉我你的经验,能不能给我发一个你的程序我看看。sir5163.com.谢谢
搂住 答 7: 其实也不叫经验之说了,例程IAR自带的就有,关键是要把自己用的型号的单片机的几个关于串口发送有关的寄存器弄清楚,设置正确就对了,一般不会有别的问题。 答 8: 那你怎么知道你的数据发对了。上位机的接受程序你用的是哪个?我现在正在调试串口程序,项目已经拖期两周,急需你的帮助。请问你的单片机的例子用的是那个,上位机的程序用的有是哪个?接口芯片用的是那个,我用的是max3232,请帮忙谢谢!!!!sir5163.com 答 9: 上位机用的是串口调试工具,利而达资料库中下载的;接口芯片用的是max232,其它的都行,这都无所谓的,只要芯片没问题就行。
我现在只是调试例程,用的是自带的,我用的是MSP430F123单片机;多看看datasheet和user guide。
慢慢来,我也摸索了很久。 答 10: 引用:
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图四被打赏50分 | |
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 |