本文最后修改时间:2023年03月30日
一、本节简介
本文介绍如何使用MT32F006的串口。
二、实验平台
库版本:V1.0.0
编译软件:MDK5.37
硬件平台:MT32F006开发板(主芯片MT32F006)
仿真器:JLINK
三、版权声明
1)作者:甜甜的大香瓜
2)声明:喝水不忘挖井人,转载请注明出处。
3)纠错/业务合作:[email protected]
4)香瓜嵌入式之STM8/STM32群:164311667
5)本文出处:原创连载资料《简单粗暴学MT32F006》
6)完整开源资料下载地址(电脑端打开):opengua.taobao.com
四、实验前提
1、在进行本文步骤前,请先阅读以下章节:
1)《简单粗暴学MT32F006》的“第一章和第二章”章节。
2、在进行本文步骤前,请先实现以下章节:
暂无
五、基础知识
暂无
六、硬件原理
MT32F006的串口有两组,分别是
1、PIO1_7(UART0_TX)和PIO2_0(UART0_RX)
2、PIO0_1(UART0_TX)和PIO0_2(UART0_RX)(本文使用这一组)
七、实验步骤
1、编写并添加驱动
1)编写驱动GUA_UART.c(存放在“……\Projects\MT006_StdPeriph_Templates\GUA”)
//********************************************************************** //name: GUA_UART.c //introduce: 串口驱动 //author: 甜甜的大香瓜 //email: [email protected] //shop: opengua.taobao.com //changetime: 2022.12.29 //********************************************************************** #include "mt006.h" #include "GUA_UART.h" /*********************宏定义************************/ #define GUA_UART0_CLOCK_DIV 1 //********************************************************************** //name: fputc //introduce: 将printf函数与串口对应起来 //parameter: none //return: none //author: 甜甜的大香瓜 //email: [email protected] //shop: opengua.taobao.com //changetime: 2022.12.29 //********************************************************************** int fputc(int ch, FILE *f) { /* Place your implementation of fputc here */ /* e.g. write a character to the UART */ UART_SendData((uint8_t) ch); /* Loop until the end of transmission */ while (UART_GetFlagStatus(UART_FLAG_TXFE) == RESET) {} return ch; } //********************************************************************** //name: GUA_UART_Send //introduce: 串口发送 //parameter: nGUA_Data:串口发送数据 //return: none //author: 甜甜的大香瓜 //email: [email protected] //shop: opengua.taobao.com //changetime: 2022.12.29 //********************************************************************** void GUA_UART_Send(GUA_U8 nGUA_Data) { UART_SendData(nGUA_Data); } //********************************************************************** //name: GUA_UART_Init //introduce: 串口初始化 //parameter: none //return: none //author: 甜甜的大香瓜 //email: [email protected] //shop: opengua.taobao.com //changetime: 2022.12.29 //********************************************************************** void GUA_UART_Init(void) { UART_InitTypeDef UART_InitStructure; GPIO_InitTypeDef GPIO_InitStructure;
//uart clk RCC_APBPeriphClockCmd(RCC_AHBCLKCTRL_UART0, ENABLE); RCC_UARTCLKSel(RCC_UARTCLK_SOURCE_12M_IRC); RCC_SETCLKDivider(RCC_CLOCKFREQ_UART0CLK, GUA_UART0_CLOCK_DIV); //PIO01 Rx、PIO02 Tx,注意不能同时初始化多个IO GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_Level_2; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_1; //复用功能1,也就是串口 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIO0, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_Init(GPIO0, &GPIO_InitStructure); //uart init UART_DeInit(); UART_StructInit(&UART_InitStructure); //115200 UART_Init(&UART_InitStructure); UART_Cmd(ENABLE); } |
2)编写驱动头文件GUA_UART.h(存放在“……\Projects\MT006_StdPeriph_Templates\GUA”)
//********************************************************************** //name: GUA_UART.h //introduce: 串口驱动的头文件 //author: 甜甜的大香瓜 //email: [email protected] //shop: opengua.taobao.com //changetime: 2022.12.29 //********************************************************************** #ifndef _GUA_UART_H_ #define _GUA_UART_H_ /*********************宏定义************************/ #include /*********************宏定义************************/ //类型宏 #ifndef GUA_C typedef char GUA_C; #endif #ifndef GUA_U8 typedef unsigned char GUA_U8; #endif #ifndef GUA_8 typedef signed char GUA_8; #endif #ifndef GUA_U16 typedef unsigned short GUA_U16; #endif #ifndef GUA_16 typedef signed short GUA_16; #endif #ifndef GUA_U32 typedef unsigned long GUA_U32; #endif #ifndef GUA_32 typedef signed long GUA_32; #endif /*********************外部函数声明************************/ extern int fputc(int ch, FILE *f); extern void GUA_UART_Send(GUA_U8 nGUA_Data); extern void GUA_UART_Init(void); #endif |
3)工程中添加驱动文件
4)在MDK设置中添加驱动源文件路径
2、添加库的驱动
1)添加库的驱动文件(为了方便一次性都添加进来,已有则不用添加)
2)添加库的驱动头文件(mt006_conf.h 中)(为了方便一次性都添加进来,已有则不用添加)
3、在应用层中调用
1)添加驱动头文件(main.c中)
#include "GUA_UART.h" |
2)添加驱动初始化代码(main.c的main函数中)
//串口初始化 GUA_UART_Init(); |
八、注意事项
暂无
九、实验结果
暂无