打印
[MM32硬件]

串口中断试用,希望灵动提供ETH的HAL库

[复制链接]
4457|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
评测简介
很荣幸这次参加MM32F5270开发板评测,这次参加的原因是想测试一下STAR-MC1架构的ETH模块,但是发现灵动mindsdk并没有提供ETH相关的HAL库,这就有点尴尬了,只能放弃掉之前的测试计划。转而完成对开发板的串口中断进行评测。

二、开发板开箱



开发板的图片如图所示,盒子上有开发板贴图,可以看到是为2022年全国大学生物联网设计竞赛提供的开发板。这款开发板是逐飞做的开发板,做智能车的小伙伴都比较熟悉了。


使用特权

评论回复
评论
kmnqhaha 2024-4-30 17:47 回复TA
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_47569031/article/details/126625189 ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/weixin_47569031/article/details/126625189  
沙发
kmnqhaha|  楼主 | 2024-4-30 17:35 | 只看该作者
开发板本体

开发板是这样,外设还比较多。MPU6050、光敏电阻、麦克风、电位器、以太网等等。尴尬的就是官方没有提供ETH相关的HAL库,无法使用,我去找了逐飞,逐飞他们也没有ETH相关内容提供。可能这个物联网比赛里用无线的多一点,比如8266、或者是SPI的无线网卡。

使用特权

评论回复
板凳
kmnqhaha|  楼主 | 2024-4-30 17:36 | 只看该作者

板卡结构如图,外设非常多,就是我想要的以太网没提供软件资料。这次测评我就评测板子的串口中断啦。

使用特权

评论回复
地板
kmnqhaha|  楼主 | 2024-4-30 17:37 | 只看该作者
开发板附赠

使用特权

评论回复
5
kmnqhaha|  楼主 | 2024-4-30 17:37 | 只看该作者
开发板带了一个SWD的调试器,还有一张防BUG的黄色卡纸,这个真的是吸睛呀,感觉很灵性,多给几张就好了。

使用特权

评论回复
6
kmnqhaha|  楼主 | 2024-4-30 17:38 | 只看该作者
这个SWD接口用起来不太方便,需要插USB然后杜邦线连到开发板的20P的SWD接口上。正好我手里有逐飞的SWD下载器,找个转接板就可以啦,非常方便。

使用特权

评论回复
7
kmnqhaha|  楼主 | 2024-4-30 17:38 | 只看该作者
评测过程
1.MDK更新及PACK安装
因为STAR-MC1是一个比较新的内核,类似于Cortex-M33,所以旧版本的MDK不支持STAR-MC1的PACK安装,这里需要使用MDK-V5.37版本以上才可以安装MM32F5277E_DFP.0.0.7.pack,所以我又去下载安装了一次MDK。安装以及破X过程忽略啦。链接放在下面啦。

https://armkeil.blob.core.windows.net/eval/MDK537.EXE

安装完MDK后需要安装PACK,灵动将所有PACK全部打包,下载解压后直接安装即可,默认会自动适配MDK-PACK的路径。

https://www.mindmotion.com.cn/support/software/keil_pack

使用特权

评论回复
8
kmnqhaha|  楼主 | 2024-4-30 17:38 | 只看该作者
MindSDK下载
MindSDK是灵动提供的SDK下载途径,这里我们需要注册下账号,然后选择MDK的SDK及开发板为plus-f5270,选择建立工程即可。

https://www.mindmotion.com.cn/support/software/keil_pack



也可以打开下面SDK API DOCUMENT看看相关的API信息,反正里面是没有ETH相关的信息,这个就比较失望了。

使用特权

评论回复
9
kmnqhaha|  楼主 | 2024-4-30 17:39 | 只看该作者
Demo测试


下载完SDK后,就可以打开hello world工程来编译下看看了。

使用特权

评论回复
10
kmnqhaha|  楼主 | 2024-4-30 17:39 | 只看该作者
下载完SDK后,就可以打开hello world工程来编译下看看了。

使用特权

评论回复
11
kmnqhaha|  楼主 | 2024-4-30 17:39 | 只看该作者
如图所示,设置好下载器及下载完成后自动复位,然后插着Type-C接口的串口USB并编译程序。

使用特权

评论回复
12
kmnqhaha|  楼主 | 2024-4-30 17:39 | 只看该作者
编译完成后0错误,0警告,下载即可。

使用特权

评论回复
13
kmnqhaha|  楼主 | 2024-4-30 17:40 | 只看该作者
当前程序下载完后,会打印一个hello world,复位开发板后发现串口输出了hello world。

使用特权

评论回复
14
kmnqhaha|  楼主 | 2024-4-30 17:41 | 只看该作者
但是要注意一下,默认代码的波特率是9600,一般我们都用115200,所以没有输出的时候注意看一下是不是波特率没有设置正确。



使用特权

评论回复
15
kmnqhaha|  楼主 | 2024-4-30 17:42 | 只看该作者
4. 串口中断测试
还是使用之前的hello world程序。只需要打开串口中断使能。

首先我们在board.h里定义一下中断源及中断句柄

#define BOARD_DEBUG_UART_IRQn        UART1_IRQn
#define BOARD_DEBUG_UART_IRQHandler  UART1_IRQHandler

使用特权

评论回复
16
kmnqhaha|  楼主 | 2024-4-30 17:42 | 只看该作者
然后在串口初始化中打开串口接收使能。

使用特权

评论回复
17
kmnqhaha|  楼主 | 2024-4-30 17:46 | 只看该作者
48行使能的第一个参数就是串口回调函数的句柄。所以我们还需要创建一个串口中断回调函数。



这里你会发现,我在57行读了一下串口接收到的数据,下面来对比一下如果没有它会怎么样呢。

使用特权

评论回复
18
kmnqhaha|  楼主 | 2024-4-30 17:46 | 只看该作者
演示结果
我们注释掉这里的代码,如果串口接收到数据,那么它就会进入回调函数从而打印出hello world。



大家可以看到,我发了一个1,结果串口中断打印了成百上千个hello world,这说明一直在重复执行中断中的程序。

使用特权

评论回复
19
kmnqhaha|  楼主 | 2024-4-30 17:46 | 只看该作者

使用特权

评论回复
20
kmnqhaha|  楼主 | 2024-4-30 17:46 | 只看该作者
这是怎么回事呢,因为ARM默认串口中断不会自动清除中断标志位,需要手动清除下中断标志位。可以有两种方式,一种就是使用清除中断的API,另外就是读一下接收BUFF中缓冲的数据。我这里使用的就是第二种方式,接下来我们取消掉注释试试看。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

199

帖子

1

粉丝