完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
用STM32的UART功能发送0x33,用电脑里的串口助手接收数据,是00 66。。。这中间应该是某个地方上,单片机和串口助手的通信有差别造成的吧。但是自己一直没想明白其中的原因。还望同志们不吝赐教!!谢啦
附上UART的设置: UART2_DeInit(); /* UART1 configured as follow: - BaudRate = 9600 baud - Word Length = 8 Bits - One Stop Bit - No parity - Receive and Transmit enabled - UART1 Clock disabled */ UART2_Init((uint32_t)9600, UART2_WORDLENGTH_8D, UART2_STOPBITS_1, UART2_PARITY_NO,UART2_SYNCMODE_CLOCK_DISABLE, UART2_MODE_TXRX_ENABLE); UART2_Cmd(ENABLE); UART2_SendData8(0x33); while (UART2_GetFlagStatus(UART2_FLAG_TXE) == RESET) { } |
|
相关推荐
15个回答
|
|
你看看你的上下位机的波特率设置一样吗?
|
|
|
|
一样的。。。我怀疑是rs232数据包中初始位、停止位等,在串口助手上和单片机上不一样
|
|
|
|
进一步测试发现,单片机发送0x25,串口助手接收为0x6D;单片机发送0x6D,串口接收为0x49,反之亦然。 其中的规律为:单片机发送的0x25二进制为0010 0101,取反为11011010,在其开始加起始位0,在末尾加停止位1,则变为0110110101。这是串口助手直接从第一位开始读取,所以读到的数是0x6D,最后的01两位舍弃了。。。。同理也适用与0x6D变为0x49的情况 不知道这种情况是什么原因造成的??应该怎么避免掉起始位的问题呢 |
|
|
|
上位机软件的所有设置都要和单片机的一致
|
|
|
|
看现象像是通信参数设置不匹配
|
|
|
|
单片机设置的参数都在上位机挨个核对过,波特率、停止位、奇偶校验、数据宽度都确认过,保证一致。只有一项“流控制”是上位机有但单片机没有,选择的无流控制。。。 |
|
|
|
单片机串口的同步模式是什么意思,我看例程大部分人都选择禁用同步模式。。。。UART2_Init函数里这一项有很多可以选择的模式,比如第二个脉冲沿检测等等,具体代表什么意思也讲不清楚
|
|
|
|
|
|
|
|
TOPCB 发表于 2018-10-1 18:04 多谢楼主。。。实验条件简陋,连示波器都没有。。。工程我可以上传一下。。。 会不会与没有使用MAX232之类的转换芯片有关系呢?我现在是单片机的串口线直接接的USB转串口,再直连电脑 |
|
|
|
要看你的串口线是否和单片机的匹配,如果不匹配就是这个问题了。
|
|
|
|
|
|
|
|
你看一下是COMS电平还是TTL电平的。这个上面都有标注的。楼主还是加个232电平转换吧。
|
|
|
|
嗯,这个地方忽视了。。。想办法给开发板加个电平转换 |
|
|
|
刚好电平是相反的,TTL电平还是标准RS232要搞清楚。再不行,你直接取个异或算法
|
|
|
|
GPIO配置是否正确?
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2005 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1858 浏览 3 评论
4442 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2007 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2513 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 01:05 , Processed in 0.733284 second(s), Total 72, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号