打印
[STM32F1]

关于STM32串口初始化顺序请教?

[复制链接]
5198|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xlsbz|  楼主 | 2014-11-6 08:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32 Usart 上电发送一个无效字符的问题。
查了几个帖子。说是先初始化串口 然后初始化gpio就不会发送无效字符。请问有什么依据么?
找了手册没有找到!!!!
沙发
mmuuss586| | 2014-11-6 08:30 | 只看该作者
不管什么外设接口,都先配置IO;
依据没有;

使用特权

评论回复
板凳
huangfeng33| | 2014-11-6 10:26 | 只看该作者
mmuuss586 发表于 2014-11-6 08:30
不管什么外设接口,都先配置IO;
依据没有;

的确,翻遍手册也没找到说明。

使用特权

评论回复
地板
mmuuss586| | 2014-11-6 12:12 | 只看该作者
huangfeng33 发表于 2014-11-6 10:26
的确,翻遍手册也没找到说明。

补充下,即使多发一个数据;
对于通讯来说,这种容错处理的能力也是要有的;

使用特权

评论回复
5
xlsbz|  楼主 | 2014-11-6 12:45 | 只看该作者
mmuuss586 发表于 2014-11-6 12:12
补充下,即使多发一个数据;
对于通讯来说,这种容错处理的能力也是要有的; ...

@mmuuss586
@huangfeng33
现在一上电就usart1发送了1个0x00。

使用特权

评论回复
6
LOVE_ELEC| | 2014-11-6 12:53 | 只看该作者
建议楼主参考下官方的Demo,可能会有所收获!

使用特权

评论回复
7
xlsbz|  楼主 | 2014-11-6 13:06 | 只看该作者
LOVE_ELEC 发表于 2014-11-6 12:53
建议楼主参考下官方的Demo,可能会有所收获!

回答很严谨啊  。
看了一下 没啥收获 可能是看的不仔细 对这不特别熟悉。

使用特权

评论回复
8
LOVE_ELEC| | 2014-11-6 13:36 | 只看该作者
xlsbz 发表于 2014-11-6 13:06
回答很严谨啊  。
看了一下 没啥收获 可能是看的不仔细 对这不特别熟悉。 ...

目前用的STM32暂时没有出现楼主的这种现象!我就是直接官方的Demo拿过来直接用的!楼主要是方便可以把初始化部分的源代码贴出来看看!

使用特权

评论回复
9
xlsbz|  楼主 | 2014-11-6 14:53 | 只看该作者
LOVE_ELEC 发表于 2014-11-6 13:36
目前用的STM32暂时没有出现楼主的这种现象!我就是直接官方的Demo拿过来直接用的!楼主要是方便可以把初 ...

你是DMA么?

使用特权

评论回复
10
LOVE_ELEC| | 2014-11-6 15:00 | 只看该作者
嗯!带DMA!

使用特权

评论回复
11
LOVE_ELEC| | 2014-11-6 15:02 | 只看该作者
xlsbz 发表于 2014-11-6 14:53
你是DMA么?

如果是DMA方式的话,你就看看你的这个参数DMA_BufferSize,初始化的时候是否给的值为0(初始化的时候使能DMA)!

使用特权

评论回复
12
xlsbz|  楼主 | 2014-11-6 15:17 | 只看该作者
LOVE_ELEC 发表于 2014-11-6 15:02
如果是DMA方式的话,你就看看你的这个参数DMA_BufferSize,初始化的时候是否给的值为0(初始化的时候使能 ...

高人啊!我初始化的时候是1啊。

我觉得1挺好的。现在看来可能有问题!!!

使用特权

评论回复
13
xlsbz|  楼主 | 2014-11-6 15:18 | 只看该作者
LOVE_ELEC 发表于 2014-11-6 15:02
如果是DMA方式的话,你就看看你的这个参数DMA_BufferSize,初始化的时候是否给的值为0(初始化的时候使能 ...

但是我232和485的DMA初始化都是1.
可以只有232能发出0X00。
485的没发出任何东西

使用特权

评论回复
14
LOVE_ELEC| | 2014-11-6 15:26 | 只看该作者
xlsbz 发表于 2014-11-6 15:18
但是我232和485的DMA初始化都是1.
可以只有232能发出0X00。
485的没发出任何东西 ...

485没有测试过!不知道具体情况,这个你只能参考官方的Demo或者手册了!

使用特权

评论回复
15
xlsbz|  楼主 | 2014-11-6 15:28 | 只看该作者
LOVE_ELEC 发表于 2014-11-6 15:02
如果是DMA方式的话,你就看看你的这个参数DMA_BufferSize,初始化的时候是否给的值为0(初始化的时候使能 ...

嗯 DMA出事值 设定为2  则发送两个0x00.
所以你的推断是完全正确的。

所以现在的问题就变成了  如果我设定成为了0 会不会引起什么问题。

当初之所以我没有写成0是有原因的。

使用特权

评论回复
16
LOVE_ELEC| | 2014-11-6 15:30 | 只看该作者
xlsbz 发表于 2014-11-6 15:28
嗯 DMA出事值 设定为2  则发送两个0x00.
所以你的推断是完全正确的。

我当时是这样用的:初始化的时候后设置为0,在需要发送数据的时候在根据实际发送的数据长度,去更改这个值!

使用特权

评论回复
17
xlsbz|  楼主 | 2014-11-6 15:36 | 只看该作者
LOVE_ELEC 发表于 2014-11-6 15:30
我当时是这样用的:初始化的时候后设置为0,在需要发送数据的时候在根据实际发送的数据长度,去更改这个值 ...

嗯 我现在也是这样用的。但是当时为什么改成0,不清楚啊。
找到以前的代码修改记录

//2013.11.27 10:45 由0改为1

但是没写原因,晕!!!

使用特权

评论回复
18
xlsbz|  楼主 | 2014-11-6 15:43 | 只看该作者
LOVE_ELEC 发表于 2014-11-6 15:30
我当时是这样用的:初始化的时候后设置为0,在需要发送数据的时候在根据实际发送的数据长度,去更改这个值 ...

试了。DMA改成0,确实就好了。
但是没有找到我为啥以前由0改到1的原因。

所以只能还用1了。嗨!!!

不管怎样,已找到真相。多谢LOVE_ELEC。

使用特权

评论回复
19
LOVE_ELEC| | 2014-11-6 15:50 | 只看该作者

使用特权

评论回复
20
Dick00| | 2014-11-6 17:17 | 只看该作者
学习了

使用特权

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

本版积分规则

190

主题

1614

帖子

4

粉丝