【MT32F006】MT32F006之串口

news2024/10/6 8:26:42

本文最后修改时间:2023年03月30日

一、本节简介

本文介绍如何使用MT32F006的串口。

二、实验平台

库版本:V1.0.0

编译软件:MDK5.37

硬件平台:MT32F006开发板(主芯片MT32F006)

仿真器:JLINK

三、版权声明

1)作者:甜甜的大香瓜

2)声明:喝水不忘挖井人,转载请注明出处。

3)纠错/业务合作:897503845@qq.com

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:        897503845@qq.com  

//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:        897503845@qq.com

//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:        897503845@qq.com

//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:        897503845@qq.com

//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:        897503845@qq.com  

//shop:         opengua.taobao.com

//changetime:   2022.12.29

//**********************************************************************

#ifndef _GUA_UART_H_

#define _GUA_UART_H_

/*********************宏定义************************/

#include <stdio.h>

/*********************宏定义************************/

//类型宏

#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();   

八、注意事项

暂无

九、实验结果

暂无

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/893619.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无涯教程-Perl - umask函数

描述 此函数为当前进程设置umask(创建文件和目录时应用的默认掩码)。 EXPR的值必须是八进制数。如果省略EXPR,则只需返回先前的值。 语法 以下是此函数的简单语法- umask EXPRumask返回值 此函数返回先前的umask值。 例 以下是显示其基本用法的示例代码- #!/usr/bin/pe…

Java学习笔记30——字节缓冲流

字节缓冲流 字节缓冲流缓冲输出流缓冲输入流 复制视频速度对比 字节缓冲流 缓冲输出流 BufferadOutputStream通过设置这样的输出流&#xff0c;应用程序可以向底层输出流写入字节&#xff0c;而不必为写入的每个细节导致底层系统的调用 构造方法 BufferadOutputStream(Outpu…

【Elsevier旗下】1区SCI,5天见刊!稳定检索36年

近日国自然即将发布&#xff0c;想必申请过国自然基金作者都知道&#xff0c;需要有研究基础&#xff0c;说白了就是需要有文章支持。那么稿子写好了&#xff0c;选择一本靠谱优质期刊也是一门学问。 以下2本Elsevier 旗下审稿快刊&#xff0c;各项指标优秀&#xff0c;实为评…

QT connect使用简单介绍

如图&#xff0c;首先 connect是线程安全的。其次它有很多重载&#xff0c;当然最重要的还是QT4连接和QT5连接的区别&#xff0c;这个函数重载表示connect函数也是支持lambda函数的。 connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)connec…

Redis——set类型详解

概要 Set&#xff08;集合&#xff09;&#xff0c;将一些有关联的数据放到一起&#xff0c;集合中的元素是无序的&#xff0c;并且集合中的元素是不能重复的 之前介绍的list就是有序的&#xff0c;对于列表来说[1, 2, 3] 和 [2, 1, 3]是两个不同的列表&#xff0c;而对于集合…

阿里Canal学习笔记

github地址 canal 使用IDEA打开&#xff0c;注意国内加载慢的问题&#xff0c;解决方式如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi"http://w…

CAS:2143933-81-5,ICG-Maleimide,吲哚菁绿马来酰亚胺,脂溶性染料试剂

今日文章关键词&#xff1a;脂溶性染料试剂,吲哚菁绿马来酰亚胺&#xff0c;CAS&#xff1a;2143933-81-5 试剂基团反应特点&#xff1a;ICG-maleimide的马来酰 亚胺可以和蛋白、多肽、小分子或抗体上的SH巯基反应连接。ICG染料的马来酰亚胺提供了开发共轭物的机会。Maleimide…

Python入门【原生字符串、边界字符、search函数、re模块中其他常用的函数 、贪婪模式和非贪婪模式、择一匹配(|)的使用、分组】(三十)

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱敲代码的小王&#xff0c;CSDN博客博主,Python小白 &#x1f4d5;系列专栏&#xff1a;python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 &#x1f4e7;如果文章知识点有错误…

ZooKeeper的应用场景(分布式锁、分布式队列)

7 分布式锁 分布式锁是控制分布式系统之间同步访问共享资源的一种方式。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源&#xff0c;那么访问这些资源的时候&#xff0c;往往需要通过一些互斥手段来防止彼此之间的干扰&#xff0c;以保证一致性&#xff0c;…

RuoYi项目下载及配置启动

