Ycc365下载-亚洲365bet投注-帕尼尼球星卡FIFA365

STM32-- 调试-通讯:单片机串口和电脑通讯

目录 1.串口输出数据到电脑 硬件部分 串口输出数据到电脑的软件软件部分: 相关问题: 2.单片机串口--485--485转USB--电脑 串口,芯片,转换器,

STM32-- 调试-通讯:单片机串口和电脑通讯

目录

1.串口输出数据到电脑

硬件部分

串口输出数据到电脑的软件软件部分:

相关问题:

2.单片机串口--485--485转USB--电脑

串口,芯片,转换器,设备之间的通讯的接线,都是要TX--RX, RX--TX 交叉连接。

单片机串口和电脑不能直接通讯,要经过USB转换,

最直接的方式:

单片机串口引脚---ttl/cmos转USB---电脑USB口

经过485或者232的方式:

单片机开发板(单片机串口引脚 -- 485芯片引脚)485接口 -- 485转USB -- 电脑USB

单片机串口通常要经过max485或者max3232芯片,转换成485或者232信号(应该是这样的信号更不容易受干扰,等等),去和其他设备进行通讯。 485或者232信号在工作的时候直接和其他设备连接即可,在调试或者其他需要和电脑连接的时候,通过485转USB(232转USB)和电脑通讯。

1.串口输出数据到电脑

硬件部分

串口--串口转USB--电脑USB口

单片机串口和转换器接线:

单片机 -- TTL/CMOS转USB

VDD -- VDD

TX -- RX

RX -- TX

GND -- GND

电脑USB接口供电是5V, 转换器有5v和3.3v可选择,根据单片机电源确定。

如果只需要单片机发送数据,只需要连接单片机的TX GND的和转换器的RX GND即可,只要接收数据,也是两根线就可以。

有时候,JLINK调试器也连接着单片机,转换器的gnd不接线也可以,可以共用jlink的gnd。

单片机有电源时,VDD--VDD接不接都可以。

单片机的gnd和电脑的gnd连接,电脑可以正常接收,断开共地,只有一个TX--RX连接,电脑接受的是乱码

下图:接线正常,接受正常;断开gnd,接受的是乱码;重新连接gnd,接收正常Hello

串口输出数据到电脑的软件软件部分:

串口助手:sscom (接收printf打印的数据)

调试环境:keil

我使用了microlib+重定向printf,有不使用microlib的方式以后再试了。

keil的target设置:

芯片:stm32c031系列,

库文件是HAL库,标准库的方式没试。

重定向printf的程序,将这一段插入到main.c文件或者建一个新.c文件放置都可以

#include "stdio.h"

/*重定向printf函数*/

int fputc(int ch, FILE *f)

{

HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1 , 0xffff);

return ch;

}

在主循环里加入以下语句即可:

while (1)

{

printf("hello\n");

HAL_Delay(delay_time);//避免发送太快,延时一下

}

相关问题:

1.死机问题 卡死在这里: 0x0800054A BEAB BKPT 0xAB0

解决方式:勾选微库就行了

2. printf是把输出重定向到串口,由串口把信息输出到电脑,由串口助手显示出来。

还有模拟调试的时候,可以把printf的内容输出到 keil的"debug (printf) viewer" (或者USART #)窗口,没有试过,不知道实际是不是这样。以前试过一次,但是keil没有那个芯片的模拟功能。

//这一段没用到,放这里参考一下

#include "stdio.h"//printf的头文件

//#include "usart.h"//我的串口配置在usart.c文件里,包括变量huart1

/**********************************************************

本来想使用一下这段适配不同情况,但是没搞好,就不搞了,先放在这里

#ifdef __GNUC__

#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

#else

#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)

#endif

int fputc(int ch, FILE *f)

{

HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1 , 0xffff);

return ch;

}

**************************************************************/

/*重定向printf函数*/

int fputc(int ch, FILE *f)

{

HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1 , 0xffff);

return ch;

}

/************************************************************

不知道怎么用,找资料的时候看到的,先放在这

/*接收数据*/

int GetKey(void)

{

uint8_t received_data;

// 轮询方式接收数据,超时为 HAL_MAX_DELAY,表示无限等待

HAL_UART_Receive(&huart1, &received_data, 1, HAL_MAX_DELAY);

return (int)received_data;

}

*****************************************************************/

2.单片机串口--485--485转USB--电脑

单片机 -- 485 接线

USART->CK -- 485->RE(头上有横线和485->DE)

USART->TX -- 485->DI

USART->RX -- 485->RO

MAX485引脚图:

RO:Receiver Output

DI:Driver Input

RE、DE:Receiver Output Enable Driver Output Enable

← 上一篇: 泰国ray蚕丝面膜多久敷一次 ray面膜使用测评 08月10日更新
下一篇: 震撼!荷兰点球大战淘汰哥斯达黎加,强势晋级世界杯四强 →

相关推荐

轮胎打滑怎么解决
1/4决赛即将到来 世界杯四强分析
铷磁铁与钕磁铁的区别是什么?哪个更强?
从零开始的PSVita生活——购买篇
10款“韩式辣酱”食谱!轻松搞定韩国道地美食
如何去除白衣服上的汗渍
小米贷款,上征信吗?全面解析小米贷款与个人信用报告
支付宝解绑App全攻略:彻底告别不必要的关联
居住证的有效期是多久,有哪些相关规定
兰陵王技能顺序
优分期怎么进行信用认证 优分期信用认证要多久
烤鞋器要烤多久,烤鞋器要烤多久才能烤好