开发板资料介绍- Plus-F5270,据灵动微电子市场总监王维介绍,MM32F5系列采用Armv8-M Mainline架构,全系配置安谋科技“星辰”STAR-MC1处理器,在架构和外设设计上做了多处创新,能够适应工业、IoT、汽车等多种高端市场。
- 完整的生态配套:灵动微电子同步发布了配套的新软件和硬件的平台和开发工具,以提供给用户更全面的开发和评估的体验。
- 开发板功能示意图:
- 4KB L1 I-Cache,4KB L1 D-Cache
- 多达 256KB 内置 Flash
- 多达 192KB 内置 RAM(包括 32KB ITCM、32KB DTCM 和 128KB System RAM)
- 内置 QSPI 接口,支持程序在线执行(eXecute-in-Place,XIP)
- 内置 FSMC 并行存储器接口
- 2 个 12 位 SAR ADC,采样率高达 3MSPS,配置最高 24 个外部通道,支持最高 256 倍硬件过采样
- 2 个 12 位 DAC、3 个比较器
- 7 个 16 位定时器、2 个 32 位定时器
- 8 个 UART 接口(包含1 个 LPUART)、3 个 SPI 接口、3 个 I2S 接口、2 个 I2C 接口
- 1 个 USB OTG 全速接口
- 2 个 FlexCAN 接口
- 部分型号配置 10M/100M 以太网控制器
- 支持的温度范围为 -40℃ - 105 ℃
- 提供 LQFP144、LQFP100 和 LQFP64封装
三、开箱之初体验em...提供的套件足以玩转开发板,不过有一说一这块板子的体积应该是我用过的第三个大体量的家伙,属实被震惊到了,确实比树莓派和arduino大。 - Plus-F5270开发板 1块
- 创芯工坊PWLINK2(DAP) 1个
- 母对母杜邦线 12条
- USB Type-C数据线 1条
- 开发板说明页 1张
铁子们,是不是很惊艳啊? 四、开发环境搭建萌新小伙伴可以按照我的顺序来安装开发环境逐步上手,大佬们请随意,^_^ - 系统:win10
- ide: 免费注册地址:免费注册地址 V5.37,下载下来使用社区提供的序列号注册一个社区版本即可,42B2L-JM9GY-LHN8C。不会的小伙伴可以参考这个博文,感谢原文博主。安装idea具体步骤。有大聪明说,那我能不能直接下载,安装,那当然也是可以的。不过不**的版本用着多少有点怪异。直接下载
- 设备支持包:官网下载,文件下载下来之后解压缩,尔后找到“MindMotion.MM32F5277E_DFP.0.0.7.pack”点击安装,如下图:
- mdk,下载之前需要先注册一个账号,然后再进行相关的下载操作。官网地址,这个是本次测评的重要参与者。关于mdk的操作,就不赘述了,官网的视频有讲解,不会的小伙伴可以去查看一下,很简单。
五、配置与烧录usb接口供电,烧录器进行程序烧录。大聪明可以直接使用烧录器接线供电和程序烧录。 1、先给板子上电,完成开机自检测。板子通电后会有提示音乐和跑马灯的效果,很炫。
2、程序烧录器我这边是接了4根线,分别是RST,SWCLK,SWDIO,GND。位置如下图:
3、Keil5配置
在Keil5中载入工程后,点击魔法棒,选择如下图选项;接着点击后面的设置按钮,继续选择CMSIS-DAP这个选项,具体见第二张图:
一定要点击确认按钮,这样就完成了设备烧录的设置。 六、例程开发1、串口通信(HelloWord)
2、GPIO输入-案件检测
3、adc_basic 代码1 /* * Copyright 2021 MindMotion Microelectronics Co., Ltd. * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */#include "board_init.h"/* * Macros. *//* * Variables. *//* * Declerations. *//* * Functions. */int main(void){ uint8_t ch; BOARD_Init(); printf("hello, world\r\n"); while (1) { ch = getchar(); putchar(ch); }}/* EOF. */
代码2 /* * Copyright 2021 MindMotion Microelectronics Co., Ltd. * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */#include <stdint.h>#include <stdio.h>#include "board_init.h"/* * Definitions. *//* * Variables. *//* * Declerations. *//* * Functions. */int main(void){ BOARD_Init(); printf("\r\ngpio_basic example.\r\n"); while (1) { if ( GPIO_ReadInDataBit(BOARD_KEY0_GPIO_PORT, BOARD_KEY0_GPIO_PIN) ) /* key is no pressed. */ { GPIO_WriteBit(BOARD_LED0_GPIO_PORT, BOARD_LED0_GPIO_PIN, 1u); /* led off. */ GPIO_WriteBit(BOARD_LED1_GPIO_PORT, BOARD_LED1_GPIO_PIN, 0u); /* led on. */ } else /* key is pressed. */ { GPIO_WriteBit(BOARD_LED0_GPIO_PORT, BOARD_LED0_GPIO_PIN, 0u); /* led on. */ GPIO_WriteBit(BOARD_LED1_GPIO_PORT, BOARD_LED1_GPIO_PIN, 1u); /* led off. */ } }}/* EOF. */
代码3 /* * Copyright 2021 MindMotion Microelectronics Co., Ltd. * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */#include <stdint.h>#include <stdio.h>#include "board_init.h"/* * Definitions. *//* * Variables. *//* * Declerations. */void app_adc_init(void);uint32_t app_adc_run_conv(void);/* * Functions. */int main(void){ BOARD_Init(); printf("adc_basic example.\r\n"); app_adc_init(); printf("press any key to start the conversion.\r\n"); ADC_DoAutoCalib(BOARD_ADC_PORT); /* get calibration factors using hardware self-calibration. */ while (1) { /* type any key into the terminal to trigger the conversion. */ getchar(); /* satrt the one channel conversion. */ printf("app_adc_run_conv() start...\r\n"); printf("adc_val= %u\r\n", (unsigned)app_adc_run_conv()); printf("app_adc_run_conv() done.\r\n\r\n"); }}/* setup the adc converter, and prepare a regular conversion sequence with only one channel in. */void app_adc_init(void){ /* pins and clock are already in the pin_init.c and clock_init.c. */ /* setup the converter. */ ADC_Init_Type adc_init; adc_init.Resolution = ADC_Resolution_Alt0; adc_init.ConvMode = ADC_ConvMode_SingleSlot; adc_init.Align = ADC_Align_Right; adc_init.SingleDiffMode = ADC_SingleDiffConvMode_SingleEnd; /* single-ended channel conversion mode. */ adc_init.SingleVolt = ADC_SingleConvVref_Internal; /* internal reference voltage as the reference voltage for single-ended conversion. */ ADC_Init(BOARD_ADC_PORT, &adc_init); ADC_Enable(BOARD_ADC_PORT, true); /* power on the converter. */ /* setup the sequence, a fixed channel 0 conversion. */ ADC_EnableSeqSlotFixed(BOARD_ADC_PORT, BOARD_ADC_SLOT_MASK, ADC_SeqFixedDirection_LowFirst); /* set channel sample time. */ ADC_SetChnSampleTime(BOARD_ADC_PORT, BOARD_ADC_CHN_NUM, ADC_SampleTime_Alt7);}/* software tirgger the adc converter and start the sequence conversion. */uint32_t app_adc_run_conv(void){ uint32_t data; uint32_t flags; uint32_t adc_channel; /* keep the actual hardware conversion channel number. */ /* software tirgger the conversion. */ ADC_DoSwTrigger(BOARD_ADC_PORT, true); /* wait while the conversion is ongoing. */ while( 0u == (ADC_GetStatus(BOARD_ADC_PORT) & ADC_STATUS_CONV_SEQ_DONE) ) {} ADC_ClearStatus(BOARD_ADC_PORT, ADC_STATUS_CONV_SEQ_DONE); data = ADC_GetChnConvResult(BOARD_ADC_PORT, &adc_channel, &flags); if (0u == (flags & ADC_CONV_RESULT_FLAG_VALID) ) { data = 0u; /* the data is unavailable when the VALID flag is not on. */ } return data;}/* EOF. */
效果1:
效果2:
效果3:
转https://zhuanlan.zhihu.com/p/559426919
|