野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12231|回复: 8

串口1接受一组数据

[复制链接]
发表于 2019-5-13 16:49:05 | 显示全部楼层 |阅读模式
本帖最后由 星原 于 2019-5-13 16:52 编辑

我想问一下,在指南者视频教程21—第6节中,火哥已经编写STM32发送给串口调试助手一组数据的函数;但是,STM32如何通过串口调试助手接受一组数据,这个程序如何编写,有没有大牛给个例程?本人刚开始学习,感觉好多不太懂!
回复

使用道具 举报

发表于 2019-5-13 17:18:49 | 显示全部楼层
就是串口接收?例程里有啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-13 20:39:20 | 显示全部楼层
WishWish 发表于 2019-5-13 17:18
就是串口接收?例程里有啊

我的意思是接受一个数组。比如串口助手发送00 45 0F 4A,将这几个数给a[3]数组,这个是怎么编写程序的,能不能给个例程?
回复 支持 反对

使用道具 举报

发表于 2019-5-13 22:44:49 | 显示全部楼层
星原 发表于 2019-5-13 20:39
我的意思是接受一个数组。比如串口助手发送00 45 0F 4A,将这几个数给a[3]数组,这个是怎么编写程序的, ...

那个环形队列例程可以满足你,觉得太多东西了吧话,那就是进入接收中断就开始计数 a【i】=USART_ReceiveData( DEBUG_USARTx ); i++ ; 然后关键就是怎么截断告诉你收完了然后i=0,

你可以参考一位帅哥的DMA大法 http://www.firebbs.cn/forum.php? ... 5&fromuid=37393   


不行的话就百度下 USART_IT_IDLE 空闲中断用法(环形队列例程就是这么用),再不行学一位老哥的,你设一个帧尾(随便),
if( a【i】== 0xFE){收完了;i=0;}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-14 10:31:15 | 显示全部楼层
WishWish 发表于 2019-5-13 22:44
那个环形队列例程可以满足你,觉得太多东西了吧话,那就是进入接收中断就开始计数 a【i】=USART_ReceiveD ...

我想在串口调试助手上发送16进制的12 34 56;在串口调试助手的接受区接受16进制的12 34 56,那如果是在这个程序的基础上是怎么修改的呢,我改了下,但是串口调试助手没有反应?

USART1—USART1指令控制RGB彩灯.rar

289.59 KB, 下载次数: 18

回复 支持 反对

使用道具 举报

发表于 2019-5-14 14:04:15 | 显示全部楼层
可以尝试用空闲中断或者用定时器
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-14 16:03:23 | 显示全部楼层
WishWish 发表于 2019-5-13 22:44
那个环形队列例程可以满足你,觉得太多东西了吧话,那就是进入接收中断就开始计数 a【i】=USART_ReceiveD ...

我在博客中找到了一种方法,代码如下,我想问下,如何在主函数读取接受缓冲器中的数值呢?我写的主函数,怎么没反应,能不能指导指导!
1.jpg
2.jpg
回复 支持 反对

使用道具 举报

发表于 2019-5-14 17:53:44 | 显示全部楼层
星原 发表于 2019-5-14 16:03
我在博客中找到了一种方法,代码如下,我想问下,如何在主函数读取接受缓冲器中的数值呢?我写的主函数, ...

参考你找的,然后看我图的示意来加些东西,随便写的,你试下,你要判断接收完了才去访问数组,你一直循环访问没用的

YL56MFQ56Z4L)8)II$9`7~R.png
2]NY2WQJJI7K98ZIQZCO5[K.png
回复 支持 反对

使用道具 举报

发表于 2019-5-22 06:45:51 | 显示全部楼层
这个有现成的程序。
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-12-5 23:19 , Processed in 0.045745 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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