共2条
1/1 1 跳转至页
问
我现在有一块板,p3.3接422-TEN,p3.4接422-TIN,p3.5接422-OUT,外接时钟是32768Hz,程序如下:
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P3SEL |= 0x38; // P3.3,4,5 = UCLK0,USART0 TXD/RXD
//P3DIR |= 0x18;
ME1 |= UTXE0 + URXE0; // Enable USART0 TXD/RXD
UCTL0 |= CHAR; // 8-bit character
UTCTL0 |= SSEL0; // UCLK = ACLK
UBR00 = 0x0D; // 32k/2400 - 13.65
UBR10 = 0x00; // baudrate=2400
UMCTL0 = 0x6B; // Modulation
UCTL0 &= ~SWRST; // Initialize USART state machine
while(1)
{
TXBUF0='a';
}
}
422口通过转换器接232到pc.
用iar下载进去以后,没有数据输出. 用示波器测p3.4有信号输出,但测p3.3无信号输出.
这是怎么回事?
我是新手,以后还有很多问题要请教大家,谢谢了! 答 1: 查两点 1:P3SEL |= 0x38; // P3.3,4,5 = UCLK0,USART0 TXD/RXD是否定义正确;
2:p3.3接422-TEN,是不是使能信号线,如果是就要给使能信号; 答 2: 那么发送使能信号是 P3OUT |= 0x08 ? 每次发送都要使能吗? 还是只是初始化时使能 就行了? 答 3: 我刚调试通过,现在才知道他很简单。我用32768晶振,ti例程。就可以。
但是要注意,
现有的计算机串口线有的是一一对应的,有的是交叉过的。我白费了一天的时间就是这个原因。
其他的没什么,接通后例程就能正常工作。 答 4: 不过我用的是422接口,要通过转换器接到PC,可能有点不大一样,现在我的做法是这样的
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P3SEL |= 0x30; // P3.4,5 = USART0 TXD/RXD
P3DIR |= 0x18;
P3OUT |= 0x08; // P3.3=1
ME1 |= UTXE0 + URXE0; // Enable USART0 TXD/RXD
UCTL0 |= CHAR; // 8-bit character
UTCTL0 |= SSEL0; // UCLK = ACLK
UBR00 = 0x0D; // 32k/2400 - 13.65
UBR10 = 0x00; // baudrate=2400
UMCTL0 = 0x6B; // Modulation
UCTL0 &= ~SWRST; // Initialize USART state machine
while(1)
{
P3OUT |= 0x08;
TXBUF0='a';
}
}
从串口调试助手那里可以收到数据,但收到的数据都是0x00 答 5: 谁能说说,为什么程序里是TXBUF0='0' , 但从串口调试助手收到的是0xF0?
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P3SEL |= 0x38; // P3.3,4,5 = UCLK0,USART0 TXD/RXD
//P3DIR |= 0x18;
ME1 |= UTXE0 + URXE0; // Enable USART0 TXD/RXD
UCTL0 |= CHAR; // 8-bit character
UTCTL0 |= SSEL0; // UCLK = ACLK
UBR00 = 0x0D; // 32k/2400 - 13.65
UBR10 = 0x00; // baudrate=2400
UMCTL0 = 0x6B; // Modulation
UCTL0 &= ~SWRST; // Initialize USART state machine
while(1)
{
TXBUF0='a';
}
}
422口通过转换器接232到pc.
用iar下载进去以后,没有数据输出. 用示波器测p3.4有信号输出,但测p3.3无信号输出.
这是怎么回事?
我是新手,以后还有很多问题要请教大家,谢谢了! 答 1: 查两点 1:P3SEL |= 0x38; // P3.3,4,5 = UCLK0,USART0 TXD/RXD是否定义正确;
2:p3.3接422-TEN,是不是使能信号线,如果是就要给使能信号; 答 2: 那么发送使能信号是 P3OUT |= 0x08 ? 每次发送都要使能吗? 还是只是初始化时使能 就行了? 答 3: 我刚调试通过,现在才知道他很简单。我用32768晶振,ti例程。就可以。
但是要注意,
现有的计算机串口线有的是一一对应的,有的是交叉过的。我白费了一天的时间就是这个原因。
其他的没什么,接通后例程就能正常工作。 答 4: 不过我用的是422接口,要通过转换器接到PC,可能有点不大一样,现在我的做法是这样的
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P3SEL |= 0x30; // P3.4,5 = USART0 TXD/RXD
P3DIR |= 0x18;
P3OUT |= 0x08; // P3.3=1
ME1 |= UTXE0 + URXE0; // Enable USART0 TXD/RXD
UCTL0 |= CHAR; // 8-bit character
UTCTL0 |= SSEL0; // UCLK = ACLK
UBR00 = 0x0D; // 32k/2400 - 13.65
UBR10 = 0x00; // baudrate=2400
UMCTL0 = 0x6B; // Modulation
UCTL0 &= ~SWRST; // Initialize USART state machine
while(1)
{
P3OUT |= 0x08;
TXBUF0='a';
}
}
从串口调试助手那里可以收到数据,但收到的数据都是0x00 答 5: 谁能说说,为什么程序里是TXBUF0='0' , 但从串口调试助手收到的是0xF0?
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |