一、UART概述

百度上UART的定义:通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。简单来说就是UART就是一种用于信号串行传输的总线。

UART参数的介绍这篇CSDN文章写的很详细:

时钟频率、波特率、波特因子关系详解_zuosifengli的专栏-CSDN博客_波特率和时钟频率的关系smartcard和串口复用, guardtime就是停止位。smartcard标准是3.57M,如果时钟因子(    波特率因子)为372,  则对应波特率为9600,  时钟因子=  CLK / 波特率etu =时钟因子/ CLK =  1/波特率, 即传输一个符号位(一个bit)的时间。  =======================https://blog.csdn.net/zuosifengli/article/details/48313423

从电路原理图上可以看出,UART1与PORTC引脚相连接。

二、初始化步骤:

UART初始化分为三步:

void UART1_Init()

{

// 配置对应端口的时钟

UART1_SIM_Init();

//将端口配置为UART使用

UART1_PORT_Init();

//配置UART的各种参数

UART1_Config(10500,9600);

}

三、初始化详解

1、配置管脚的时钟

void UART1_SIM_Init(void)

{

SIM_SCGC4 |= SIM_SCGC4_UART1_MASK;

SIM_SCGC5 |= SIM_SCGC5_PORTC_MASK;

}

step1.1:使能UART的时钟

SIM_SCGC4 |= SIM_SCGC4_UART1_MASK;

step1.2: 使能PORTC管脚的时钟

 2、配置PORTC为芯片专用

PORTC_PCR3 = PORT_PCR_MUX(0x3);

PORTC_PCR4 = PORT_PCR_MUX(0x3);

3、配置UART参数

UART1_Config(10500,9600);

系统时钟频率为10500,波特率为9600

3.1 配置UART控制寄存器2,将UART的发送和接受使能

UART1_C2 &= ~ (UART_C2_TE_MASK| UART_C2_RE_MASK);

3.2 配置UART控制寄存器1,配置奇偶校验、环回等参数

UART1_C1 = 0x00;

控制寄存器1值全部配置为0.未使能环回、未打开奇偶校验等。

 3.3 配置时钟频率和波特率

1)//系统时钟的单位为K,所以要乘以1000;因为采样都是采用过采样的方式来解决采用抖动的问题,过采样16倍,所以要除以16。

/* Calculate baud settings */

sbr = (unsigned short)((sysclk*1000)/(baud * 16));

2)配置波特率要配置2个寄存器,总共13bit,BDH(5bit)和BDL(8bit)。sbr的13bit的值,取高5bit配置到BDH,取低8bit配置到BDL。

/* Save off the current value of the uartx_BDH except for the SBR field */

temp = UART1_BDH & (~(0x1F));

UART1_BDH = temp |  (((sbr & 0x1F00) >> 8));

UART1_BDL = (unsigned char)(sbr & UART_BDL_SBR_MASK);

 3.4 打开UART的发送和接收

UART1_C2 |= UART_C2_TE_MASK| UART_C2_RE_MASK|UART_C2_RIE_MASK;

9、ARM嵌入式系统:周期中断定时器PIT初始化_cyf31的专栏-CSDN博客

8、ARM嵌入式系统:UART初始化相关推荐

  1. 7、ARM嵌入式系统:LCD/数码管/OLED初始化

    一.LCD/数码管模块在板子上的位置 LCD和数码管在板子上都分别有一个插槽. 二.LCD/数码管初始化代码 //SMG init void SMG_Init() { /* PORTB and POR ...

  2. ARM嵌入式系统malloc的实现(C源码)

    在ARM嵌入式系统实现malloc内存分配机制. 在ARM cpu上验证通过. ps:也可在pc ubuntu linux进行验证 #include "include/lib_replace ...

  3. 网络上所谓的《ARM嵌入式系统入门最好的文章》

    一 首先说说ARM的发展 可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位. 广义的嵌入式无非几种:传统的什么51.AVR.PIC称做嵌入式微控制器:ARM是嵌入式微处理器 ...

  4. [ARM嵌入式系统开发]第一章之嵌入式系统的软硬件

    本章的最后,通过描述ARM为核心的嵌入式系统,来介绍了嵌入式系统的软件和硬件构成和结构.这里根据这部分的介绍以及其他的文章,描述下通用的嵌入式系统的软件和硬件.     首先来说下硬件,书中说,包含有 ...

  5. 嵌入式:ARM嵌入式系统开发流程概述

    文章目录 嵌入式开发的具体过程 开发流程图 嵌入式软件开发环境 交叉开发环境 远程调试结构图 嵌入式应用软件开发的基本流程 软件模拟环境 目标板与评估板 嵌入式软件开发的可移植性和可重用性 嵌入式开发 ...

  6. 移植tcpdump到ARM嵌入式系统

    移植tcpdump到嵌入式系统 tcpdump和libpcap的下载链接:Home | TCPDUMP & LIBPCAP 百度网盘下载链接:https://pan.baidu.com/s/1 ...

  7. 10、ARM嵌入式系统:加速传感器MMA8451初始化

    一.加速传感器在板子上的位置 MMA8451加速传感器经常用于运动检测,实时方向检测,虚拟现实设备中的位置检测等,还比较常见. 二.加速传感器涉及的寄存器 主要涉及PTE24/PTE25管脚对应的寄存 ...

  8. 9、ARM嵌入式系统:周期中断定时器PIT初始化

    一.PIT是什么 PIT即Periodic interrupt timer,周期中断定时器,PIT模块是一组计时器,可用于引发中断和触发DMA信道.PIT主要功能是定时器产生DMA触发脉冲和定时器产生 ...

  9. [ARM嵌入式系统开发]第一章之Dhrystone

    在书的第一章开头部分,作者提到了"最成功的ARM内核之一ARM7TDMI,具有最高120 Dhrystone MIPS的性能.高的代码密度和低功耗等特性,使它成为移动嵌入式设备的最佳选择&q ...

最新文章

  1. 可以估计不确定性的神经网络:SDE-Net
  2. R语言ggplot2可视化NHANES数据集年龄和身高的关系并按照性别因子分析男性和女性的差异
  3. 微会动微信现场互动:2019年会展和活动产业的发展趋势
  4. 前端学习(2997):vue+element今日头条管理--编码规范说明
  5. 推荐开源代码2004/12/17
  6. Anaconda安装找不到的依赖包,以DBUtils包为例
  7. 卡尔曼滤波的理解、推导和应用
  8. 系统学习深度学习(三十三)--Prioritized Replay DQN
  9. 初识Hadoop入门介绍
  10. 网络安全中的恶意软件
  11. kuangbin 基础DP1
  12. 软件测试术语 - 需求跟踪矩阵
  13. IDEA 设置前进,后退快捷键
  14. 【详谈 Delta Lake】系列专题 之 客户用例( Customer Use Case)
  15. emoji 表情包全套手机端pc都支持
  16. 后端node-xlsx读取excel文件后时间格式的转换 - 利用xlsx自带方法
  17. 用算符优先法对算术表达式求值(六)
  18. Visual Studio “无可用源“ 问题
  19. Hypervisor定义、种类及产品介绍
  20. 蟠桃会之教育、投资与幸福生活

热门文章

  1. 脉冲宽度调制(SPWM)Simulink仿真教程
  2. Gee引擎配置微端后登录游戏黑屏怎么办?
  3. ECU安全访问系列_2(代码篇)
  4. Thunderbolt雷电接口
  5. python定义整数_Python | 程序定义一个整数值并打印
  6. 从静态检查工具谈代码编程规范
  7. android 图片底部波浪线,如何添加文字下面的红色波浪线在Android的TextView的
  8. 英语口语六级模拟测试软件,2016年11月英语六级考试口语试题模拟
  9. 文件搜索工具(Python实现)
  10. 计算机管理 位置不可用,Win10系统文件打不开提示位置不可用拒绝访问如何解决...