前几天申请到了一块灵动微电子的MM32F0121C6P的开发板,因为最近考试一直没发测评,今天来写一下,主要包括就是板子的一些参数,使用和如何烧录程序进去,本次烧录和oled屏幕的stm32的驱动程序的移植.
可以在灵动微电子的官网(https://www.mindmotion.com.cn/products/mm32mcu/mainstream_line/mm32f_mainstream/)获得MM32的keil的驱动pack还有官方给的lib例程,以及MM32的用户手册和使用手册.
MM32F0120 微控制器搭载 Arm® Cortex®-M0 内核,最高工作频率可达 72MHz。内置 64KB Flash 存储器、3KB Data Flash 存储器和 8KB SRAM,并集成了丰富的 I/O 端口和 外设模块。本产品包含 1 个 12 位的 ADC、1 个比较器、1 个 CSM 通用串行模块、1 个 16 位高级定时器、1 个 16 位通用定时器、3 个 16 位基本定时器和 1 个实时时钟(RTC)模 块,还包含标准的通信接口:3 个 USART 接口、1 个 SPI 接口和 1 个 I2C 接口。 本产品系列工作电压为 2.2V ~ 5.5V,工作温度范围(环境温度)包括 -40°C ~ 85°C 的工 业型和 -40°C ~ 105°C 的拓展工业型。内置多种省电工作模式保证低功耗应用的要求。
主要特点
内核与系统
– 32-bit Arm® Cortex®-M0
– 工作频率可达 72MHz
– 32 位硬件除法器
存储器
– 多达 64KB Flash 存储器
– 多达 3KB Data Flash 存储器
– 多达 8KB SRAM
– Boot loader 支持片内 Flash 在线系统编程(ISP)
时钟、复位和电源管理
– 2.2V ~ 5.5V 供电
– 上电/断电复位(POR/PDR)、可编程电压监测器(PVD)
– 内嵌 144MHz HSI 高速振荡器
– 内嵌 30KHz LSI 低速振荡器DS_MM32F0120_Ver0.91
总览
– 支持最高 24MHz 外部时钟输入
– 外部 32.768KHz 低速振荡器
低功耗
– 多种低功耗模式,包括:睡眠(Sleep)、停机(Stop)和深度停机(Deep Stop)
· 1 个 3 通道 DMA 控制器,支持外设类型包括定时器、ADC、USART、I2C、SPI 和 CSM
· 7 个定时器
– 1 个 16 位 4 通道高级控制定时器(TIM1),可输出 4 路 PWM 或 3 路互补 PWM
对,支持中心或边沿对齐 PWM 模式,支持硬件死区插入和故障刹车,可运行在最
高 144MHz 时钟下,通道 1~3 支持 PWM 移相输出模式
– 1 个 16 位 4 通道通用定时器(TIM3),可输出 4 路 PWM 或捕获 4 路输入信号,
支持霍尔传感器和正交编码器的解码,支持 IR 控制解码
– 3 个 16 位基本定时器 (TIM14 / TIM16 / TIM17),可输出 1 路 PWM 或捕获 1 路
输入信号。TIM16 和 TIM17 有 1 组互补输出,支持硬件死区插入和故障刹车
– 1 个配置了独立时钟的硬件看门狗定时器(IWDG)
– 1 个 Systick 定时器:24 位自减型计数器
· 1 个实时时钟(RTC)模块
多达 42 个快速 I/O 端口
– 所有 I/O 口可以映像到 16 个外部中断
– 所有端口均可输入输出电压不高于 VDD 的信号
多达 5 个通信接口
– 3 个 USART 接口,其中 USART1 和 USART2 支持三线 SPI 模式
– 1 个 I2C 接口
– 1 个 SPI 接口
· 1 个 12 位模数转换器(ADC),支持最快 1μs 转换时间(1MSPS 采样率),配置 12
个外部通道和 1 个可采集内置参考电压的内部通道
· 1 个高速模拟比较器,内置 4 位电压参考
· 1 个通用串行模块(CSM),可接收和发送 1.2V 数字信号
· CRC 计算单元
· 96 位芯片唯一 ID(UID)
调试模式
– 串行调试接口(SWD) 接口
工作温度范围包括 -40°C ~ 85°C 工业型和 -40°C ~ 105°C 的拓展工业型
工作电压范围为 2.2V ~ 5.5V
可以看到,相对于我们常用的stm32的c8t6,这块开发板给到的定时器数量,工作频率都是属于量大管饱的那种,性能相对优越,同时也使得资料比较多的stm32的程序案例更加容易移植进来,极大的方便了开发和学习,同时也自带了一个cmsis-dap烧录,可以直接使用typec进行烧录程序,方便我们的调试.
接下来是如何使用官方的例程,以及安装keil的驱动.
首先我们在官网上下载到这两个文件
解压出来文件后,我们选择MindMotion.MM32L0xx_DFP.1.1.3.pack双击进行安装到我们keil的pack里面,然后我们选择一个官方例程进行打开,我们选择一个gpio控制电平翻转的经典例程
打开后点开我们熟悉的魔术棒工具,将编译器版本设置成版本6的因为MM32不支持版本5的编译器,会直接报错的,debug方式选择cmsisdap即可,然后插入我们的数据线(如果出现识别不到设备的情况,换一根数据线试试,我的自带的数据线好像是坏的,忙活了半个小时也没烧录进去,给我气急了直接拿手机数据线插上去就好了,而且好像是板载程序的问题吧,用数据线插入之后直接被识别成U盘设备了,如果是官方设计的话可以注意一下这个点,总感觉会出问题,因为之前用的msp和stm的一些国外厂商的板子都没出现过这种情况,碎碎念~~~~),然后编译下载一气呵成,皆可以在板子上观察到led电平的翻转现象了
下面是控制点灯程序的源码,还是能看出stm32标准库的影子的,这样的话也方便我们程序的移植.
void GPIO_Configure(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
GPIO_StructInit(&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_14 | GPIO_Pin_15 ;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_High;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStruct);
GPIO_WriteBit(GPIOB, GPIO_Pin_14 | GPIO_Pin_15, Bit_SET);
}
/***********************************************************************************************************************
* @brief
* @note none
* @param none
* @retval none
*********************************************************************************************************************/
void GPIO_IO_Toggle(GPIO_TypeDef *GPIOn, uint16_t PINn)
{
if (Bit_RESET == GPIO_ReadOutputDataBit(GPIOn, PINn))
{
GPIO_SetBits(GPIOn, PINn);
}
else
{
GPIO_ResetBits(GPIOn, PINn);
}
}
oled屏幕驱动程序的移植源码放在下面了,把后缀改成zip格式就可以用了

