共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 跳转至页
回复
| 有奖活动 | |
|---|---|
| 这个春节你犒赏自己什么了?分享你的故事,有奖征集 | |
| 2026年“我要开发板活动”第三季,开始了! | |
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
我要赚赏金打赏帖 |
|
|---|---|
| 【S32K3XX】SWT 模块使用被打赏¥22元 | |
| 【分享开发笔记,赚取280元手持便携数字示波器】32位linux内核内存映射896的理解被打赏¥14元 | |
| AG32VH407开发板例程体系的构成与使用方法被打赏¥20元 | |
| 【S32K3XX】SEMA42 模块使用被打赏¥26元 | |
| 【S32K3XX】XRDC 功能使用被打赏¥22元 | |
| 【分享开发笔记,赚取280元手持便携数字示波器】8051使用keil编译的程序移动心得被打赏¥21元 | |
| 【S32K3XX】HSE 密钥管理被打赏¥17元 | |
| 【S32K3XX】Standby RAM的初始化流程被打赏¥18元 | |
| Gravity:中英文语音合成模块V2.0及其串口控制被打赏¥24元 | |
| 全彩色度变化图的绘制被打赏¥27元 | |
我要赚赏金
