共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在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 | |
汽车电子中巡航控制系统的使用被打赏10分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏100分 | |
分享汽车电子中巡航控制系统知识被打赏10分 | |
分享安全气囊系统的检修注意事项被打赏10分 | |
分享电子控制安全气囊计算机知识点被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【OZONE】使用方法总结被打赏20分 |