本帖最后由 Dl2k 于 2023-10-26 03:52 编辑

那天正在上班摸鱼,突然微信跳了好几下,打开一看。
image (1).png
已经过了好久,没想到突然“中奖了”。好吧,期待ING。
第二天,快递就到了。打开包装就看到了开发板本体。
image (2).png
889f4d4c90c98b70487c5e89ccf7e3c.jpg
看着做工开始不错的。简单通了一下电。默认应该是有程序的。
dd18333e74c1813055fa89ea9947722.jpg
三个LED灯轮流闪烁,收到的时候还是在上班,不能摸鱼,只能改天再试一下了。

次日,我下载了官方给的全部资料。
MM32G0001 系列产品说明手册
DS: https://www.mindmotion.com.cn/download/products/DS_MM32G0001_SC.pdf
UM: https://www.mindmotion.com.cn/download/products/UM_MM32G0001_SC.pdf
IDE support pack
Mini-G0001 开发板用户指南:
https://www.mindmotion.com.cn/download/support/UG_Mini-G0001_SC.pdf
函数库与例程下载地址:
https://www.mindmotion.com.cn/support/development_tools/evaluation_boards/miniboard/mm32g0001a1t/
板载主控:MM32G0001A1T
- 32bit Arm Cortex-M0
- 16KB Flash, 2KB SRAM
- TSSOP20
开始仔细阅读,因为是第一次使用Cortex-M0的MCU,所以一切都透着新鲜。
我平时主要做基于STM32F103系列的芯片开发,STM32和GD32为主,使用KEIL来开发。
结果我试图打开官方提供的KEIL项目时,发现还是有很多需要安装的。
在 灵动的官网 下载 KEIL Pack 和 J-LINK Pack
KEIL Pack:  https://www.mindmotion.com.cn/support/software/keil_pack/
J-LINK Pack: https://www.mindmotion.com.cn/support/software/jlink_pack/
安装了2个pack后,终于可以打开KEIL项目了,有许多里程项目,可以自行编译并且烧录。
提一下,烧录这个事情如果遇到JFLASH如果可以烧录,但是要在KEIL里面却不不能烧录和调试,需要把J-LINK安装目录copy到KEIL对应的目录。
C:\Program Files (x86)\SEGGER\JLink\Devices\MindMotion   ->   C:\Keil_v5\ARM\Segger

image.png
至此项目开发的准备工作就完成了。
我也要正式来检视一下这个MM32G0001芯片和这块开发板了。
MM32G0001框图.jpg
MM32G0001
产品描述
使用高性能的 Arm® Cortex-M0 为内核的 32 位微控制器,最高工作频率可达 48MHz,内置高速存储器,丰富的增强型 I/O 端口和多种外设。
- 16KB Flash,2KB SRAM
- 1 个 12 位 ADC
- 1 个 16 位高级定时器、1 个 16 位通用定时器、1 个 16 位基本定时器
- 2 个 USART 接口、1 个 SPI 接口和 1 个 I2C 接口
- 工作电压为 2.0V - 5.5V
- 工作温度范围(环境温度)包括 -40℃ - 85℃ 工业级和 -40℃ - 105℃ 扩展工业级
- 提供 TSSOP20、QFN20 和 SOP8 封装
适合于多种应用场合:
- 节点控制
- 无线充电
- 电机控制
- 玩具
- 照明电路
- 应急消防设备
- 8/16 位 MCU 升级

Mini-G0001.png
MiniBoard (MM32G0001A1T)
板载主控:MM32G0001A1T
- 32bit Arm Cortex-M0
- 16KB Flash, 2KB SRAM
- TSSOP20
板载资源:
- 4 个用户 LED
- 4 个用户按键
- 3 个可调电位器
- PWM 蜂鸣器
- 8M SPI FLASH
- 2K EEPROM
板载接口:
- Micro-USB
- UART 连接器
- 20PIN SWD 调试接口
- MM32G0001A1T 全引脚拓展连接器
供电方式:
- Micro-USB


我计划做的目标项目,考虑到多任务的可能性,也顺便探究一下这个小MCU的性能可行性。
我决定先尝试移植FreeRTOS系统到项目里来。因为本人工作基本使用Keil,所以本例采用Keil来完成。
首先建立工程
image~.png
创建好项目结构
image (3).png
打开Keil的项目属性
image (4).png
编译器版本改成 Version 5,并选上Use MicroLIB
image (5).png
根据喜好修改下输出路径到Output目录,并且生成HEX文件
image (6).png
其他先不改,然后调试器改为JLink
image (7).png
接口改为SW
image (8).png
确保内存地址,烧录地址都正确,接着可以开始整理文件夹。
从官方的例程包里把CMSIS目录和MM32G0001目录copy过来
image (9).png
然后添加文件到自己建立的项目结构中
image (10).png
在添加main.c文件和mm32g0001_it.c到User目录里
image (11).png
添加符号USE_STDPERIPH_DRIVER,并先添加Include目录
image (12).png
image (13).png
至此一个基本的空项目已经完成了。
image (14).png
我们随便添加一点点代码进行一下功能测试,比如亮个灯。。
image (15).png
接下来开始移植FreeRTOS,把FreeRTOS  copy到相应的目录,我移植的是9.0的版本
image (16).png
并在项目中添加文件,FreeRTOS一级目录的6个文件,RVDS下面ARM_CM0下面的port.c,还有MemMang中的heap_4.c文件
image (17).png
然后我们开始修改下代码,先建立一个多任务的头文件
image (18).png
建立一个多任务的管理文件taskMgr.c,负责创建任务
image (19).png
创建两个任务,分别负责闪烁led和负责串口输出信息
image (20).png
image (21).png
然后修改一下main函数
image (22).png
最关键的来了,需要修改FreeRTOS的核心配置,在FreeRTOSConfig.h文件中
image (23).png
image (24).png
其中这几项是比较关键的
再修改一下mm32g0001_it.c中的中断函数,把SVC_Handler和PendSV_Handler删除掉,修改SysTick_Handler函数
image (25).png
最后再统一补充一下Include目录
image (26).png
这个程序就可以多任务运行了,一个负责闪灯,一个负责串口输出信息。这个例程纯粹是为了验证FreeRTOS可以运行,由于这个MCU的内存比较小,大家如果想做多任务的程序还是要多熟悉FreeRTOS的相关知识,包括使用队列来在不同任务中传递数据等知识。

MM32_Test.zip (710.5 KB, 下载次数: 0)
全部回复 0
暂无评论,快来抢沙发吧