共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 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 告别手动建模:我让AI用FreeCAD画了个开发板外壳被打赏¥30元 | |
| 【瑞萨RA8D1测评】总结收官——从IMU动作识别到LVGL桌宠被打赏¥33元 | |
| 【瑞萨BLE/WIFI模块测评】MPU6050双链路对比被打赏¥30元 | |
| 【瑞萨BLE/WIFI模块测评】DA14531被打赏¥28元 | |
| 【瑞萨BLE/WI-FI模块测评】DA16200被打赏¥28元 | |
| 【瑞萨BLE/WIFI模块测评】环境搭建被打赏¥32元 | |
| 【瑞萨RA8D1测评】LVGL显示动画被打赏¥30元 | |
| 【瑞萨RA8D1测评】IMU动作识别的数据采集与模型训练被打赏¥33元 | |
| 【S32K3学习整理】时钟系统 ClockOut 功能被打赏¥28元 | |
| 【S32K3学习整理】以太网LoopBack模式功能验证被打赏¥26元 | |
我要赚赏金
