kmnqhaha 发表于 2024-4-30 17:35

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

评测简介
很荣幸这次参加MM32F5270开发板评测,这次参加的原因是想测试一下STAR-MC1架构的ETH模块,但是发现灵动mindsdk并没有提供ETH相关的HAL库,这就有点尴尬了,只能放弃掉之前的测试计划。转而完成对开发板的串口中断进行评测。

二、开发板开箱



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


kmnqhaha 发表于 2024-4-30 17:35

开发板本体

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

kmnqhaha 发表于 2024-4-30 17:36


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

kmnqhaha 发表于 2024-4-30 17:37

开发板附赠

kmnqhaha 发表于 2024-4-30 17:37

开发板带了一个SWD的调试器,还有一张防BUG的黄色卡纸,这个真的是吸睛呀,感觉很灵性,多给几张就好了。

kmnqhaha 发表于 2024-4-30 17:38

这个SWD接口用起来不太方便,需要插USB然后杜邦线连到开发板的20P的SWD接口上。正好我手里有逐飞的SWD下载器,找个转接板就可以啦,非常方便。

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

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相关的信息,这个就比较失望了。

kmnqhaha 发表于 2024-4-30 17:39

Demo测试


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

kmnqhaha 发表于 2024-4-30 17:39

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

kmnqhaha 发表于 2024-4-30 17:39

如图所示,设置好下载器及下载完成后自动复位,然后插着Type-C接口的串口USB并编译程序。

kmnqhaha 发表于 2024-4-30 17:39

编译完成后0错误,0警告,下载即可。

kmnqhaha 发表于 2024-4-30 17:40

当前程序下载完后,会打印一个hello world,复位开发板后发现串口输出了hello world。

kmnqhaha 发表于 2024-4-30 17:41

但是要注意一下,默认代码的波特率是9600,一般我们都用115200,所以没有输出的时候注意看一下是不是波特率没有设置正确。



kmnqhaha 发表于 2024-4-30 17:42

4. 串口中断测试
还是使用之前的hello world程序。只需要打开串口中断使能。

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

#define BOARD_DEBUG_UART_IRQn      UART1_IRQn
#define BOARD_DEBUG_UART_IRQHandlerUART1_IRQHandler

kmnqhaha 发表于 2024-4-30 17:42

然后在串口初始化中打开串口接收使能。

kmnqhaha 发表于 2024-4-30 17:46

48行使能的第一个参数就是串口回调函数的句柄。所以我们还需要创建一个串口中断回调函数。



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

kmnqhaha 发表于 2024-4-30 17:46

演示结果
我们注释掉这里的代码,如果串口接收到数据,那么它就会进入回调函数从而打印出hello world。



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

kmnqhaha 发表于 2024-4-30 17:46

kmnqhaha 发表于 2024-4-30 17:46

这是怎么回事呢,因为ARM默认串口中断不会自动清除中断标志位,需要手动清除下中断标志位。可以有两种方式,一种就是使用清除中断的API,另外就是读一下接收BUFF中缓冲的数据。我这里使用的就是第二种方式,接下来我们取消掉注释试试看。

页: [1] 2
查看完整版本: 串口中断试用,希望灵动提供ETH的HAL库