【前言】
首先感谢极术社区、灵动微电子给予我这次试用灵动Mini-F5265-OB开发板的机会。今天收到了开发板,熟悉了一下他的资料,并完成了按键与串口的驱动,现在分享如下:
【资料收集与获取】
在极术社区的页面:https://aijishu.com/a/1060000...,有开发板的所有资料的下载。我下载到资料后仔细阅读了他的开发板原理图、产品手册、用户手册。
然后下载了例程。例程中有丰富的示例,所有的外设都是有例程的,通过阅读,结事用户手册,可以快速的掌握这款MCU的外设的使用。
再有就是需要到官方下载mdk的pack包:
https://www.mindmotion.com.cn...
下载下来后,打开压缩包,安装F5260的pack包,这样keil才能正解的识别target.
【按键与串口打印示例体验】
打开示例中的LibSamples_MM32F5260_V0.10.2\Samples\LibSamples\GPIO\GPIO_KEY_Input
。这个示例是基于两个按键的示例,中间还有串口打印的驱动,根据原理图,原来的驱动是uart2的,我们根据需要修改到虚拟串口中。
根据原理图,VCP串口是接到PC10上的:
因此我修改的初始化的代码如下:
void PLATFORM_InitConsole(uint32_t Baudrate)
{
GPIO_InitTypeDef GPIO_InitStruct;
UART_InitTypeDef UART_InitStruct;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART3, ENABLE);
UART_StructInit(&UART_InitStruct);
UART_InitStruct.BaudRate = Baudrate;
UART_InitStruct.WordLength = UART_WordLength_8b;
UART_InitStruct.StopBits = UART_StopBits_1;
UART_InitStruct.Parity = UART_Parity_No;
UART_InitStruct.HWFlowControl = UART_HWFlowControl_None;
UART_InitStruct.Mode = UART_Mode_Tx;
UART_Init(UART3, &UART_InitStruct);
UART_Cmd(UART3, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
GPIO_PinAFConfig(GPIOC, GPIO_PinSource10, GPIO_AF_7);
GPIO_StructInit(&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_High;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOC, &GPIO_InitStruct);
}`
同时还需要修改一下重定向的串口号:
`/***********************************************************************************************************************
* @brief redefine fputc function
* @note for printf
* @param ch
* @param f
* @retval ch
*********************************************************************************************************************/
int fputc(int ch, FILE *f)
{
UART_SendData(UART3, (uint8_t)ch);
while (RESET == UART_GetFlagStatus(UART3, UART_FLAG_TXC))
{
}
return (ch);
}
到此串口的驱动就完成了。
【按键驱动】
按键驱动,官方写得非常好,并且使用了状态机的驱动。
【下载验证】
按下开发板上的两个按键,可以实时控制灯的亮灭,同时串口打印出按键的状态。
【总结】
做为第一次接触灵动Mini-F5265-OB开发板,经过短时间的学习,就可以实现对两个外设进行操作,说明这款MCU的文档与示例写得非常之好,使得工程师可以快速掌握他的外设,把主要精力入在业务实现之上。