灵动FTHR-G0001开发板是官方主推的入门级32位MCU,搭载Arm Cortex-M0内核,主频可达48MHz,性价比非常高,可作为8/16位MCU的升级需求,可适用于多种类型的应用场合。MCU制作采用稳定可靠的12寸晶圆工艺平台。
开发板的主要配置如下:

FTHR-G0001板载仿真器,采用Type-C接口,通用性强。仿真器即MM32LINK-OB V1.0,支持SWD通信,虚拟COM端口(VCP)。板子支持二进制文件的拖放闪存编程,支持Web USB网页服务。使用Type-C数据线与PC端相连接,板上的LED指示灯闪烁。
板子支持调试仿真,调试部分与核心主控部分是分离式设计,中间由小的过孔连接,如需使用该调试部分去烧录其它板子,可将板子掰断,单独使用烧录、调试。
本次使用该板子驱动一块0.96’OLED屏,由于笔者手里头OLED模块有限,使用了“Grove Beginner Kit for Arduino开发板”,该开发板的资源链接: https://www.seeedstudio.com/Grove-Beginner-Kit-for-Arduino-p-4549.html ,这里只用到OLED屏部分。

本次使用Keil开发,因此需要安装基于该MCU的pack支持包,“MindMotion.MM32G0001_DFP.0.9.0.pack”可通过灵动微官方网站( https://www.mindmotion.com.cn/support/software/keil_pack/ )获取,这里我们通过GPIO模拟IIC接口方式来驱动OLED屏。
硬件连接:
MM32G0001 Board Grove Beginner Kit for Arduino Board
PA5 ---------------------------- SCL
PA6 ---------------------------- SDA
3V3 ---------------------------- VCC
GND --------------------------- GND

部分参考代码:
主函数
int main(void)
{
uint8_t t;
PLATFORM_Init();
OLED_Init();
OLED_Clear();
t=' ';
while (1)
{
GPIO_LED_Toggle_Sample();
OLED_Clear();
OLED_ShowString(6,3,"FTHR-G0001",16);
OLED_ShowString(6,6,"2024-10-21",16);
PLATFORM_DelayMS(500);
OLED_Clear();
OLED_ShowString(16,3,"FTHR Board",16);
OLED_ShowChar(48,6,t,16);//显示ASCII字符
PLATFORM_DelayMS(50);
t++;
if(t>'~')t=' ';
OLED_ShowNum(103,6,t,3,16);//显示ASCII字符的码值
PLATFORM_DelayMS(1000);
}
}
OLED初始化函数
#define OLED_SCLK_Clr() GPIO_ResetBits(GPIOA,GPIO_Pin_5)//SCL
#define OLED_SCLK_Set() GPIO_SetBits(GPIOA,GPIO_Pin_5)
#define OLED_SDIN_Clr() GPIO_ResetBits(GPIOA,GPIO_Pin_6)//SDA
#define OLED_SDIN_Set() GPIO_SetBits(GPIOA,GPIO_Pin_6)
#define OLED_CMD 0 //写命令
#define OLED_DATA 1 //写数据
void OLED_Init(void)
{
GPIO_InitTypeDef configStruct;
/* enable the OLED GPIO clock */
RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);
/* configure OLED GPIO pin */
configStruct.GPIO_Pin = (GPIO_Pin_5 | GPIO_Pin_6);
configStruct.GPIO_Mode = GPIO_Mode_Out_PP;
configStruct.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOA, &configStruct);
GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_6);
PLATFORM_DelayMS(800);
OLED_WR_Byte(0xAE,OLED_CMD);//--display off
OLED_WR_Byte(0x00,OLED_CMD);//---set low column address
OLED_WR_Byte(0x10,OLED_CMD);//---set high column address
OLED_WR_Byte(0x40,OLED_CMD);//--set start line address
OLED_WR_Byte(0xB0,OLED_CMD);//--set page address
OLED_WR_Byte(0x81,OLED_CMD); // contract control
OLED_WR_Byte(0xFF,OLED_CMD);//--128
OLED_WR_Byte(0xA1,OLED_CMD);//set segment remap
OLED_WR_Byte(0xA6,OLED_CMD);//--normal / reverse
OLED_WR_Byte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64)
OLED_WR_Byte(0x3F,OLED_CMD);//--1/32 duty
OLED_WR_Byte(0xC8,OLED_CMD);//Com scan direction
OLED_WR_Byte(0xD3,OLED_CMD);//-set display offset
OLED_WR_Byte(0x00,OLED_CMD);
OLED_WR_Byte(0xD5,OLED_CMD);//set osc division
OLED_WR_Byte(0x80,OLED_CMD);
OLED_WR_Byte(0xD8,OLED_CMD);//set area color mode off
OLED_WR_Byte(0x05,OLED_CMD);
OLED_WR_Byte(0xD9,OLED_CMD);//Set Pre-Charge Period
OLED_WR_Byte(0xF1,OLED_CMD);
OLED_WR_Byte(0xDA,OLED_CMD);//set com pin configuartion
OLED_WR_Byte(0x12,OLED_CMD);
OLED_WR_Byte(0xDB,OLED_CMD);//set Vcomh
OLED_WR_Byte(0x30,OLED_CMD);
OLED_WR_Byte(0x8D,OLED_CMD);//set charge pump enable
OLED_WR_Byte(0x14,OLED_CMD);
OLED_WR_Byte(0xAF,OLED_CMD);//--turn on oled panel
}
LED闪灯部分
uint8_t num = 3;
void GPIO_Configure(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);
GPIO_StructInit(&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_11;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_WriteBit(GPIOA, GPIO_Pin_11, Bit_SET);
}
void GPIO_LED_Toggle_Sample(void)
{
GPIO_Configure();
num--;
if (num < 3)
{
GPIO_SetBits(GPIOA, GPIO_Pin_11);
PLATFORM_DelayMS(100);
GPIO_ResetBits(GPIOA, GPIO_Pin_11);
PLATFORM_DelayMS(100);
GPIO_SetBits(GPIOA, GPIO_Pin_11);
PLATFORM_DelayMS(100);
GPIO_ResetBits(GPIOA, GPIO_Pin_11);
PLATFORM_DelayMS(100);
GPIO_SetBits(GPIOA, GPIO_Pin_11);
PLATFORM_DelayMS(2000);
}
if(num == 0)
num = 3;
}
工程编译ok后,选择“CMSIS-DAP Debugger”调试器,并添加好下载算法。一路操作下来,非常顺利。



程序下载到开发板后,可以看到核心板上按钮旁边的LED灯会一定频率反复闪烁,犹如翱翔于空中客机上的信号指示灯,同时在OLED上显示ASCII码字符与对应的码值,效果显示如见BiliBili,网址: https://www.bilibili.com/video/BV1Ai1MYnE7a/
实验小结一下,该板卡虽然小,但用起来的确很容易上手,而且调试方便,性能稳定,是一款完全能平替8位或16位的MCU方案 。
