OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3978|回复: 3

stm32如何通过串口接收字符串,并将字符串转换为整型变量?

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2023-1-8
在线时间
2 小时
发表于 2023-3-31 16:13:59 | 显示全部楼层 |阅读模式
3金钱
使用的型号:stm32f103RCT6
想要实现的功能:从串口2持续接收字符串(字符串内只有一个数字,例如”35”或者”-35”),在main函数中处理接收到的字符串,将字符串转为整型变量,然后通过串口1输出到电脑端。
目前问题:能够接收和打印字符串,但是数据处理出现问题,比如串口2一直在接收“1”,但是缓冲区内一次中断内记录的却是’1111111”,而不是只有一个“1“。处理负数也无法正常输出。

问题如图:左边串行终端为k210输入至stm32串口2中的字符串,仅有“1“,并没有将”angle=”打包至字符串。

右边XCOM中显示的是stm32通过串口1输出至电脑的整数,为”1111111111“

负数则不正常输出,输入的字符串为”-2“,但输出到电脑则是”-22“


编写的代码如下:
串口2,用以接收字符串的中断函数


主函数中对于ucTemp字符数组的转换处理和输出

最佳答案

查看完整内容[请看2#楼]

看样子,主循环并不知道字符串是否接收完成,应在收到回车换行时置一个标志,主循环检测到标志后才处理字符串。 处理完后,字符串仍在数组内,未清除,导致当前数据与之前的数据混在一起。(若解决了标志问题,此问题也就不会产生)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8206
金钱
8206
注册时间
2020-5-11
在线时间
3700 小时
发表于 2023-3-31 16:14:00 | 显示全部楼层
看样子,主循环并不知道字符串是否接收完成,应在收到回车换行时置一个标志,主循环检测到标志后才处理字符串。
处理完后,字符串仍在数组内,未清除,导致当前数据与之前的数据混在一起。(若解决了标志问题,此问题也就不会产生)
专治疑难杂症
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2023-1-8
在线时间
2 小时
 楼主| 发表于 2023-3-31 16:17:04 | 显示全部楼层
似乎图片没成功上传

主函数中对于缓冲区ucTemp的转换处理和输出

主函数中对于缓冲区ucTemp的转换处理和输出

串口2,用以接收字符串的中断函数

串口2,用以接收字符串的中断函数
2.png

左边串行终端为k210输入至stm32串口2中的字符串,仅有“1“,并没有将”angle=”打包至字符串。 右边XCOM中 ...

左边串行终端为k210输入至stm32串口2中的字符串,仅有“1“,并没有将”angle=”打包至字符串。 右边XCOM中 ...
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2023-1-8
在线时间
2 小时
 楼主| 发表于 2023-4-1 14:20:43 | 显示全部楼层
LcwSwust 发表于 2023-4-1 09:22
看样子,主循环并不知道字符串是否接收完成,应在收到回车换行时置一个标志,主循环检测到标志后才处理字符 ...

非常感谢,您说的非常对,现在已经解决问题了。还一个原因就是输入至stm32的字符串并没有“回车/换行”,导致数据混在一起,之前错误以为python打包的字符串会自带回车,换行或者'\0',实际上并没有。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 12:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表