一. 前置要求 这里假设你已经安装并配置了JDK1.8,Node,Git,IDEA,vscode,MySQL,navicat 16,Redis,RDM环境,如果没有下载安转可以参考我的博客找到对应的软件下载安装即可 二.下载源码 官网地址 方式一:直接下载ZIP压缩包 方式二:利用Git下载源码 点击复制之后,在需要下载代码…

华为昇腾助力大模型,算力国产化时代已来

去年世界人工智能大会&#xff08;WAIC 2022&#xff09;上&#xff0c;只有屈指可数的几家大厂推出大模型&#xff0c;但在科技部新一代人工智能发展研究中心5月底发布的《中国人工智能大模型地图研究报告》显示&#xff0c;我国10亿参数规模以上的大模型已发布79个&#xff0…

Do You Like Interactive Problems?

Problem - 7386 题目大意&#xff1a;给出一整数n&#xff0c;有一个隐藏的在1~n范围内的数x&#xff0c;每次随机询问一个y&#xff0c;会得知x<y,x>y,或xy&#xff0c;当可能的x唯一确定时停止询问&#xff0c;问期望的询问次数是多少 1<n<1e9 思路&#xff1…

AMEYA360邀您参加EESA第二届中国国际储能展览会暨第十届国际大会

2023年8月30日-9月1日&#xff0c;由EESA储能领跑者联盟主办的第二届中国国际储能展览会将重磅亮相苏州国际博览中心。作为目前中国乃至整个亚洲区最聚焦的储能展览会&#xff0c;本次展览会的规模高达10万平方米&#xff0c;来自全国各地超过1000多家储能核心企业将共襄盛举&a…

揭秘!体育比赛是如何快人一步购票的

最近&#xff0c;各类体育赛事正如火如荼的进行中&#xff0c;作为资深体育迷&#xff0c;看着赛场上的英雄们正在为荣誉和胜利而拼搏&#xff0c;内心也跟着激情澎湃起来。 为了享受精彩纷呈的赛事&#xff0c;越来越多体育迷选择亲临现场&#xff0c;感受更真实的比赛氛围&a…

Java:ArrayList集合、LinkedList(链表)集合的底层原理及应用场景

ArrayList集合的底层原理及应用场景 LinkedList&#xff08;链表&#xff09;集合的底层原理及应用场景 单向链表 增加数据 删除数据 双向链表 LinkedList的应用场景之一:可以用来设计队列 入队 出队 LinkedList的应用场景之一:可以用来设计栈 压栈&#xff08;push),addFirst…

typeScript安装及TypeScript tsc 不是内部或外部命令,也不是可运行的程序或批处理文件解决办法

一、typeScript安装&#xff1a; 1、首先确定系统中已安装node, winr 输入cmd 打开命令行&#xff0c;得到版本号证明系统中已经安装node node -v //v18.17.0 2、使用npm 全局安装typeScript # 全局安装 TypeScript npm i -g typescript 二、检查是否安装成功ts #检查t…

pvt corner / rc corner

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f;拾陆楼知识星球入口 PVT wc&#xff1a;worst case slow&#xff0c;低电压&#xff0c;高温度&#xff0c;慢工艺 -> 一般情况下delay最大&#xff0c;setup 差。 wcl&#xff1a;worst case lo…

思维导图网页版哪个好用?6款高效的思维导图网页版工具盘点

思维导图是一种强大的可视化工具&#xff0c;可以帮助我们整理复杂的信息&#xff0c;提高工作和学习效率。使用在线思维导图工具可以让信息的梳理整合过程变得更加方便。下面&#xff0c;我们就来详细盘点一下6款非常好用而且容易上手的思维导图网页版工具&#xff01; …

去除UI切图边缘上多余的线条

最近接到UI切图&#xff0c;放进项目&#xff0c;显示边缘有多余线条&#xff0c;影响UI美观。开始以为切图没切好&#xff0c;实则不是。如图&#xff1a; ->解决&#xff1a; 将该图片资源WrapMode改为Clamp

SHP格式建筑数据转换为SketchUp模型插件分享

之前有给大家讲解过《如何使用3ds Max制作三维地形》&#xff0c;将GIS数据和传统的三维建模软件进行了结合&#xff0c;在很长一段时间内&#xff0c;一直有人问如何将水经微图中下载的建筑数据转换为SketchUp模型&#xff0c;这里给大家找到了一种解决方案&#xff0c;可以通…