你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

通过USART3+DMA实现自动不定长收收发数据和交互调试功能

[复制链接]
jiguosheng 发布时间:2018-8-11 22:06
本帖最后由 youxia 于 2018-8-12 11:45 编辑
/ U, K+ s( [, {; B/ H/ m4 Q8 K, L" P1 a2 _8 s# c1 R1 s7 b* K2 U
本人最近学习使用STM32F722ZE的nucleo板。说实话,这块板子上没有焊接网络模块,下方的USB口也不是安卓机的USB口。虽然这块板子有很多不足,但这些并不影响我们发挥创造力。本人使用板子上的USART3,通过空闲中断+DMA实现自动不定长收收发数据,并在此基础上编写了一个交互式的函数调试小软件。% h1 z' {: b' ]$ n+ C
这个小软件可以让用户通过输入函数来灵活调用单片机的函数,参数可以是整型或浮点数。整数支持十进制和十六进制,浮点数只支持十进制,可以为正数和负数。暂不支持指针。对于错误的输入可以自动检测出来并作出提示。输入的字节数最大为3*1024字节,最大支持带5个参数的函数。串口的波特率为115200.
8 ?$ U6 k: e: w& h& y实际效果如下:& J, n( @/ v7 y; Q0 ]# P
1.jpg ' c2 z- |2 M# w
2.jpg
7 F. D* M, \# A/ u 3.jpg 5 _  v1 x" d! [
4.jpg
/ @/ W. K, t2 G2 g( J* i7 ? 5.jpg ! u: J; p! [6 w/ g  s5 b  B
附件如下:
: c9 J# T3 a  f  b USART3 固定波特率 自动不定长收收发数据 Shell V0.1.zip (7.55 MB, 下载次数: 241)
赞 收藏 3 评论14 发布时间:2018-8-11 22:06

举报

14个回答
jiguosheng 回答时间:2018-8-12 11:26:03
本帖最后由 youxia 于 2018-8-12 11:27 编辑
5 B2 r, O# ^5 F6 c" f9 v" V  a6 M2 t1 N1 P* P
先说一下程序中用到的两个结构定义,如下图所示。 10.jpg 5 u0 a) i$ B2 P/ V
0 r; c3 c' l- j6 _- {
程序基本上围绕这两个结构的数据展开。
. T( T% }- G, F2 T0 @& y$ ^2 u实际使用中的function_list如下:
* A# K, x1 ~; _4 Z- ^5 }. h$ P  S 13.jpg
jiguosheng 回答时间:2018-8-12 11:40:13
接着简要说一下程序运行流程。. [5 f3 f/ X9 J0 n: u
先是设置开启USART3和其DMA,开启串口空闲中断。串口在接收到完整的数据后一定时间再无数据接收,触发串口空闲中断。中断函数如下:& Z" W4 w1 y4 Y8 q
11.jpg / m2 t+ {4 w  M3 F4 J2 w
接着在main()的while(1)循环中调用Command_Handle();
# f% P+ U+ f/ X, L% i; f( D 14.jpg
# A4 t8 r" j% v' m$ L2 Q在Command_Handle()函数中通过recive_command.recive_complete判断是否有字符接收。
+ z' k4 f" L) a 12.jpg , e6 f- O! V5 b+ f
要说明一点的是,STM32F7自带FPU,为此一般情况下在写程序时会开启这个FPU,但是本程序是通过指针来进行参数的转换和传递,开启FPU会使得浮点数的指针混乱,为此一定要在软件中关闭FPU功能。
3 |0 T  \* j6 U2 W) [ 15.jpg 1 z' D$ V1 `) i
xiaolingoei 回答时间:2018-8-12 15:03:45
前排沙发,支持一下
lizs-351814 回答时间:2018-8-12 17:57:49
必须支持
淋泠雨 回答时间:2018-8-13 10:04:27
点个赞
rockzhouchina 回答时间:2018-8-13 11:31:25
多谢分享
zealerlu 回答时间:2018-8-13 12:49:02
学习了 支持~~~
zealerlu 回答时间:2018-8-21 01:34:11
标记 学习一下
西点钟灵毓秀 回答时间:2018-8-21 11:05:44
收藏了,应该还不错
Serval 回答时间:2018-8-26 09:47:08
流星79 回答时间:2019-5-27 18:13:46
先收藏了,有用标准库配置的吗?
Kevin_G 回答时间:2019-5-27 19:02:50
已收藏
幽夜灵殇 回答时间:2020-6-23 14:36:05
谢谢分享                             !!!!!!!!!!!
xiaoyang000001 回答时间:2020-10-8 10:40:06
支持发帖
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版