28.长度值

长度单位总结一下,目前比较常用到px(像素)、em、% 百分比,要注意其实这三种单位都是相对单位。

1、像素

像素为什么是相对单位呢?因为像素指的是显示器上的小点(CSS规范中假设“90像素=1英寸”)。实际情况是浏览器会使用显示器的实际像素值有关,在目前大多数的设计者都倾向于使用像素(px)作为单位。

2、em

就是本元素给定字体的 font-size 值,如果元素的 font-size 为 14px ,那么 1em = 14px;如果 font-size 为 18px,那么 1em = 18px。如下代码:

p{font-size:12px;text-indent:2em;}

上面代码就是可以实现段落首行缩进 24px(也就是两个字体大小的距离)。

下面注意一个特殊情况:

但当给 font-size 设置单位为 em 时,此时计算的标准以 p 的父元素的 font-size 为基础。如下代码:

html:

<p>以这个<span>例子</span>为例。</p>

css:

p{font-size:14px}
span{font-size:0.8em;}

结果 span 中的字体“例子”字体大小就为 11.2px(14 * 0.8 = 11.2px)。

3、百分比

p{font-size:12px;line-height:130%}

设置行高(行间距)为字体的130%(12 * 1.3 = 15.6px)。

转载于:https://www.cnblogs.com/binhuguang/p/4290357.html

<think>嗯,用户想了解STM32中802.3协议的数据帧长度和配置参数。首先,我需要回忆一下802.3以太网帧的结构。标准以太网帧的最大长度是1518字节,包括目的地址、源地址、类型/长度字段、数据和FCS。而STM32的以太网模块通常由MAC和DMA组成,可能涉及相关的配置寄存器。接下来,用户提到的配置参数可能涉及MAC层的设置,比如最大帧长度的配置。在STM32的参考手册中,MAC配置寄存器中有一个位域可以设置最大传输单元(MTU),比如MACFCR寄存器的MTF位,允许设置帧长度最大到15872字节,用于支持巨帧。同时,DMA可能也有相关的描述符设置,比如接收和发送帧的长度控制。然后,我需要检查是否有引用中的相关内容。引用4提到以太网DMA在STM32中的作用,负责内存和外设的数据交换,这可能涉及到数据帧长度的处理。引用5讨论了使用ENC28J60和UIP协议栈,虽然ENC28J60是外部控制器,但配置网络帧长度可能相关。此外,引用2提到CANOpen的TPDO/RPDO参数,虽然不直接相关,但通信参数的配置思路可能有类似之处。用户的问题可能具体到如何在STM32中配置MAC和DMA来设置允许的帧长度,以及相关的寄存器设置。需要确认STM32的以太网MAC是否支持长度字段的配置,以及如何通过HAL库或寄存器操作进行设置。例如,使用HAL_ETH_SetMTU函数来设置MTU,或者在初始化时配置MAC的参数。 可能还需要区分数据帧中的长度字段和实际配置的缓冲区大小,确保DMA描述符能够容纳最大帧长度。此外,要注意协议中长度字段和类型字段的区别,当大于0x0600时表示类型,否则表示长度,这在处理帧时需要正确解析。最后,生成相关问题时,需要考虑用户可能的后续问题,比如如何启用巨帧、如何处理超长帧的错误,或者DMA配置与帧长度的关系,以及协议栈如LwIP中的相关设置。</think>根据您的问题,STM32中802.3协议的数据帧长度配置涉及以下核心参数和技术细节: ### 一、802.3协议数据帧结构 标准以太网帧格式包含: - **目的地址/源地址**:各6字节 - **长度/类型字段**:2字节,当$ \leq 0x0600$时表示数据长度,否则表示协议类型 - **数据域**:46-1500字节 - **FCS校验**:4字节 总帧长度范围:$64 \leq L \leq 1518$字节[^4] ### 二、STM32以太网配置关键参数 在STM32的以太网外设中,需重点关注以下配置: 1. **MAC层配置** ```c // 通过MAC配置寄存器设置最大帧长度 ETH_MAC->MACFCR |= ETH_MACFCR_MTF; // 允许最大15872字节的巨帧 ``` - `MTF`位控制最大传输单元(MTU),默认支持标准1518字节帧 2. **DMA描述符配置** ```c ETH_DMADescTypeDef DMA_RxDesc; DMA_RxDesc.ControlBufferSize = ETH_MAX_PACKET_SIZE; // 设置为1522字节 ``` - 接收缓冲区需预留额外4字节用于状态信息 3. **协议相关寄存器** ```c // 设置帧过滤规则 ETH->MACFFR |= ETH_MACFFR_RA; // 接收所有帧 ``` ### 三、长度字段处理机制 1. **自动长度检测**: - MAC硬件会自动解析长度/类型字段 - 当字段$ \leq 0x05DC$时识别为长度指示符 2. **长度校验**: ```c ETH->MACFCR |= ETH_MACFCR_ZQPD; // 启用零帧长度检测 ``` ### 四、配置建议 1. 标准配置: ```c HAL_ETH_SetMTU(&heth, 1500); // 设置标准MTU ``` 2. 巨帧支持: ```c HAL_ETH_EnableJumboFrame(&heth); // 启用9000字节巨帧 ``` ### 五、调试要点 1. 使用网络分析仪捕获MAC层原始帧 2. 检查`ETH->MACMIIAR`寄存器的访问冲突 3. 监控DMA描述符的`ES`位检测帧错误 [^1]: 以太网DMA实现内存与外设数据交换 [^4]: STM32以太网DMA工作机制 [^5]: 嵌入式TCP/IP协议栈实现
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值