UART---查询方式(EasyARM2131)

发布者:LuckyDaisy最新更新时间:2016-07-14 来源: eefocus关键字:UART  查询方式  EasyARM2131 手机看文章 扫描二维码
随时随地手机看文章
/****************************************Copyright (c)********************

**--------------File Info-------------------------------------------------
** File name:   main.c
** Last modified Date:  2011-04-10
** Last Version:  1.0
** Descriptions:  The main() function example template
**
**-----------------------------------------------------------------------
** Created by:   lxliu
** Created date:  2011-04-10
** Version:    1.0
** Descriptions:  The original version
**
**-----------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
************************************************************************/
#include "config.h"

/***********************************************************************
** 函数名称:DelayNS()
** 函数功能:长软件延时
** 入口参数:dly延时控制值,值越大,延时越长
** 出口参数:无
***********************************************************************/

void DelayNS(uint32 dly)
{
 uint32 i;
 for(;dly>0;dly--)
  for(i=0;i<50000;i++);
}

 

#define UART_BPS  115200    //串口通信波特率
/***********************************************************************
** 函数名称:UART0_Init()
** 函数功能:串口初始化,设置为8位数据位,1位停止位,
**           无奇偶校验,波特率为115200
** 入口参数:无
** 出口参数:无
***********************************************************************/
void UART0_Init()
{
 uint16 Fdiv;
 
 U0LCR = 0x83;
 Fdiv = (Fpclk/16)/UART_BPS;
 U0DLM = Fdiv/256;
 U0DLL = Fdiv%256;
 U0LCR = 0x03; 
}


/***********************************************************************
** 函数名称:UART0_GetByte()
** 函数功能:从串口接收一个字节数据,使用查询方式接收
** 入口参数:无
** 出口参数:接收到的数据
***********************************************************************/

uint8 UART0_GetByte()
{
 uint8 rcv_dat;
 
 while((U0LSR & 0x01) == 0);
 rcv_dat = U0RBR;
 
 return(rcv_dat);
}

/***********************************************************************
** 函数名称:UART0_GetStr()
** 函数功能:串口接收
** 入口参数:s    指向接收数据数组的指针
**           n    接收的个数
** 出口参数:无
***********************************************************************/
void UART0_GetStr(uint8 *s, uint32 n)
{
 for (;n>0;n--)
  {
   *s++ = UART0_GetByte();
  }

}

/***********************************************************************
** 函数名称:UART0_SendByte()
** 函数功能:向串口发送字节数据,并等待发送完毕,使用查询方式
** 入口参数:dat     要发送的数据  
** 出口参数:无
***********************************************************************/
void UART0_SendByte(uint8 dat)
{
 U0THR = dat;
 while((U0LSR & 0x40) == 0);
 
}

/***********************************************************************
** 函数名称:UART0_SendStr()
** 函数功能:向串口发送一字符串
** 入口参数:str    要发送的字符串的指针
** 出口参数:无
***********************************************************************/
void UART0_SendStr(uint8 const *str)
{
 while(1)
 {
  if(*str == '\0')
   break;
  UART0_SendByte(*str++);
 }
}

/***********************************************************************
** 函数名称:main()
** 函数功能:从串口UART0接收字符串"Hello EasyARM2131!",并发送回上位机显示
** 调试说明:需要PC串口显示终端软件,如EasyARM.exe
***********************************************************************/
int main (void)
{
 uint8 snd[32];
 
 PINSEL0 = 0x00000005;
 UART0_Init();
 UART0_GetStr(snd,18);
 DelayNS(10);
 UART0_SendStr(snd);
 DelayNS(10);
 
 while(1);
 return 0;
}
/**********************************************************************
**                            End Of File
**********************************************************************/

关键字:UART  查询方式  EasyARM2131 引用地址:UART---查询方式(EasyARM2131)

上一篇:LPC2131的GPIO输出
下一篇:ARM 串口驱动本质

推荐阅读最新更新时间:2024-03-16 15:00

