关于51和STM32串口通信

2019-08-14 16:25发布

请教大家一个问题,我用51和STM32进行通信,51只用接收数据然后在1602上显示,STM32发送数据。TXD和RXD错开连接,共地。为什么我现在51收不到STM32的数据呢?STM32是用的MINI

51程序:
#include<reg52.h> #include"1602.h"
unsigned char read_flag =0; unsigned char i = 0;
void init_com() { TMOD |= 0X20; TH1 = 0XFD; TL1 = 0XFD; TR1 = 1; REN = 1; SM0 = 0; SM1 = 1; EA = 1; ES = 1; }
void send_char(unsigned char ch) { SBUF = ch; while(TI==0); TI = 0; }
int main() { unsigned char ch[5] = {'w','s','d','a'};
init_com(); LCD_init(); while(1) { write_com(0x80); if(read_flag) { read_flag = 0; write_date(ch[i - '0']); } } }
void re_com() interrupt 4 { if(RI) { RI = 0; i = SBUF; read_flag = 1; } }

STM32程序:#include "delay.h" #include "sys.h" #include "key.h" #include "usart.h"
 int main(void)  { u8 t,i = 0; u8 ch[5]={'1','2','3','4'};   SystemInit(); delay_init(72);
        NVIC_Configuration();
    uart_init(9600);   KEY_Init();   while(1) { t = KEY_Scan(); if(t == 1) { USART_SendData(USART1,ch); i++; if(i>=4) { i = 0; } } }  
 } STM32采用的是原子哥的串口程序,用的是串口一。波特率设置的是9600,usart.c没有改变就是原子哥的程序。请大神指点一哈问题在哪里啊?!!谢谢了




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
745021926
1楼-- · 2019-08-14 19:22
 精彩回答 2  元偷偷看……
511706987
2楼-- · 2019-08-14 21:17
回复【2楼】745021926:
---------------------------------
单独和电脑通信都成功了。。。
745021926
3楼-- · 2019-08-15 00:25
说起来32的PA9,PA10是兼容5V的,但是51单片机应该不能识别3.3V(3.7V以上才是耗电平),通过MAX232电平转换一下吧
511706987
4楼-- · 2019-08-15 03:24
回复【4楼】745021926:
---------------------------------
可以了,没有用 232。我是把线接错了。。。现在可以穿数据了 还是感谢了
lzx420707482
5楼-- · 2019-08-15 06:40
511706987 发表于 2014-2-24 23:36
回复【4楼】745021926:
---------------------------------
可以了,没有用&nbsp;232。我是把线接错了。。 ...

请问楼主是怎么接线的?
a5820736
6楼-- · 2019-08-15 06:42
 精彩回答 2  元偷偷看……

一周热门 更多>