ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

零散知识点

零散知识点 1、什么是BCD码BCD码就是用 4 位二进制表示 1位 十进制的 0~ 9十进制数字BCD 码 (4bit)00000100012001030011401005010160110701118100091001普通二进制25 000110010x19BCD 码25 001001010x25十进制 39 BCD0x39 →高4位3低4位9 纯二进制0x272、makefile中 VAR ? hello# 条件赋值只有VAR没定义才赋值hello1Makefile 内部提前定义同样会跳过?VAR : test #提前定义 VAR ? hello #不生效 all: echo $(VAR)2命令行外部传入变量覆盖make VARworld3、C 语言位域bit‑field语法struct { uint16_t hw_uv_dly_index: 4; //欠压延时配置档位 uint16_t hw_ov_dly_index: 4; //过压延时配置档位 uint16_t reserved: 8; //保留 } bits;变量名 : 数字这叫位域 (位段 bit‑field)。含义拆解hw_uv_dly_index:4只占用4 个 bit取值范围 0~15。用来存欠压延时档位。hw_ov_dly_index:4再占4 个 bit0~15过压延时档位。reserved:8占8 个 bit预留位以后扩展功能。总位数448 16bit刚好 1 个uint16_t2 字节。 三个变量挤在同一个 2 字节内存里面节省 Flash/RAM 空间BMS 配置参数大量用这种写法。内存排布小端芯片 HC32L072bit15‑bit8 │ bit7‑bit4 │ bit3‑bit0 reserved(8) │hw_ov_dly_index(4)│hw_uv_dly_index(4)使用方式直接点访问成员bits.hw_uv_dly_index 2; uint8_t val bits.hw_ov_dly_index;位域不能取bits.hw_uv_dly_index地址因为它不是完整字节没有内存地址。和普通结构体对比普通写法每个成员至少占 1 字节uint8_t hw_uv_dly_index; uint8_t hw_ov_dly_index; uint8_t reserved;一共占用 3 字节位域版本只占用2 字节大量参数表时节约内存。4、SYSCTRL、SYSCLK、SysTick完整逻辑链条SYSCTRL寄存器 → 配置产生 SYSCLK时钟信号 → SYSCLK 供给 CPU同时可以作为 SysTick 定时器的时钟源程序员操作MOP_SYSCTRL的各个寄存器选择晶振源HSI 内部 RC / HSE 外部晶振配置 PLL 倍频、分频参数 → 硬件输出SYSCLKCPU 内核就以这个频率运行。SysTick 定时器需要时钟源才能计数SysTick 的时钟来源二选一选项 1直接取自SYSCLK选项 2SYSCLK 再 8 分频之后给 SysTickSysTick 跑多快取决于 SYSCLK 的频率。例SYSCLK48MHzSysTick 选不分频那么 SysTick 每 1/48 μs 计数减 1。
返回列表