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

/* 函数功能:初始化UART口 */

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

void UART_init(uint32_t baudrate)

{

uint32_t DL_value,Clear=Clear; // (用这种方式定义变量解决编译器的Warning)

LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16); // 使能IOCON时钟

LPC_IOCON->PIO1_6 &= ~0x07;

LPC_IOCON->PIO1_6 |= 0x01; //把P1.6脚设置为RXD

LPC_IOCON->PIO1_7 &= ~0x07;

LPC_IOCON->PIO1_7 |= 0x01; //把P1.7脚设置为TXD

LPC_SYSCON->SYSAHBCLKCTRL &= ~(1<<16); // 禁能IOCON时钟

LPC_SYSCON->UARTCLKDIV = 0x1; //时钟分频值为1

LPC_SYSCON->SYSAHBCLKCTRL |= (1<<12);//允许UART时钟

LPC_UART->LCR = 0x83; //8位传输,1个停止位,无几偶校验,允许访问除数锁存器

DL_value = SystemCoreClock/16/baudrate ; //计算该波特率要求的除数锁存寄存器值

LPC_UART->DLM = DL_value / 256; //写除数锁存器高位值

LPC_UART->DLL = DL_value % 256; //写除数锁存器低位值

LPC_UART->LCR = 0x03; //DLAB置0

LPC_UART->FCR = 0x07; //允许FIFO,清空RxFIFO 和 TxFIFO

Clear = LPC_UART->LSR; //读UART状态寄存器将清空残留状态

}

某同学:UART的例程程序有一句语句Clear?=?LPC_UART->LSR;????Clear是被定义了,这也用到了,但是就把LSR的值读出来也不判断,?这个不明白

瑞生:这个原因,后面的注释写的很清楚呀

瑞生:Clear=Clear:用这种语句形式解决编译产生的Waring:never?used!

瑞生:你把=Clear去掉以后,再按编译按钮,就知道了

某同学:这我看了明白

某同学:Clear?=?LPC_UART->LSR;这条语句不是读的LSR状态信息吗?那就是说这一句可以不写

瑞生:这一句,必须写,我们用这一句的作用是:清除LSR寄存器

某同学:如果读了以后没有用,可以不写

瑞生:我们就是要“只读不用”

某同学:我知道LSR是只读的寄存器,通过Clear?=?LPC_UART->LSR;把LSR信息读出来了,赋给Clear?,同时LSR里的值会改变是吗?

某同学:如果不变,也不判断实在不明读它有什么意义

瑞生:这个意义,我已经说过了

瑞生:这一句,必须写,我们用这一句的作用是:清除LSR寄存器

瑞生:能理解吗?

某同学:理解了,也就LSR的值改变了

瑞生:不是

瑞生:清除LSR寄存器的作用是,不要让之前的状态影响了下次的通信。

某同学:知道了,谢谢!

瑞生:好的,不客气!

clear在c语言中什么意思,c语言关于Clear=Clear的疑问相关推荐

  1. 奇怪的方式c语言,C语言中奇怪的C语言特性

    3)Duff's Device http://en.wikipedia.org/wiki/Duff%27s_device 特点是switch与while交错出现.代码类似 4)同名同姓现象 在< ...

  2. c语言中程序偏离,C语言中的指针加减偏移量

    首先看一段程序: #include int main() { int a[5] = {1, 2, 3, 4, 5}; int* p = (int*)(&a + 1); printf(" ...

  3. 在c语言中下面指针,c语言指针的知识点

    在计算机科学中,指针 ***Pointer***是编程语言中的一个对象,利用地址,它的值直接指向***points to***存在电脑存储器中另一个地方的值.下面是小编为大家整理的C语言的指针知识点总 ...

  4. C语言中低位存放,C语言 大端小端存储解析以及判断方法

    当我们在C语言中查看数据在内存中的存储时,我们经常会发现一个很奇怪的现象,什么现象呢? 例如下面这段代码 int main() { int i = 1; return 0; } 数据在内存中的存放方式 ...

  5. c语言中全局变量内存,C语言——全局变量和局部变量在内存中的区别——及编译后的内存分区【栈-堆-全局存储区-文字常量区-程序代码区】...

    目录: 一:全局变量 二:局部变量 三:C语言经过编译之后将内存分为以下几个区域 (1)栈(stack) (2)堆(heap) (3)全局(静态)存储区 (4)文字常量区 (5)程序代码区 四:区别 ...

  6. struck在c语言中的作用,C语言-选择题及答案.doc

    C语言-选择题及答案.doc 计算机程序设计基础(C语言) 单项选择练习题 说明:带*号的对非信息学院的同学不作要求. 一.基本概念 1. C语言程序是由 C 构成的. A)一些可执行语言 B)mai ...

  7. 二维数组在c语言中的作用,C语言中的二维数组

    1.二维数组的定义和引用 一. 数据类型 数组名[常量表达式1][常量表达式2]; (1)假如有个二维数组array[n][m],则行下标的取值范围0~n-1 (2)列下标的取值范围0~m-1 (3) ...

  8. c语言中循环体表达式,C语言的循环语句

    循环语句是用于重复执行某条语句(循环体)的语句,它包含一个控制表达式,每循环执行一次都要对控制表达式进行判断,如果表达式为真,则继续执行循环.C语言提供了3中循环语句,分别为while语句,do wh ...

  9. c语言中汉字编码,【C语言学习】C语言汉字编码。。。C语言中汉字的输入

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 以下是我本人通过实例得出的结论,没有参照任何参考书.可能有不对的地方. 哪里不对,情各位大虾指正. 在说明之前,本人编写了一个小代码. #include ...

最新文章

  1. bzoj4034: [HAOI2015]树上操作
  2. 三点弯曲弹性模量怎么计算公式_?怎么计算弯管的尺寸和弯管的张力
  3. SAP CRM One Order CLOSING date change debug
  4. C++vector容器-数据存取
  5. 评论数据获取、词频统计、词云图
  6. 用python画的基本知识_Opencv-python画图基础知识
  7. 证券公司财务帐单分析报告自动生成系统
  8. 提示编码有问题时,VS保存选项
  9. java下标和相等的矩阵_39.数组中数值和下标相等的元素
  10. 灌浆料的弹性模量计算_防城港市(灌浆料)月度
  11. 第86节:Java中的JQuery基础
  12. 全国计算机二级考c考点,2019年全国计算机二级C语言考试考点解析(1)
  13. 曾国藩:一勤天下无难事(五勤)
  14. conenct的用法(2种方法)
  15. 从学生到机器视觉工程师,我有话要说!
  16. Python爬虫之App爬虫视频下载
  17. SPI与I2C总线协议
  18. Kubernetes IPVS和IPTABLES
  19. windows平台 VS2017 live555 rtsp推流服务器编译
  20. 小程序自定义头部导航栏(“navigationStyle“: “custom“),自定义tabBar

热门文章

  1. 项目管理中,如何实现有效的项目预算管理?
  2. 但打不开 固态硬盘 插电脑上 能识别_硬盘无法识别修复恢复
  3. 当代的设计潮流是什么_当代设计如何多元化发展?
  4. 一个屌丝程序猿的人生(六十)
  5. Seo站内优化通常需要做的细节有哪些?
  6. 网投简历+宣讲会内容流水账(得帆宣讲会+汉得宣讲会)+感想+汉得offer
  7. 计算机组装仿真教学软件,计算机组成原理仿真实验教学资源 - 大连理工大学软件工程虚拟仿真实验教学中心...
  8. eds800变频器故障代码_电梯维保8富士变频器故障代码分析,内含过电、散热及超速等...
  9. matplotlib 进阶之origin and extent in imshow
  10. java -jar xx.jar 时报错:Exception in thread main java.lang.UnsupportedClassVersionError: