共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 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 设备功耗web监控界面(ESP32C5)被打赏¥28元 | |
| OrangePiZero2W系统被打赏¥33元 | |
| Linux环境下以模拟方式快速实现出入管理功能测试被打赏¥24元 | |
| 树莓派3+Klipper,老3D打印机满血升级被打赏¥33元 | |
| OK1126B-S开发板下串口屏及其应用被打赏¥21元 | |
| 低功耗超声波液位测距仪(ESP32S3)被打赏¥27元 | |
| 在K230DBOX上实现多时段语音提示功能被打赏¥14元 | |
| 使K230DBOX实现相机持续拍照功能被打赏¥12元 | |
| 基于K230DBOX的文本管理器设计被打赏¥14元 | |
| 基于K230DBOX的彩色画板功能实现被打赏¥15元 | |
我要赚赏金
