ARM串口通信实例
基于ARM的串口数据存储和USB通信的实现
基于ARM的串口数据存储和USB通信的实现
摘要:在数据采集设备以及具有相关功能的仪器使用中,数据的存储和传输是一个非常重要的环节,本文在成功实践的基础上,介绍采用工业级ARM系列32位高性能嵌入式处理器实现数据的采集后的数据存储及与数据通信的相关内容。
在数据采集和测量仪器尤其是便携式设备中,需要可支持大容量数据储存的便携式设备,本文介绍一种超大容量的RS232/485串口转SD/TF内存卡数据存储器,数据存储器采用模块化设计,不需要用户对现有设备进行改造,实现数据实时存储。
系统结构:
数据自动存储的客观要求在许多测量过程中,不仅要求读取简单的仪表值,而且还需要对一段时间的数据进行科学的分析和处理以取得预测和分析的目的。在这种情况下,可能要求测量时间长,采集要求自动进行,无需人工值守,所以数据必须自动存储;另一个原因,采集数据的频率比较高,人的观察不能满足实际需要,这就要求对采集的据进行有效的存储。
为实现系统高可靠性、高效率的工作,必须采用基于ARM架构的高性能32位嵌入式微处理器作为系统的管理核心,通过与高效的嵌入式操作系统相结合,采用独特的动态内存分配算法,以此管理文件系统对内存的消耗和释放,提高数据的传输效率,避免数据丢失,实现实时数据的可靠存储。
SD/TF卡与ARM接口软件设计:
a 首先初始化SD/TF卡、检查状态、扇区读写等基本操作。文件系统层按照PC文件系统要求设计,如FAT表、文件目录表等兼容PC机的文件管理系统,从而能够大大简化后端数据的分析和处理。文件操作层包括文件的建立、读写、删除等。
单片机串口通信实现
单片机串口通信实现
单片机串口通信是指通过串口来进行数据传输和通信的一种方式。通过串口通信,可以实现单片机与其他外设设备的数据传输和控制,以达到实现各种功能的目的。下面将介绍如何在单片机中实现串口通信。
一、串口的硬件设置
串口通信需要硬件上的支持,主要包括波特率、数据位、停止位和校验位等设置。以常见的UART串口为例,波特率值可设置为常见的9600、115200等,数据位通常为8位,停止位为1位,校验位可选择无校验、奇校验、偶校验等。在单片机中,可以通过寄存器对这些参数进行设置,以满足具体的需求。
二、初始化串口
在单片机中实现串口通信之前,需要对串口进行初始化设置。具体步骤如下:
1. 设置串口引脚
将单片机的串口引脚与外部设备连接,可以通过查阅单片机的数据手册或引脚图来确定具体的引脚连接方式。
2. 设置波特率、数据位、停止位和校验位
通过寄存器设置,将波特率、数据位、停止位和校验位等参数设置为所需的数值。
3. 使能串口
使能串口功能,以便能够正常进行数据传输和通信。
三、发送数据
发送数据是串口通信的核心部分。在单片机中,通过向串口发送指令或数据来实现数据的发送。具体步骤如下:
1. 准备待发送的数据
将需要发送的数据存储在单片机的某个特定的寄存器中。
2. 检查发送缓冲区状态
检查发送缓冲区的状态,判断是否可继续发送数据。如果发送缓冲区为空,则可以继续发送数据;如果发送缓冲区已满,则需要等待发送缓冲区空闲。
3. 发送数据
将待发送的数据写入发送缓冲区,启动发送操作。
四、接收数据
接收数据是串口通信的另一个重要部分。在单片机中,通过接收串口传来的数据,可以实现对外部设备的控制和数据读取。具体步骤如下:
单片机指令的串口通信实现方法
单片机指令的串口通信实现方法串口通信是指通过串行通信接口实现的数据传输方式。在单片机系统中,串口通信是一种重要的通信方式,可以实现与外部设备(如PC 机、传感器等)的数据交互。本文将介绍单片机指令的串口通信实现方法,包括硬件连接和软件编程两方面。
一、硬件连接
串口通信需要通过发送器和接收器两个设备来完成数据的发送和接收。在单片机系统中,可使用通用异步收发器(UART)作为串行通信接口。下面是串口通信的硬件连接步骤:
1. 将单片机与UART连接:首先,确保单片机具有UART接口,并根据其引脚定义将UART的发送线(TXD)连接到单片机的接收引脚,接收线(RXD)连接到单片机的发送引脚。
2. 选择波特率:波特率指每秒钟传送的位数,通常使用的波特率有9600、115200等。在发送和接收数据时,单片机和外部设备需要使用相同的波特率,以保证数据的正确传输。
3. 连接外部设备:根据实际需求,将UART的发送线和接收线分别连接到外部设备的接收引脚和发送引脚。
二、软件编程
实现单片机指令的串口通信需要编写相应的软件程序。下面是基于C语言的软件编程实现方法:
1. 初始化串口:在程序开始时,需要对串口进行初始化设置。通过设置寄存器来配置波特率、数据位、停止位等参数。
2. 发送数据:使用发送指令将待发送的数据写入UART的数据寄存器,等待数据传输完成。
3. 接收数据:通过接收指令读取UART接收到的数据,并进行相应的处理。可以使用中断或轮询方式进行数据接收。
4. 错误处理:在数据传输过程中,可能会出现错误,例如帧错误、奇偶校验错误等。需要进行相应的错误处理操作,例如重新发送数据或发出错误提示。
ARM系列单片机与PC机之间的串行通信
ARM系列单片机与PC机之间的串行通信
摘要:论述了实时监测系统中ARM单片机与PC机之间的通信方法,介绍了ARM系列单片机与主机串行通信的结构框图。与硬件接口电路,讲述了下位机通信程序的设计方法和上位机通讯的软件实现,并给出了上下位机通讯的流程图。在通信的过程中,需要设定相同的通讯协议才能保证通信的正常。
关键词:单片机;PC机;串行通信;通信程序
The Design of Serial Communication Interface between ARM and PC
Abstract:This paper discusses communication method between ARM single chip and PC in Real—time monitor system.It introduces structure diagram and serial communication interface circuit between the ARM single chip microcomputer and host computer.It also introduces the design of hypogenous machine of communication program and upper machine communication.Moreover,it gives communication flowcharts.In the process of communication,the proper communication Can be guaranteed only on the condition of the same protocol setting. Key words:single chip;PC;serial communication;communication program.
基于ARM的多串口扩展及高速485通信设计
摘
要: 为 解 决工 业现 场应 用中对 多串口及 高速 总
线 通信的要 求 , 采 用AR M7 嵌 入 式微控 制 器L P C 2 2 9 4 与S C 1 6 C 6 5 4 芯 片进行 多串口扩
展, 并在 此基 础 上使 用MAX1 3 4 1 3 芯片实
现 高速 4 8 5 通信, 对L P C2 2 9 4 与串口扩展 芯 片及4 8 5 芯片间的接 口设计 和软 硬件设计进
到在多个串口设备之间进行高速总线通信的目的。
c o m mu n i c a t i o n . Th i s p a p e r s p e c i f i c a l l y d e s c r i b e s t h e i n t e r f a c e d e s i g n a n d h a r d wa r e &s o t f wa r e d e s i g n o f L PC2 2 9 4 、s e r i a l p o r t e x p a n s i o n c h i p a n d 4 8 5
4 8 5 通信
来越广泛。 在 工业集 中控制系统 中, 需要多个串口 设备间进行高速的数据通信与交换, 而一般的微控 制器上 , 只有2 个左右 的串口, 因此需要对串口进行
扩展 。
Ab s t r a c t : I n o r de r t o s o l ve t h e r e q ui r e me n t
基于ARM920T的嵌入式串口通信系统设计
南京信息工程大学
嵌入式系统设计
题目:基于ARM920T的嵌入式串口通信系统设计
姓名:
学号:
专业:电子信息工程
院系:电子与信息工程学院
指导老师:周欣
二0一二年五月二十六日
【摘要】
嵌入式系统(Embedded System)在于结合微处理器或微控制器的系统电路与其专用的软件,来达到系统运作效率成本的最优化。
本课题主要是应用ARM体系结构、ARM9-2410开发板、串行通信接口工作原理、ARM9调试仿真工具—ADS1. 2和MULTI-ICE软件仿真器,会用超级终端进行数据传送测试,实现连接PC机、ARM9-2410开发板、仿真器,实现串行通信,传输速率为115200bps,接收来自串口(通过超级终端)的字符并将接收到的字符发送到超级终端,实现监测。嵌入式系统以其小型、专用、易携带、可靠性高的特点,已经在各个领域得到了广泛的应用,如军事国防、消费电子、通信设备、工业控制等。本课题的目的就是研究适用于学校教学的嵌入式系统平台,这对于提高对嵌入式系统的理解具有重要意义。本课题以嵌入式系统设计原理和实际应用为核心,从理论上和技术方法上开展了一系列研究。
【关键词】:ARM体系,ARM9-2410开发板,串行通信,数据传送,监测
引言
本课题以嵌入式系统设计原理和实际应用为核心,从理论上和技术方法上开展了一系列研究。主要工作有:
1、全面系统地概述了嵌入式系统的发展过程和分类,及其在各个领域内的应用,以及嵌入式系统的发展方向;
2、基于嵌入式系统设计原理的嵌入式开发平台的设计的总体方案,从硬件和软件两个方面讲述了嵌入式系统的设计思想和方法,及其可行性的论证;
基于ARM和uClinux多串口通讯的设计与实现
T I C 5 B芯 片 与 U R L 6 72 A T芯 片 S 1 C 5 0引 T625
脚兼容 , 使用外部 晶振时有高达 3 b s M p 的波特率 , 内置两 套 U R A T系 统 , 每套 都 能独 立 工 作 , 具有 可
选 的流控 功能 等 。 T 1C 5 B具有 6 节发 : 接 收 FF 收 、 L6 72 4字 IO, 发 FF IO的触发 等级 可通 过 软 件 编 程 实现 , 减 少 能 对 C U 中 断 次 数 ,提 高 芯 片 收 发 效 率 。 P
间的接 口。它 为应 用程 序 屏 蔽 了硬 件 的细 节 。在 应 用程 序看来 , 件设 备 只是 一 个设 备 文 件 , 用 硬 应 程 序可 以像 操作 普 通 文 件一 样 对 硬 件 设 备进 行 操 作 。而 事实 上 , 硬 件 的所有 实际 操作都 是 由用户 对
推 出 的 IM P B C采 用 了 8 5 U R 2 0 A T芯 片 与 外 设 进
芯片可 以选 择 , 多数 U R 大 A T芯 片是 以计算 机 总线
转换 U R A T为应用基础的, 其管脚、 寄存器基本相 同。这就使得 U R A T芯片有很好的通用性 。本文 选 用 了其 中较 复 杂 的通 用 异 步 接 收 发 送 ( A T U R)
维普资讯 http://www.cqvip.com
PC 与ARM 嵌入式系统间串口通信功能的实现
陈竞
摘
刘玉 熊祖彪
(华中科技大学电子与信息工程系,武汉 430074)
要: 在工业控制场合, 常会要求嵌入式微机系统实现串口通信的功能, 介绍 IAR 软件平台和简易 JTAG
进行 ARM 内核的嵌入式系统开发。我们用 ATMEL 公司 AT91M40800 搭建一个嵌入式微机系统,圆满实 现了没有操作系统支持的串口通信功能,文中详细介绍了具体实现方法。 关键词:嵌入式系统,ARM,串口通信
作者简介: 陈竞,男,1981 年 5 月生,汉族,华中科技大学电子与信息工程系硕士生,专业:通信与 信息系统,研究方向:嵌入式系统设计. 刘玉,女,1957 年 5 月生,汉族,华中科技大学电子与信息工程系教授,硕士生导师,研 究方向:嵌入式系统设计、计算机信息安全、光电控制技术. Brief introduction of authors: Chen Jing, male, Birth Date: May, 1981, Nationality: Han, Degree: Master graduate student, Dept. of Electronics and Information Engineering, Huazhong University of Science and Technology, Specialty: Communications and Information System, Research Direction: design of embedded system; LIU Yu, female, Birth Date: May, 1957, Nationality: Han, Degree: Professor, Director of master, Dept. of Electronics and Information Engineering, Huazhong University of Science and Technology, Research Direction: design of embedded system, computer information security, photoelectric controlling technology; 通信地址: 武汉市 华中科技大学 电信系 邮编: 430074 E-mail:liuyu@hust.edu.cn 中图分类号:TP273+.5 文献标识码:A 基金资助:无 所投栏目:控制系统 刘玉 教授
ARM9(S3C2440)之三串口UART
三 ARM9(S3C2440)的串口UART——理论知识
转载自:骨Zi里德骄傲
概述
S3C2440A 的通用异步收发器(UART)配有3 个独立异步串行I/O(SIO)端口,每个都可以是基于中断或基于DMA 模式的操作。换句话说,UART 可以通过产生中断或DMA 请求来进行CPU 和UART 之间的数据传输。
UART 通过使用系统时钟可以支持最高115.2Kbps 的比特率。如果是外部器件提供UEXTCLK 的UART,则UART可以运行在更高的速度。每个UART 通道包含两个的64 字节的FIFO 给发送和接收。
S3C2440A 的UART 包括了可编程波特率,红外(IR)发送/接收,插入1 个或2 个停止位,5 位、6 位、7 位或8 位的数据宽度以及奇偶校验。
每个UART 包含一个波特率发生器、发送器、接收器和一个控制单元,如图11-1 所示。波特率发生器可以由PCLK、FCLK/n 或UEXTCLK(外部输入时钟)时钟驱动。发送器和接收器包含了64 字节FIFO 和数据移位器。
将数据写入到FIFO 接着在发送前复制到发送移位器中。随后将在发送数据引脚(TxDn)移出数据。与此同时从接收数据引脚(RxDn)移入收到的数据,接着从移位器复制到FIFO。
UART 操作
下述章节描述了UART 的操作,包括了数据发送,数据接收,中断发生,波特率发生,环回(Loopback)模式,红外模式和自动流控制。
数据发送
可编程发送数据帧。由1 个起始位、5 至8 位数据位、1 个可选奇偶校验位以及1 至2 个停止位组成,是由行控制寄存器(ULCONn)指定。发送器也可以产生单帧发送期间强制串行输出为逻辑0 状态的断点状态。此模块在完成发送当前发送字后发送断点信号。在发出断点信号后,其不断发送数据到Tx FIFO(非FIFO 模式情况下Tx保持寄存器)中。
基于ARM9的串行通讯设计
《嵌入式系统设计与应用》
课程设计
题目基于ARM9的串行通讯设计
学生姓名王郸
学号 20131341003
学院信息与控制学院
专业测控技术与仪器
同组成员赵玉斌、马子涵
指导教师孙伟
二O一六年六月五日
基于ARM9的串行通讯设计
赵玉斌王郸马子涵
南京信息工程大学信息与控制学院,南京 210044
摘要:嵌入式是以应用为中心,以计算机技术为基础,软硬件可剪裁,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统,随着嵌入式系统的发展和大规模应用,为了提升系统的整体性能,必须实现PC机和嵌入式计算机之间的通信。本文通过基于FL2440的嵌入式串口通信的实现,较为详细地介绍了串口通信的硬件电路和软件实现方法。通过与计算机串口间的连接,实现在ARM平台上,传输率115200bps,接收来自串口(通过超级终端)的字符并将接收到的字符发送到超级终端,实现监测,与外部设备通信的基本功能。
关键词:嵌入式系统、串口通信、ARM平台。
Design of serial communication based on ARM9
Yubin Zhao Dan Wang Zihan Ma
School of Information and Control, Nanjing University of Information Science and
Technology, Nanjing 210044
Abstract:Embedded is application-centric, based on computer technology, hardware and software can be tailored to adapt application functionality, reliability, cost, size, power consumption, demanding special computer system, with the development of
AVR 单片机 串口通信 串行通讯 详细例程介绍
串口的初始化函数: void uart_init(void) //串口 0 初始化 { UCSR0B=0x00; //disable while setting baud rate UCSR0A=0B00000000; //Bit1 为 1 则倍速发送 U2X=0 UCSR0C=0x06; //B00000110 //奇偶模式无,八位数据位,一位停止位 UBRR0L=103; //B00011001 波特率:9600 Bps UBRR0H=0x00; //误差率:0.156%
eg:
UCSR0C=0B00000110 //异步模式,禁止奇偶校验,停止位为 1 位,数据位为 8 位
4、设置 UBRR:
UBRR 的设置和这些参数有关:U2X0,CPU 频率,波特率 当 U2X0 为 0 时,即异步正常模式下,UBRR 的计算公式: 1、U2X=0 时的公式计算 UBRR0L= (F_CPU/BAUDRATE/16-1)%256; UBRR0H= (F_CPU/BAUDRATE/16-1)/256;
{ putchar0(*s); s++; }
基于ARM的串口通信
基于ARM的串口通信
1 串口通信技术的研究背景与前景
1.1 计算机RS-232串行通信接口
计算机一般提供了2个25针或者9针的RS-232标准串行口,简称COM1和COM2。我们还可以通过插通信卡来获得额外的RS-232标准串行口。利用这些串口可以与其他数字设备进行一般的数据通信,计算机串行接口主要应用于远程通信和低速输出设备。由于串行数据通信传输线条数最少。而且有许多较便宜的专用芯片来实现它,发送和接受器也简单。因而对数据传输速度不高的计算机和数字设备间的进程通信,多采用串行通信实现。
随着计算机的迅速普及和计算机控制技术的发展,计算机被广泛应用于控制领域之中。在控制系统中,下位机主要完成对现场数据采集和对设备一级的监控,上位机则要完成对整个系统的采集、分析、处理和控制以及数据、图形显示、打印、人机对话等工作。上位机与下位机大多是通过PC机的RS-232串行接口实现通信。文中的ARM开发板与PC机之间也是通过RS-232串行接口实现通信。
1.2 其他串行通信协议
CAN总线的概念:CAN是控制器局域网络(Controller Area Network, CAN)的简称,是ISO国际标准化的串行通信协议。CAN属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。CAN总线的特点有以下几个方面。
1. 完成对通信数据的成帧处理
CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。
串口通信实验
串口通信实验
一、实验目的
1.掌握ARM的串行口工作原理。
2.学习编程实现ARM的UART通讯。
3.掌握CPU利用串口通讯的方法。
二、实验内容
学习串行通讯原理,了解串行通讯控制器,阅读ARM芯片文档,掌握ARM的UART 相关寄存器的功能,熟悉ARM系统硬件的UART相关接口。编程实现ARM和计算机实现串行通讯:
ARM监视串行口,将接收到的字符再发送给串口(计算机与开发板是通过超级终端通讯的),即按PC键盘通过超级终端发送数据,开发板将接收到的数据再返送给PC,在超级终端上显示。
三、实验原理介绍
通信方式
在通信过程中,如果通信仅在点对点之间进行,或者点对多点之间进行,那么,按消息传输的方向和时间的不同,可以将通信分为单工通信、全双工通信以及半双工通信。
(1)单工
消息只能单方向进行传输的一种通信方式称为单工通信。如图8-1所示,通信只能从A传输到B。这好比一条绝对方向的单行道路,不准双向通信也不能逆向行驶。在现代通信系统中,如模拟广播电视系统(不包括现正在研究应用的HFC
双向网络)、无线寻呼系统等。信号只能从广播电视台、无线寻呼中心发送到电视机接收机、BB机上。
图8-1 单工通信方式
(2)全双工
全双工通信是指通信双方可以同时进行双向数据传输而互不影响的工作方式。如图8-2所示,在这种工作方式下,通信双方都可以同时进行信息的发送和接收,因此,全双工通信的信道必须是双向信道。如果是有线的全双工方式,通信双方会有两根独立的信号线分别传输发送信号和接收信号,从而使得发送和接收可同
时进行。生活中的普通电话系统、移动通信系统都是全双工方式。
基于ARM的串口通信系统的设计方案
ff
目录
摘要 (1)
1 设计目的 (1)
2 设计要求 (1)
3 设计内容 (2)
3.1 S3C2410与串口通信概述 (2)
3.1.1S2C2410处理器概述 (2)
3.1.2串口通信 (3)
3.2方案设计 (4)
3.3电路设计 (4)
3.3.1 电源设计·········································································································· · 4
3.3.2晶振电路 (5)
3.3.3复位电路 (6)
3.3.5存储器设计 (6)
3.3.4JTAG接口 (6)
3.3.6串口电路 (7)
3.4软件设计 (8)
3.4.1 Boot loader 工作原理 (8)
3.4.2第一阶段 (9)
3.4.1第二阶段 (10)
总结与致谢 (11)
参考文
献 (12)
页脚内容0
ff
摘要
串口通信是目前单片机和DSP 等嵌入式系统之间,以及嵌入式系统与PC 机或无线模块之间的一种非常重要且普遍使用的通信方式。在嵌入式系统的硬件结构中,通常只有一个8位或16位的CPU, 不仅要完成主流程的工作, 同时还要处理随时发生的各种中断, 因而嵌入式系统中的串口通信程序设计与PC 机有很大的不同。
串行端口的本质功能是作为CPU 和串行设备间的编码转换器,一般微机内都配有通信适配器,使计算机能够与其他具有RS 232 串口的计算机或设备进行通信。
本系统中目标机开发板的内核采用的是三星的S3C2410 ,工作非常可靠,可稳定运行在203 MHz 的时钟频率下。其外设非常丰富,功能强大,完全可以满足设计需要。串口线采用常用的RS 232 型接口模式,能实现计算机与开发板间的数据传输与控制。
ARM通信程序设计
《嵌入式系统二》课程设计报告
ARM通信程序设计
设计日期:2020年07月4日至2020年07月8日
设计题目:ARM通信程序设计
摘要
设计ARM板到主机的网络通信,大致是通过在ARM板的RS232接口接收运算机传过来的数据,然后再通过RS232回传对运算机,并在运算机上显示出来。另外,假设是数据需要保留,能够保留到一个txt文本文档中。通过UART串口通信,第一是运算机端通过();获取的键盘输入的数据,通过封装,用函数Write()的接口(chars,0,1);发送到串口。然后在ARM板方面实现各个针脚对应的前提下,ARM板把接口Uart_Getch();接收到的数据进行解包。回发时又对数据进行封装,然后再通过接口Uart_SendByte(ch);通过串口发送给运算机,运算机通过接口();读的回送的数据,然后显示出来。
关键字:ARM,PC机,通信程序,UART
1.选题的意义
本课题是设计ARM板到主机的网络通信。意义在于能够实现ARM板与电脑主机的通信。能够把ARM板的数据或信息发送到PC机了,数据处置完以后再发送回ARM板。能够弥补ARM板在功能上的很多不足。在微操纵领域具有重大的意义。
系统方案设计
通过在ARM板的RS232接口接收运算机传过来的数据,然后再通过RS232回传对运算机,并在运算机上显示出来。另外,假设是数据需要保留,能够保留到一个txt文本文档中。
实现原理
2.2.1UART原理:S3C2410A的UART提3个独立的异步串行I/O口,他们都能够运行与中断模
式或DMA模式。S3C2410的每一个UART由波特率发生器、发送器、接收器和操纵单元组成。波特率发生器能够由CLK或UEXTCLK提供时钟。发送器和接收器包括16字节的FIFO和数据移位器。数据被写入FIFO,然后在发送之前拷贝到发送移位器中。接下来数据通过发送数据引脚(TxDn)被移出。同时,接收到的数据从接收数据引脚(RxDn)移入,然后从移位器拷贝到FIFO 中。
ARM系统代码固化的串口实现
t { 《 士 研 宄 鬣 椿 蘩分 授 童妥 研 爨 舞翻 为 嵌 八 式系 统 雌硕 教
漕 蓼嚣 |l 强镬 0 | 警冀 曩 。 誊l* || 蠢 | 毒 一
备 的传 输 同步 , 从 设 备 提 供 反 应 时 间 , 处 理 器 等 待 以 为 让
标 代 码 发 送 给 ARM 处 理 器 ; ARM 处 理 器 内部 的 监 控 由
开 发M AK板
 ̄ cl ae b
圊
Hale Waihona Puke Baidu
图 1 A RM 开 发 板 与 P 机 的 连 接 C
程 序 将 目标 代 码 写 入 片 外 Fah 实 现 程 序 的 在 线 烧 写 。 ls ,
SA M 7 S64, 0 2 04 —09 .
参 考 文 献
s d M c oc t o lr l [ ]At 1AT 1AR T u ba e ir on r le s A T9 1 me. 9 M h mb
9S S4 [ ]北 京 世 纪 联 信 科 技 有 限 公 司 AT 1 AM7 6 Y 评 估 板 使 用 2
这 样 不 仅 简化 了 电路 设 计 , 且 降 低 了 开 发 成 本 , 短 了 而 缩
开发时间 。
1 烧 写 原 理 及 过 程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include "stm32f10x_lib.h"
/*************************** 宏定义***********************************************/
#define USARTx USART1
#define GPIOx GPIOA
#define RCC_APB2Periph_GPIOx RCC_APB2Periph_GPIOA
#define GPIO_RxPin GPIO_Pin_10
#define GPIO_TxPin GPIO_Pin_9
/******************************** 变量定义 ------------------------------------*/
USART_InitTypeDef USART_InitStructure;
ErrorStatus HSEStartUpStatus;
/*********************************声明函数 ------------------------------------*/
void RCC_Configuration(void);
void GPIO_Configuration(void);
void NVIC_Configuration(void);
void Uart1_PutString(u8* buf , u8 len);
u8 Uart1_PutChar(u8 ch);
void Delay(u32 nCount);
/*******************************************************************************
*
* 主函数
*
*******************************************************************************/
int main(void)
{
#ifdef DEBUG
debug();
#endif
RCC_Configuration(); //配置系统时钟
NVIC_Configuration(); //NVIC配置
GPIO_Configuration(); //GPIO端口配置
//串口配置: 波特率 115200 数据位 8 停止位 1 奇偶位 NONE
USART_ART_BaudRate = 115200;
USART_ART_WordLength = USART_WordLength_8b;
USART_ART_StopBits = USART_StopBits_1;
USART_ART_Parity = USART_Parity_No ;
USART_ART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_ART_Mode = USART_Mode_Rx | USART_Mode_Tx;
//初始化串口
USART_Init(USARTx, &USART_InitStructure);
//启动串口
USART_Cmd(USARTx, ENABLE);
while (1)
{
Uart1_PutString("普中科技推出ARM/51综合板带您进入32位处理世界" ,50 );
Delay(0x00ffff);
}
}
/*******************************************************************************
*
*
* Delay 延时程序
*
*
*******************************************************************************/
void Delay(u32 nCount)
{
for(; nCount != 0 ; nCount--);
}
//发送一个字符串
/*******************************************************************************
* Name : Uart1_PutString
* Deion : print a string to the uart1
* Input : buf为发送数据的地址 , len为发送字符的个数
*******************************************************************************/
void Uart1_PutString(u8* buf , u8 len)
{ u8 i;
for(i=0;i
Uart1_PutChar(*buf++);
}
}
//发送一个字符
/*******************************************************************************
* Name : Uart1_PutChar
* Deion : printf a char to the uart.
*******************************************************************************/
u8 Uart1_PutChar(u8 ch)
{
/* Write a character to the USART */
USART_SendData(USART1, (u8) c
h);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET)
{
}
return ch;
}
/*******************************************************************************
*
* RCC配置
*
*******************************************************************************/
void RCC_Configuration(void)
{
//复位RCC外部设备寄存器到默认值
RCC_DeInit();
//打开外部高速晶振
RCC_HSEConfig(RCC_HSE_ON);
//等待外部高速时钟准备好
HSEStartUpStatus = RCC_WaitForHSEStartUp();
//外部高速时钟已经准别好
if(HSEStartUpStatus == SUCCESS)
{
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
FLASH_SetLatency(FLASH_Latency_2);
//配置AHB(HCLK)时钟=SYSCLK
RCC_HCLKConfig(RCC_SYSCLK_Div1);
//配置APB2(PCLK2)钟=AHB时钟
RCC_PCLK2Config(RCC_HCLK_Div1);
//配置APB1(PCLK1)钟=AHB 1/2时钟
RCC_PCLK1Config(RCC_HCLK_Div2);
//配置ADC时钟=PCLK2 1/4
RCC_ADCCLKConfig(RCC_PCLK2_Div4);
//配置PLL时钟 == 外部高速晶体时钟*9
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
//配置ADC时钟= PCLK2/4
RCC_ADCCLKConfig(RCC_PCLK2_Div4);
//使能PLL时钟
RCC_PLLCmd(ENABLE);
//等待PLL时钟就绪
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
{
}
//配置系统时钟 = PLL时钟
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
//检查PLL时钟是否作为系统时钟
while(RCC_GetSYSCLKSource() != 0x08)
{
}
}
//开启GPIO时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx, ENABLE);
//开启串口时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
}
/*******************************************************************************
* Function Name : GPIO_Configuration
* Description : Configures the different GPIO ports.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
//开启AFIO时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
//配置USARTx_Tx为复合推挽输出
GPIO_InitStructure.GPIO_Pin = GPIO_TxPin;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOx, &GPIO_InitStructure);
//配置 USARTx_Rx 为浮空输入
GPIO_InitStructure.GPIO_Pin = GPIO_RxPin;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOx, &GPIO_InitStructure);
}
/*******************************************************************************
* Function Name : NVIC_Configuration
* Description : Configures Vector Table base location.
* Input : None
* Output : None
* Return : None
***********************************************
********************************/
void NVIC_Configuration(void)
{
#ifdef VECT_TAB_RAM
/* Set the Vector Table base location at 0x20000000 */
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else /* VECT_TAB_FLASH */
/* Set the Vector Table base location at 0x08000000 */
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
#endif
}
#ifdef DEBUG
/*******************************************************************************
* Function Name : assert_failed
* Description : Reports the name of the source file and the source line number
* where the assert_param error has occurred.
* Input : - file: pointer to the source file name
* - line: assert_param error line source number
* Output : None
* Return : None
*******************************************************************************/
void assert_failed(u8* file, u32 line)
{
/* User can add his own implementation to report the file name and line number,
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
/* Infinite loop */
while (1)
{
}
}
#endif