打印
[STM32F1]

不知道问题出在那里

[复制链接]
653|31
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stly|  楼主 | 2020-7-25 21:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ST有个例子 配置如下
    USART_InitStructure.USART_BaudRate = 9600;
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  USART_InitStructure.USART_StopBits = USART_StopBits_1;
  USART_InitStructure.USART_Parity = USART_Parity_Even;
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
用计算机接收数据的时候,奇偶校验位作为了数据的最高位,我把USART_WordLength_8b;改成USART_WordLength_9b;就接收不到数据了,不知道问题处在那里,请各位指教。

使用特权

评论回复
沙发
llia| | 2020-7-25 21:19 | 只看该作者
如果PC端设置为: 数据位=8,停止位=1,奇偶检验=偶
则STM32的设置为:数据位=9,停止位=1,奇偶检验=偶

使用特权

评论回复
板凳
huwr| | 2020-7-25 21:21 | 只看该作者
请记住,在STM32上,奇偶检验位要计算在数据位中。

使用特权

评论回复
地板
wenfen| | 2020-7-25 21:25 | 只看该作者
奇偶检验位是一个有特殊意义的数据位,你去仔细地研究一下它的来历就知道了。

使用特权

评论回复
5
tian111| | 2020-7-25 21:28 | 只看该作者
通常我们所说的数据位不包括校验位。

使用特权

评论回复
6
llljh| | 2020-7-25 21:31 | 只看该作者
usart发送寄存器空中断,也和别的不一样,别的mcu(如nxp的arm)是变为空才中断,只要是空就不停的中断。

使用特权

评论回复
7
dingy| | 2020-7-25 21:35 | 只看该作者
通常是设置成小于一半就中断一下拉。

使用特权

评论回复
8
午夜粪车| | 2020-7-25 21:38 | 只看该作者
本帖最后由 午夜粪车 于 2020-7-25 21:44 编辑

配置能看下吗

使用特权

评论回复
9
stly|  楼主 | 2020-7-25 21:41 | 只看该作者
弄了一上午,做了n多尝试,结果还是不行,不是收不到数据,就是数据的最高位包含了校验位。

使用特权

评论回复
10
stly|  楼主 | 2020-7-25 21:45 | 只看该作者
我的设置如下:
USART_InitStructure.USART_BaudRate = 115200;
  USART_InitStructure.USART_WordLength = USART_WordLength_9b;;
  USART_InitStructure.USART_StopBits = USART_StopBits_1;
  USART_InitStructure.USART_Parity = USART_Parity_Even;
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  /* USART configuration */
  USART_Init(USART1,&USART_InitStructure);

结果是单片机可以正确接收计算机的消息,也可以正确返回,但是计算机接收不到单片机的任何数据。

不知道发送的时候如果加了奇偶校验,还要加其他的什么设置。

使用特权

评论回复
11
xxmmi| | 2020-7-25 21:48 | 只看该作者
你先把波特率降下来,等双方都稳定了再调上去。

使用特权

评论回复
12
lium| | 2020-7-25 21:55 | 只看该作者
也许是波特率太高,某一方的响应跟不上。

使用特权

评论回复
13
stly|  楼主 | 2020-7-25 21:58 | 只看该作者
不是,我用示波器看了一下,计算机的发送波形是有的,单片机也能正确接收到,而单片机内部发送也是一直发送的,但是看不到发送波形

使用特权

评论回复
14
huwr| | 2020-7-25 22:01 | 只看该作者
不知道什么影响到什么寄存器了

使用特权

评论回复
15
stly|  楼主 | 2020-7-25 22:04 | 只看该作者
我只是改了改奇偶校验,但是只要改了,有时候就通讯不上了

使用特权

评论回复
16
zwll| | 2020-7-25 22:07 | 只看该作者
改回来

使用特权

评论回复
17
stly|  楼主 | 2020-7-25 22:16 | 只看该作者
现在用的是STM32F103RCT6,以前用vbt6的时候没遇到过这类问题。

使用特权

评论回复
18
llljh| | 2020-7-25 22:19 | 只看该作者

什么意思?不是很明白你说的什么,能再解释一下这个现象吗

使用特权

评论回复
19
stly|  楼主 | 2020-7-25 22:21 | 只看该作者
我现在也摸不着啥原因,呵呵,奇偶校验反正是失败了。我下载了一个以前的程序,运行一下,能正常通讯,然后再把我这次改回来的程序下载进去,就一切正常了。

使用特权

评论回复
20
kangzj| | 2020-7-25 22:24 | 只看该作者
呵呵,你自己改来改去,把自己都改晕了,别人看着就更晕了,:lol。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

433

主题

7058

帖子

0

粉丝