clear在c语言中什么意思,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寄存器的作用是,不要让之前的状态影响了下次的通信。

某同学:知道了,谢谢!

瑞生:好的,不客气!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值