2836|14

73

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

STM32串口数据 [复制链接]

 
本帖最后由 forever1314 于 2016-7-19 10:36 编辑

STM32中上位机发送的数据与串口接收的数据不一样。


我想把ch的值赋给GPIOF然后让它点亮相关的LED,但是不管在上位机上发送任何数据与GPIOF相关的LED都会亮(GPIOF总是被拉低)。程序能够执行到printf语句,上位机上能够发射和接收数据而且发射与接收的数据相同,在赋值给GPIOF时ch的值与上位机上的值不一样,求解。

此帖出自stm32/stm8论坛

最新回复

看你6楼的帖子里面,uart你只用了PA9? 还有你的引脚复用函数都没有看到哦。。。。。  详情 回复 发表于 2016-7-19 22:14
点赞 关注
 

回复
举报

21

帖子

1

TA的资源

一粒金砂(中级)

沙发
 
看ch是否在别的地方置位?!
此帖出自stm32/stm8论坛

点评

没有额,ch只在这个函数里出现。  详情 回复 发表于 2016-7-19 13:20
 
 

回复

6040

帖子

196

TA的资源

版主

板凳
 
你的IO引脚是否设置正确了?
此帖出自stm32/stm8论坛

点评

[attachimg]249154[/attachimg] GPIOF的Pin7和Pin8各控制一个LED。  详情 回复 发表于 2016-7-19 13:13
[attachimg]249153[/attachimg] 应该没错吧,STM32板子上GPIOF的Pin7和Pin8各控制一个LED。  详情 回复 发表于 2016-7-19 13:12
 
 

回复

38

帖子

0

TA的资源

一粒金砂(中级)

4
 
这个可能是GPIO配置的问题。
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

1

TA的资源

一粒金砂(中级)

5
 
lcofjp 发表于 2016-7-19 11:16
你的IO引脚是否设置正确了?


应该没错吧,STM32板子上GPIOF的Pin7和Pin8各控制一个LED。

此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

1

TA的资源

一粒金砂(中级)

6
 
lcofjp 发表于 2016-7-19 11:16
你的IO引脚是否设置正确了?


GPIOF的Pin7和Pin8各控制一个LED。

此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

1

TA的资源

一粒金砂(中级)

7
 
maclao 发表于 2016-7-19 11:00
看ch是否在别的地方置位?!

没有额,ch只在这个函数里出现。
此帖出自stm32/stm8论坛

点评

我真不知道该如何说你了 你确定GPIOF->ODR = ch;这个语句,在ch小于128的时候能控制得了Pin7和Pin8? 你的8位变量,最高能控制到Pin7,Pin8是无论如何也不会变的 另外只有ch在大于127的时候才会影响到Pin7,你发  详情 回复 发表于 2016-7-19 13:53
 
 
 

回复

6040

帖子

196

TA的资源

版主

8
 
forever1314 发表于 2016-7-19 13:20
没有额,ch只在这个函数里出现。

我真不知道该如何说你了
你确定GPIOF->ODR = ch;这个语句,在ch小于128的时候能控制得了Pin7和Pin8?
你的8位变量,最高能控制到Pin7,Pin8是无论如何也不会变的
另外只有ch在大于127的时候才会影响到Pin7,你发送任何可见字符都是没意义的,只能发送十六进制数字才行。
如果你没啥意见的话,可以改成
GPIOF->ODR = ch << 7;
此帖出自stm32/stm8论坛

点评

额,我把ch定义为16位的数据类型,还是不可以额。在上位机上输入的数据时16进制的,Pin7和Pin8还是不受输入数据的控制。  详情 回复 发表于 2016-7-19 14:10
 
 
 

回复

73

帖子

1

TA的资源

一粒金砂(中级)

9
 
lcofjp 发表于 2016-7-19 13:53
我真不知道该如何说你了
你确定GPIOF->ODR = ch;这个语句,在ch小于128的时候能控制得了Pin7和Pin8?
...

额,我把ch定义为16位的数据类型,还是不可以额。在上位机上输入的数据时16进制的,Pin7和Pin8还是不受输入数据的控制。
此帖出自stm32/stm8论坛

点评

你定义16位没用,串口接收到的数据就是8位的,你没事多补补基础吧。  详情 回复 发表于 2016-7-19 14:58
 
 
 

回复

6040

帖子

196

TA的资源

版主

10
 
forever1314 发表于 2016-7-19 14:10
额,我把ch定义为16位的数据类型,还是不可以额。在上位机上输入的数据时16进制的,Pin7和Pin8还是不受输 ...

你定义16位没用,串口接收到的数据就是8位的,你没事多补补基础吧。
此帖出自stm32/stm8论坛

点评

如果要传送的数据时32位的,用串口通信可以么?  详情 回复 发表于 2016-7-19 15:39
额,谢谢了。  详情 回复 发表于 2016-7-19 15:19
 
 
 

回复

73

帖子

1

TA的资源

一粒金砂(中级)

11
 
lcofjp 发表于 2016-7-19 14:58
你定义16位没用,串口接收到的数据就是8位的,你没事多补补基础吧。

额,谢谢了。
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

1

TA的资源

一粒金砂(中级)

12
 
lcofjp 发表于 2016-7-19 14:58
你定义16位没用,串口接收到的数据就是8位的,你没事多补补基础吧。

如果要传送的数据时32位的,用串口通信可以么?
此帖出自stm32/stm8论坛

点评

串口只传字节数据 32位的数据也只是4个字节而已 发送的时候自己拆分,收到的时候组合一下就行了 简简单单的道理。  详情 回复 发表于 2016-7-19 15:50
 
 
 

回复

6040

帖子

196

TA的资源

版主

13
 
forever1314 发表于 2016-7-19 15:39
如果要传送的数据时32位的,用串口通信可以么?

串口只传字节数据
32位的数据也只是4个字节而已
发送的时候自己拆分,收到的时候组合一下就行了
简简单单的道理。
此帖出自stm32/stm8论坛

点评

额。  详情 回复 发表于 2016-7-19 16:08
 
 
 

回复

73

帖子

1

TA的资源

一粒金砂(中级)

14
 
lcofjp 发表于 2016-7-19 15:50
串口只传字节数据
32位的数据也只是4个字节而已
发送的时候自己拆分,收到的时候组合一下就行了
简简 ...

额。
此帖出自stm32/stm8论坛
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

15
 
看你6楼的帖子里面,uart你只用了PA9?
还有你的引脚复用函数都没有看到哦。。。。。
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表