ENET_MSCR_MII_SPEED(miiSpeed) | ENET_MSCR_DIS_PRE(miiPreambleDisabled ? 1UL : 0UL) | ENET_MSCR_HOLDTIME(holdTime);
时间: 2023-09-19 14:11:30 浏览: 99
ULC2_tools_wince_
这是一个使用宏定义的位操作语句,用于设置以太网控制器(ENET)的控制寄存器(MSCR)的值。具体来说,这个语句将三个宏定义组合在一起,分别是:
1. ENET_MSCR_MII_SPEED(miiSpeed):用于设置 MII 时钟的速度。miiSpeed 是一个参数,表示以太网控制器的时钟频率除以 MII 时钟频率的比例。这个宏定义会将 miiSpeed 的值左移 1 位,并将结果与 ENET_MSCR_MII_SPEED_MASK 按位与,最终得到一个用于设置 MII 时钟速度的值。
2. ENET_MSCR_DIS_PRE(miiPreambleDisabled ? 1UL : 0UL):用于控制 MII 前导码的发送。miiPreambleDisabled 是一个布尔值,表示是否禁用 MII 前导码。如果禁用,则该宏定义返回 1,否则返回 0。最终结果会与 ENET_MSCR_DIS_PRE_MASK 按位与,用于设置是否禁用 MII 前导码。
3. ENET_MSCR_HOLDTIME(holdTime):用于设置 MII 读写时的保持时间。holdTime 是一个参数,表示以太网控制器需要在 MII 读写操作之后保持时钟信号的时间。这个宏定义会将 holdTime 的值左移 8 位,并将结果与 ENET_MSCR_HOLDTIME_MASK 按位与,用于设置保持时间。
最终将这三个宏定义的结果按位或起来,就可以得到一个用于设置 ENET MSCR 寄存器的值。
阅读全文