STM32串口数据

2019-03-23 18:06发布

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

STM32中上位机发送的数据与串口接收的数据不一样。
QQ截图20160719102439.png

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

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
lcofjp
1楼-- · 2019-03-24 15:27
forever1314 发表于 2016-7-19 13:20
没有额,ch只在这个函数里出现。

我真不知道该如何说你了
你确定GPIOF->ODR = ch;这个语句,在ch小于128的时候能控制得了Pin7和Pin8?
你的8位变量,最高能控制到Pin7,Pin8是无论如何也不会变的
另外只有ch在大于127的时候才会影响到Pin7,你发送任何可见字符都是没意义的,只能发送十六进制数字才行。
如果你没啥意见的话,可以改成
GPIOF->ODR = ch << 7;
forever1314
2楼-- · 2019-03-24 16:55
lcofjp 发表于 2016-7-19 13:53
我真不知道该如何说你了
你确定GPIOF->ODR = ch;这个语句,在ch小于128的时候能控制得了Pin7和Pin8?
...

额,我把ch定义为16位的数据类型,还是不可以额。在上位机上输入的数据时16进制的,Pin7和Pin8还是不受输入数据的控制。
lcofjp
3楼-- · 2019-03-24 22:39
 精彩回答 2  元偷偷看……
forever1314
4楼-- · 2019-03-25 02:35
lcofjp 发表于 2016-7-19 14:58
你定义16位没用,串口接收到的数据就是8位的,你没事多补补基础吧。

额,谢谢了。
forever1314
5楼-- · 2019-03-25 03:24
lcofjp 发表于 2016-7-19 14:58
你定义16位没用,串口接收到的数据就是8位的,你没事多补补基础吧。

如果要传送的数据时32位的,用串口通信可以么?
lcofjp
6楼-- · 2019-03-25 05:52
 精彩回答 2  元偷偷看……

一周热门 更多>