info->addr[CK_UART_IER] &= ~IER_RDA_INT_ENABLE
时间: 2023-08-15 22:07:40 浏览: 47
这行代码的作用是将 `CKStruct_UartInfo` 结构体中 `addr` 数组中索引为 `CK_UART_IER` 的元素的 RDA_INT_ENABLE 位清零。其中 `CK_UART_IER` 是一个宏定义,表示串口的中断使能寄存器(Interrupt Enable Register),而 `IER_RDA_INT_ENABLE` 是该寄存器中 RDA(Received Data Available)位的宏定义。该行代码使用了位运算中的按位取反(~)和按位与(&)操作,将 RDA 位清零,即禁止接收数据中断。
相关问题
info->addr[CK_UART_LCR] = 0x83
这行代码的作用是将 `CKStruct_UartInfo` 结构体中 `addr` 数组中索引为 `CK_UART_LCR` 的元素的值设置为 `0x83`。其中 `CK_UART_LCR` 是一个宏定义,表示串口的线路控制寄存器(Line Control Register)。该行代码的作用是将该寄存器的值设置为 `0x83`,这将使得串口的数据位为8位,停止位为1位,无校验。
#define UARTID_MAX sizeof(CK_Uart_Table) / sizeof(CKStruct_UartInfo) /* the table of the uart serial ports */ CKStruct_UartInfo CK_Uart_Table[1]; /* * Make all the uarts in the idle state; * this function should be called before * INTC module working; */ void CK_Deactive_UartModule() { int i; CKStruct_UartInfo *info; for( i = 0; i < UARTID_MAX; i++) { info = &(CK_Uart_Table[i]); info->addr[CK_UART_LCR] = 0x83; info->addr[CK_UART_DLL] = 0x1; info->addr[CK_UART_DLH] = 0x0; info->addr[CK_UART_FCR] = 0x1; } }
这段代码的作用是将所有的串口模块置于空闲状态。该函数应该在 INTC 模块启动之前调用。其中定义了一个表示串口数量的常量 UARTID_MAX,以及一个用于存储串口信息的数组 CK_Uart_Table。函数内部使用了一个循环,遍历 CK_Uart_Table 数组,将每个串口的寄存器状态设置为特定的值,以达到将其置于空闲状态的目的。