对MSP430F5438的时钟及uart配置
对MSP430F5438的时钟及uart配置 在使用的过程中,一直认为比较简单,也一直没有深究,忽然这几天卡壳了,出现问题是操作UART发送出的数据给232显示,并不是想得到的数据。这里涉及了两个地方,一是时钟配置,二是对UART的配置。 时钟配置 需求:考虑到功耗及使用场景,MCLK=2M,SMCLK=1M,ACLK=32768 P7SEL |= BIT0 + BIT1; //开XT1 __bis_SR_register( SCG0 ); // Disable the FLL control loop UCSCTL0 = 0x0000; // Set low
[单片机]
STM32F0单片机快速入门七 串口(UART)操作从轮询到中断
1.从轮询到中断 很多同学都不喜欢用中断,而偏爱用轮询的操作方式。 这是不是和我们的天性有关呢?每个人都喜欢一切尽在掌握中,肯定都不喜欢被打断。我们常常都有这样的经验:正在跟别人说一件事,然后突然有个电话打进来,Call打完后突然记不起来刚才讲到哪了!这种糟糕的体验对我们影响是如此深刻,以至于我们认定机器可能也是这样吧,频繁的中断会不会把事情搞乱呢?好在机器虽然大部分时间都比人笨一些,但在处理这种问题上却能做到一丝不苟。机器在中断来的时候总会老老实实地先把当前正在做的记录下来,然后转去处理中断事件,中断处理完后分毫不差地恢复原来的工作。 仔细想一想,我们是不是也可以在接电话前先用个小本儿记录一下正在讲的事情呢?我们为什么没有这么
[单片机]
TMS320VC5402和PC机的UART研究与设计
1 引言 TMS320VC5402以其低成本、低功耗、资源多的特点在通信、控制领域得到了广泛的应用。片上集成了最大192kB存储空间(64kB RAM、64kB ROM、64kB I/O),具有时分多路串口TMD,2个缓冲串口BSP、8位并行主机接口HPI、可编程等待状态发生器等,完全可以满足数据处理及控制要求。基于 5402构建的应用系统中必不可少的是各种数据通信接口的设计。与并口相比,串行接口的特点是减少器件引脚数目,节省了硬件系统的体积,降低了接口设计的复杂性。实际应用中,各系统之间需要实现异步串行数据传输和通信,而DSP5402具有同步串口,与标准的异步串行接口不同,本文针对这种应用,设计实现了DSP5402和PC
[应用]
MB89P475的UART/SIO结构与应用分析
MB89P475是富士通公司生产的F2MC-8L MB89470单片机系列产品。该产品具有丰富的软、硬件资源和良好的EMC性能,而且其程序空间(16k×8bits PROM)和数据空间(512×8bits RAM)大小适中,定时器资源和中断资源丰富。双路UART/SIO接口的设置是该产品的一大特点。在指令设计方面,利用该单片机可以直接进行16位数据的比较和算术运算。MB89P475的高性价比和合理的资源配置,使其可以广泛应用于家用电器控制和工业控制等应用领域。此外,在多级数据通信控制系统的开发设计中,MB89P475也是一款不可多得的单片机产品。 1 MB89P475简介 1.1 引脚功能 MB89P475(O
[单片机]
MB89P475的<font color='red'>UART</font>/SIO结构与应用分析
C8051F020的UART
C8051F020共有两个UART,分别是UART0和UART1。和89C52的基本差不多,UART1的寄存器不能位寻址,操作稍微麻烦点,不过也还好,调试的话直接用keil软调就可以了,不过要用虚拟串口模拟出一对串口来。 UART0和UART1都可以以定时器1作为波特率发生器,UART0还可以以定时器2作为波特率发生器,UART1则还可以以定时器4作为波特率发生器。一般的话用UART方式1就可以了,即异步8Bit+起始停止位。
[单片机]
P89LPC952的UART1
P89LPC952的亮点之一是有2个串口。最近我在试验第一个串口UART0很顺利地通过了。但在试验第二个串口UART1时间很不顺利。网上搜索发现也有人无法使UART1正常工作。经过对952进行模拟调试,发现NXP公司的数据手册中UART1的控制寄存器S1CON的地址和PCONA地址相同都是0B5H,而S1CON的正确地址是0B6H,改正之后UART1即可正常工作。另外要注意S1CON的各位不能位寻址,这和S0CON不同。下面是通过UART1发送一组数据的小程序,下载到952能够正确运行。 $NOMOD51 $INCLUDE (REG952.INC) RCOUNT EQU 40H ADDR EQU 41H T
[单片机]
STM32L1XX使用HAL_UART_Transmit_DMA发送串口数据
使用STM32CubeMX生成初始化代码。 问题: HAL_UART_Transmit_DMA函数只能调用一次,第二次就返回状态HAL_UART_STATE_BUSY 0x02。 原因: stm32l1xx_hal_uart.c开头有描述 (##) DMA Configuration if you need to use DMA process (HAL_UART_Transmit_DMA() and HAL_UART_Receive_DMA() APIs): (+++) Declare a DMA handle structure for the Tx/Rx channel. (+
[单片机]
STM32L1XX使用HAL_<font color='red'>UART</font>_Transmit_DMA发送串口数据
联盛德 HLK-W801(三):在SDK粥中盛出UART
1. 开发环境 系统:win10 开发板:联盛德 HLK-W801开发板 SDK版本:wm_sdk_w80x_20211115 IDE:cdk-windows-V2.12.1 2. 使用sdk初始化串口的步骤 2.1 新建文件夹和文件 在工程下新建文件夹user,然后在新建一个uart.c和uart.h文件,添加到工程,如图: 注意:uaer文件夹下的其他文件不用管,那是我添加的其他测试文件。 在uart.h里面写下面程序: #ifndef __UART_H_ #define __UART_H_ #ifdef __cplusplus extern C { #endif void create_my_uart_t
[单片机]
联盛德 HLK-W801(三):在SDK粥中盛出<font color='red'>UART</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved