c语言关于Clear=Clear的疑问

发布者:genius5最新更新时间:2016-12-09 来源: eefocus关键字:c语言  Clear=Clear 手机看文章 扫描二维码
随时随地手机看文章
/************************************************/
/* 函数功能:初始化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寄存器的作用是,不要让之前的状态影响了下次的通信。

某同学:知道了,谢谢!

瑞生:好的,不客气!


关键字:c语言  Clear=Clear 引用地址:c语言关于Clear=Clear的疑问

上一篇:LPC1114如何在程序中软件复位
下一篇:LPC1114关于IOCON模块时钟打开又关闭的疑问

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

PIC单片机C语言程序设计(1)
  编者按:为了帮助具有PIC单片机汇编语言知识的技术人员或工程师,快速掌握利用C语言编写PIC单片机程序的方法,本刊特推出《PIC单片机C语言程序设计》系列连载文章。丈中给出的C语言程序实例,均是可执行的,读者可以放心引用。   一、汇编语言与C语言   早期的单片机程序多采用汇编语言编写。用汇编语言编程,直接、简捷,可有效地访问和控制各种硬件设备,如存储器、I/O口等,目标代码简短、占用内存少、执行速度快、语句效率高。然而,由于汇编语言是面向机器的语言,不同厂家或同厂家不同系列的单片机。其汇编语言指令系统往往互不相同,即通常所说的“不兼容”。这就出现了精通51单片机汇编语言的人不能直接编写PIC或其他单片机的汇编语言源程序
[单片机]
PIC单片机<font color='red'>C语言</font>程序设计(1)
解析C语言与ARM汇编与的相互调用以及与 C++ 相互调用
1.汇编程序访问C语言全局变量 全局变量只能通过地址间接调用,为了访问C++++语言中全局变量,首先要通过extern伪指令引入全局变量,然后将其地址装入寄存器中。 对于unsigned char类型,使用LDRB/STRB访问; 对于unsigned short类型,使用LDRH/STRH访问; 对于unsigned int类型,使用LDR/STR访问; 对于char类型,使用LDRSB/STRSB访问; 对于short类型,使用LDRSH/STRSH访问; 例子: .text .global asmsubrouTIne .extern globvar asmsubrouTIne: LDR R1,=globvar LDR
[单片机]
解析<font color='red'>C语言</font>与ARM汇编与的相互调用以及与 C++ 相互调用
Keil C51精确延时程序设计
C语言具有较强的数据处理能力、语言功能齐全、使用灵活方便、开发效率高,被广泛应用于在单片机系统开发应用中。在单片机幕统开发的过程中,经常需要使用到延时程序,但C语言代码执行时间。的可预见性和实时性较差,在开发一些具有严格通信时序要求的系统时,往往需要反复调试延时代码,给开发者带来了较大困难。比如使用DS18B20进行温度测控时,必须按照其单总线通信协议,否则无法读取温度数据。针对上述问题,结合Keil C51开发工具和Proteus仿真软件,介绍在Keil C51开发系统中,利用C语言编写的延时程序设计及其运行的时间的计算方法。 1 常用延时程序的设计方法 1.1 利用定时器/计数器延时 利用C51单片机内部2个16位定时
[单片机]
Keil C51精确延时程序设计
Tiny4412之C语言实现流水灯,Tiny4412裸机程序[3]
在前边我们使用汇编完成了一个流水灯实验: Tiny4412汇编流水灯代码,Tiny4412裸机LED操作 ---- - -- -- -- - -- -- 修改: # ${MKBL2} ${SOURCE_FILE} bl2.bin 14336 ./${MKBL2} ${SOURCE_FILE} bl2.bin 14336 或者: MKBL2=my_mkbl2改成MKBL2=./my_mkbl2 必须有:chmod +x my_mkbl2 chmod 777 my_mkbl2 然后 查看下权限 ls -l my_mkbl2 变黄即可 后编译成功 r
[单片机]
Tiny4412之<font color='red'>C语言</font>实现流水灯,Tiny4412裸机程序[3]
C语言中字符串操作
本篇文章是对C语言字符串操作进行了详细的总结分析,需要的朋友参考下 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strcasecmp忽略大小写比较字符串 strncmp(p, p1, n) 比较指定长度字符串 strchr(p, c) 在字符串中查找指定字符 strrchr(p, c) 在字符串中反向查找 strstr(p, p1) 查找字符串 strpbrk(p, p1) 以目标字符串的所有字
[单片机]
多任务 多进程 51单片机C语言 完整版
*/ /* 1.本程序不使用任何汇编指令 2.由定时器T0产生中断,切换进程 3.由于中断或调用子程序,要把PC堆栈,故可以以SP为基址的地方找到PC 4.中断或子程序返回,要把SP出栈给PC,故可以操作SP改变程序入口 5.本程序经调试运行 电路图已上传 6.程序编译是会有一个警告提示,为正常现象,因为保存R0-R7时,重新定义地址, 出现地址覆盖的警告提示。 7.用户以此模板写程序只需写用户的进程子程序和用户初始化子程序,并把各进程参数 放在规定地方,各程序放在规定地方就可以;所有的任务调度已处理好。 */ //头文件 #include reg52.h //#include absacc.h //#incl
[单片机]
用数组的指针控制LED流水灯--C语言编程
//实例28: 用数组的指针控制P0 口8 位LED流水点亮--配套51单片机开发板 // #include reg51.h /************************************************* 函数功能:延时约150ms (3*200*250=150 000 s=150ms *************************************************/ void delay150ms(void) { unsigned char m,n; for(m=0;m 200;m++) for(n=0;n 250;n++) ; } /*********************
[单片机]
C语言编程操作SPMC75内部Flash的方法
1 引言   支持C语言几乎是所有微控制器程序设计的一项基本要求,当然SPMC75系列单片机也不例外。μ'nSPTM 指令结构的设计就着重考虑对C语言的支持,GCC就是一种针对μ'nSPTM 操作平台的ANSI-C编译器。但是在应用中对于程序的设计,特别是C和ASM混合使用的时候有些地方是需要注意的,在C中如何嵌入ASM也是一个不可回避的问题。 2 SPMC75单片机FLASH硬件资源分析   SPMC75系列微控制器Flash分为两区:信息区和通用区,在同一时间只能访问其中的一区。信息区包含64个字,寻址空间为0x8000 ~ 0x803F。地址0x8000为系统选项寄存器P_System_Option。其他地址空间可由用户自
[单片机]
用<font color='red'>C语言</font>编程操作SPMC75内部Flash的方法
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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