8、ARM嵌入式系统:UART初始化
一、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初始化相关推荐
- 7、ARM嵌入式系统:LCD/数码管/OLED初始化
一.LCD/数码管模块在板子上的位置 LCD和数码管在板子上都分别有一个插槽. 二.LCD/数码管初始化代码 //SMG init void SMG_Init() { /* PORTB and POR ...
- ARM嵌入式系统malloc的实现(C源码)
在ARM嵌入式系统实现malloc内存分配机制. 在ARM cpu上验证通过. ps:也可在pc ubuntu linux进行验证 #include "include/lib_replace ...
- 网络上所谓的《ARM嵌入式系统入门最好的文章》
一 首先说说ARM的发展 可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位. 广义的嵌入式无非几种:传统的什么51.AVR.PIC称做嵌入式微控制器:ARM是嵌入式微处理器 ...
- [ARM嵌入式系统开发]第一章之嵌入式系统的软硬件
本章的最后,通过描述ARM为核心的嵌入式系统,来介绍了嵌入式系统的软件和硬件构成和结构.这里根据这部分的介绍以及其他的文章,描述下通用的嵌入式系统的软件和硬件. 首先来说下硬件,书中说,包含有 ...
- 嵌入式:ARM嵌入式系统开发流程概述
文章目录 嵌入式开发的具体过程 开发流程图 嵌入式软件开发环境 交叉开发环境 远程调试结构图 嵌入式应用软件开发的基本流程 软件模拟环境 目标板与评估板 嵌入式软件开发的可移植性和可重用性 嵌入式开发 ...
- 移植tcpdump到ARM嵌入式系统
移植tcpdump到嵌入式系统 tcpdump和libpcap的下载链接:Home | TCPDUMP & LIBPCAP 百度网盘下载链接:https://pan.baidu.com/s/1 ...
- 10、ARM嵌入式系统:加速传感器MMA8451初始化
一.加速传感器在板子上的位置 MMA8451加速传感器经常用于运动检测,实时方向检测,虚拟现实设备中的位置检测等,还比较常见. 二.加速传感器涉及的寄存器 主要涉及PTE24/PTE25管脚对应的寄存 ...
- 9、ARM嵌入式系统:周期中断定时器PIT初始化
一.PIT是什么 PIT即Periodic interrupt timer,周期中断定时器,PIT模块是一组计时器,可用于引发中断和触发DMA信道.PIT主要功能是定时器产生DMA触发脉冲和定时器产生 ...
- [ARM嵌入式系统开发]第一章之Dhrystone
在书的第一章开头部分,作者提到了"最成功的ARM内核之一ARM7TDMI,具有最高120 Dhrystone MIPS的性能.高的代码密度和低功耗等特性,使它成为移动嵌入式设备的最佳选择&q ...
最新文章
- 可以估计不确定性的神经网络:SDE-Net
- R语言ggplot2可视化NHANES数据集年龄和身高的关系并按照性别因子分析男性和女性的差异
- 微会动微信现场互动:2019年会展和活动产业的发展趋势
- 前端学习(2997):vue+element今日头条管理--编码规范说明
- 推荐开源代码2004/12/17
- Anaconda安装找不到的依赖包,以DBUtils包为例
- 卡尔曼滤波的理解、推导和应用
- 系统学习深度学习(三十三)--Prioritized Replay DQN
- 初识Hadoop入门介绍
- 网络安全中的恶意软件
- kuangbin 基础DP1
- 软件测试术语 - 需求跟踪矩阵
- IDEA 设置前进,后退快捷键
- 【详谈 Delta Lake】系列专题 之 客户用例( Customer Use Case)
- emoji 表情包全套手机端pc都支持
- 后端node-xlsx读取excel文件后时间格式的转换 - 利用xlsx自带方法
- 用算符优先法对算术表达式求值(六)
- Visual Studio “无可用源“ 问题
- Hypervisor定义、种类及产品介绍
- 蟠桃会之教育、投资与幸福生活
热门文章
- 脉冲宽度调制(SPWM)Simulink仿真教程
- Gee引擎配置微端后登录游戏黑屏怎么办?
- ECU安全访问系列_2(代码篇)
- Thunderbolt雷电接口
- python定义整数_Python | 程序定义一个整数值并打印
- 从静态检查工具谈代码编程规范
- android 图片底部波浪线,如何添加文字下面的红色波浪线在Android的TextView的
- 英语口语六级模拟测试软件,2016年11月英语六级考试口语试题模拟
- 文件搜索工具(Python实现)
- 计算机管理 位置不可用,Win10系统文件打不开提示位置不可用拒绝访问如何解决...