基于灵动微 MM32F0160 开发板的基础应用介绍

一、产品描述

灵动微 MM32F0160 搭载 Arm® Cortex®-M0 内核,最高工作频率可达 72MHz。内置 128KB Flash,16KB SRAM,1 个 12 位 ADC、2 个比较器,1 个 16 位高级定时器、1 个 16 位和 1 个 32 位通用定时器、3 个 16 位基本定时器、1 个低功耗定时器,1 个 I2C 接口、 1 个 I3C 从机接口,2 个 SPI 或 I2S 接口、 4 个 UART 接口、1 个低功耗 UART,1 个 USB接口,1 个 FlexCAN-FD 接口。

二、资料下载

我们可以在灵动微官网根据 MCU 型号找到相关资料文档并进行下载。

官网:上海灵动微电子股份有限公司 (mindmotion.com.cn)

通常我们需要下载的资料有:

  • 产品手册
  • 用户手册
  • 原理图
  • 库函数与例程

三、基础应用开发

这里我们的开发环境是基于 KEIL 进行开发,首先我们需要找到库函数与例程中的 MindMotion.MM32F0160_DFP_0.0.3.pack进行安装,安装完成后我们打开一个 SDK 例程。

工程的基本框架包括了有启动文件、应用层文件、库文件。

接下来我们介绍一下 GPIO 的控制,首先需要对GPIO 进行初始化操作:

RCC_GPIO_ClockCmd(GPIOC, ENABLE); // GPIO 的时钟使能
GPIO_StructInit(&GPIO_InitStruct); // GPIO 默认初始化配置
GPIO_InitStruct.GPIO_Pin = GPIO_pin_9; //GPIO_port
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //GPIO 的通讯速率
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; //GPIO 的输入输出方式
GPIO_Init(GPIOC, &GPIO_InitStruct); //GPIO 初始化

然后根据 SDK 中给出的接口函数,对 IO 口进行读写操作

读取 GPIO 的电平状态:

bool GPIO_ReadInputDataBit(GPIO_TypeDef* gpio, uint16_t pin)

{
return ((gpio->IDR & pin)) ? Bit_SET : Bit_RESET;
} //读取 GPIO 接口函数
ReadInputDataBit(GPIOC, GPIO_Pin_12); //读取 GPIOC_12 输入的电平状态

设置 GPIO 的电平状态:

void GPIO_WriteBit(GPIO_TypeDef* gpio, uint16_t pin, BitAction value)
{
(value) ? (gpio->BSRR = pin) : (gpio->BRR = pin);
} //设置 GPIO 接口函数
GPIO_WriteBit(GPIOC, GPIO_pin_9, 1); //设置 GPIOC_9 输出为高电平
还有一个常用到的是调试串口,初始化配置如下:
void CONSOLE_Init(uint32_t baudrate)
{
//使能 GPIO 时钟
RCC_GPIO_ClockCmd(CONSOLE_UART_TX_PORT, ENABLE);
RCC_GPIO_ClockCmd(CONSOLE_UART_RX_PORT,ENABLE);

//GPIO 复用串口配置
GPIO_PinAFConfig(CONSOLE_UART_TX_PORT,CONSOLE_UART_TX_PINSOURCE,CONSOLE_UART_TX_AF);
GPIO_PinAFConfig(CONSOLE_UART_RX_PORT,CONSOLE_UART_RX_PINSOURCE,CONSOLE_UART_RX_AF);

//使能 UART2 时钟
RCC_UART_ClockCmd(CONSOLE_UART, ENABLE);

//UART 相关配置
UART_StructInit(&UART_InitStruct);
UART_InitStruct.UART_BaudRate = baudrate; //串口波特率设置
UART_InitStruct.UART_Mode=UART_Mode_Rx|UART_Mode_Tx;//receive and sent mode
UART_Init(CONSOLE_UART,&UART_InitStruct); //初始化 uart
UART_Cmd(CONSOLE_UART,ENABLE); //使能 uart

//UART2_TX 初始化
GPIO_StructInit(&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = CONSOLE_UART_TX_PIN;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(CONSOLE_UART_TX_PORT, &GPIO_InitStruct);

//UART2_RX 初始化
GPIO_InitStruct.GPIO_Pin = CONSOLE_UART_RX_PIN;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(CONSOLE_UART_RX_PORT, &GPIO_InitStruct);
}

 配置完成之后,就可使用串口 debug 了。

int main(void)
{
CONSOLE_Init(115200);

printf("Hello World\r\n");

while(1)
{

}
}

以上就是关于 MM32F0160 芯片入门学习及其 GPIO 、UART 的实际应用代码及介绍,希望能对大家理解和应用这款芯片有所帮助,还有更多关于这款芯片的外设应用相关,我们后续再推,谢谢大家的关注。

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论