当前位置: 首页 > news >正文

初始化联合(union)

typedef struct { uint32 bit0:1; // 表示该字段只占用 1 位 uint32 bit1:1; uint32 bit2:1; uint32 bit3:1; uint32 bit4:1; uint32 bit5:1; uint32 bit6:1; uint32 bit7:1; uint32 bit8:1; uint32 bit9:1; uint32 bit10:1; uint32 bit11:1; uint32 bit12:1; uint32 bit13:1; uint32 bit14:1; uint32 bit15:1; uint32 bit16:1; // 表示该字段只占用 1 位 uint32 bit17:1; uint32 bit18:1; uint32 bit19:1; uint32 bit20:1; uint32 bit21:1; uint32 bit22:1; uint32 bit23:1; uint32 bit24:1; uint32 bit25:1; uint32 bit26:1; uint32 bit27:1; uint32 bit28:1; uint32 bit29:1; uint32 bit30:1; uint32 bit31:1; }ELIC_32BIT_BITS; typedef union ELIC_32BIT { uint32 all; ELIC_32BIT_BITS bits; }ELIC_32BIT_STR; // DO typedef enum { DO_DEFAULT = 0, DO_HIGH = 1, DO_LOW = 2 } DO_CTRL_E; // ADC typedef enum { ADC_DEFAULT = 0, ADC_NTC_4CH = 1, ADC_LIGHT_1CH = 2 } ADC_CTRL_E; // DAC typedef enum { DAC_DEFAULT = 0, DAC_1_25V = 1, DAC_2_5V = 2 } DAC_CTRL_E; // PWM typedef enum { PWM_DEFAULT = 0, PWM_FAN_1K_50 = 1, PWM_FAN_2K_70 = 2, PWM_LIGHT_3K_50 = 3, PWM_LIGHT_5K_70 = 4, PWM_RED_20K_50 = 5, PWM_RED_20K_70 = 6 } PWM_CTRL_E; // PD typedef enum { PD_DEFAULT = 0, PD_BLOCK = 1, PD_UNBLOCK = 2 } PD_CTRL_E; typedef struct { uint32_t do_ctrl : 2; // bit0~1 DO输出(1=高,2=低) uint32_t di_ctrl : 2; // bit2~3 DI检测(1=高,2=低) uint32_t adc_ctrl : 2; // bit4~5 ADC功能选择 uint32_t dac_ctrl : 2; // bit6~7 DAC输出 uint32_t pwm_ctrl : 3; // bit8~10 PWM功能 uint32_t pd_ctrl : 2; // bit11~12 PD测试 uint32_t reserved : 19; // bit13~31 预留 } DEVICE_CTRL_BITS; typedef union { uint32_t all; DEVICE_CTRL_BITS bits; } DEVICE_CTRL_U; /* 测试控制寄存器 */ typedef struct { uint32_t do_test : 2; // bit0~1 uint32_t di_test : 2; // bit2~3 uint32_t adc_test : 2; // bit4~5 uint32_t dac_test : 2; // bit6~7 uint32_t pwm_test : 3; // bit8~10 uint32_t pd_test : 2; // bit11~12 uint32_t ttl_test : 1; // bit13 uint32_t iic_test : 1; // bit14 uint32_t rtc_test : 1; // bit15 uint32_t reserved : 16; // bit16~31 预留 } TEST_STATUS_BITS; typedef union { uint32_t all; TEST_STATUS_BITS bits; } TEST_STATUS_STR; /* 当前测试状态 */ typedef struct { ELIC_32BIT_STR u32_device_cmd_hand; // 手动测试操作指令 ELIC_32BIT_STR u32_device_sts_hand; // 手持测试操作状态 DEVICE_CTRL_U u32_device_ctrl; // 测试控制寄存器 TEST_STATUS_STR u32_device_test_sts; // 当前测试状态 } DEVICE_TEST_OPRATION_T; // 测试结构体 ATTR_PLACE_AT_NONCACHEABLE_INIT_WITH_ALIGNMENT(4) DEVICE_TEST_OPRATION_T device_test_operation = {0}; // 显式写: ATTR_PLACE_AT_NONCACHEABLE_INIT_WITH_ALIGNMENT(4) DEVICE_TEST_OPRATION_T device_test_operation = { .u32_device_cmd_hand = {.all = 0}, .u32_device_sts_hand = {.all = 0}, .u32_device_ctrl = {.all = 0}, .u32_device_test_sts = {.all = 0} }; // “嵌套成员指定初始化”写法(C99支持) ATTR_PLACE_AT_NONCACHEABLE_INIT_WITH_ALIGNMENT(4) DEVICE_TEST_OPRATION_T device_test_operation = { .u32_device_cmd_hand.all = 0, .u32_device_sts_hand.all = 0, .u32_device_ctrl.all = 0, .u32_device_test_sts.all = 0 };
http://www.cnnetsun.cn/news/2036270.html

相关文章:

  • 030、开源与闭源模型微调生态对比:选择最适合的基座模型
  • Unity 2021.3.8f1 WebGL打包发布到Nginx服务器的完整避坑指南(含Brotli/Gzip配置)
  • 计算机毕业设计:Python股票智能分析与LSTM股价预测平台 Flask框架 LSTM Keras 数据分析 可视化 深度学习 大数据 爬虫(建议收藏)✅
  • 汽车诊断开发避坑指南:ISO14229协议中那些容易忽略的NRC响应规则(附实战代码片段)
  • Less如何优化CSS文件大小_利用压缩配置去除冗余样式
  • 海上目标检测数据集2051张VOC+YOLO
  • 用Python和OpenFAST模拟漂浮式风机:从JONSWAP波浪谱到Morison方程实战
  • 如何解锁8大网盘全速下载:3分钟掌握网盘直链下载助手的完整指南
  • RadiantViewer64bit试用期重置技巧:30天后如何继续免费使用(附详细步骤)
  • 如何快速上手OpenMV IDE:从零开始构建机器视觉项目
  • 从 0 到 1 构建供应链 AI Agent Harness Engineering:需求预测、库存优化与物流调度实战
  • 在Ubuntu 16.04上为全志A40i定制Android 7.1系统镜像:一次完整的构建环境搭建与编译之旅
  • EdgeRemover:彻底告别Windows系统中顽固的Microsoft Edge浏览器
  • 从System.Numerics.Tensors到Microsoft.ML.OnnxRuntime.Managed——.NET原生AI栈的5层性能断层分析(含各层CPU/GPU/内存瓶颈对照表)
  • 告别脚本!Win11 22H2新版WSL2静态IP配置全攻略(含DNS避坑)
  • 【限时技术快照】.NET 11.0.1 RTM补丁发布前最后验证:AI推理Pipeline在Windows/Linux/macOS M3三平台统一加速配置(含完整benchmark对比表)
  • Docker+CANoe+ROS2车载调试闭环构建,深度解析ISO 26262认证环境下的容器安全隔离方案
  • 统一内存编程与OpenACC在HPC中的高效应用
  • GPT-SoVITS语音克隆终极指南:5分钟打造专属AI语音助手
  • 告别Xshell和PuTTY!用FinalShell管理多台Linux服务器,这个国产工具真香
  • 5款最佳开源CMS测评(2026版)
  • 从Blender到Vulkan:用tiny_obj_loader在C++中高效解析OBJ模型(附完整代码)
  • 3分钟搞定Masa Mods中文界面:终极汉化解决方案
  • 智能素材分发:基于视觉模拟的多媒体私域自动化方案
  • 从“测不准”到“测得准”:高频PCB板材Dk/Df测试全流程实操解析(以Rogers 4350B为例)
  • Gemini长上下文窗口在教育领域的实战应用与优化
  • ESP8266 AT固件连接阿里云物联网平台:从烧录到上云的完整避坑指南
  • 拯救者笔记本终极优化指南:Lenovo Legion Toolkit 完整使用教程
  • 双检时代不焦虑:百考通AI论文助手,科学应对查重与AIGC双重挑战
  • 别再只把VRRP当主备了!实战配置华为/华三交换机实现负载分担,榨干设备性能