位域结构体定义故障位

ROOF150823 2023-03-07 22:50:43

项目中有57个故障要处理,在故障模块中定义了位域结构体来管理故障位,因为用的是32位单片机,最长无符号整型只用到uint32_t,就设计了两个位域结构体来处理57个故障,用底32位和高32位来区分,代码如下,请教各路大神,有没有更好的设计方法?

typedef union
{
	struct
		{
			uint32_t hpc_com_err    		:1;
            uint32_t coresen_com_err        :1;
            uint32_t fan_com_err            :1;
			uint32_t freq_fault				:1;
			uint32_t hi_refg_pres			:1;
			uint32_t hi_temp_cmpdis			:1;
			uint32_t pres_trans_err			:1;
			uint32_t inwat_sens_err			:1;
			uint32_t outwat_sens_err		:1;
			uint32_t distemp_err    		:1;
			uint32_t suctemp_sens_err		:1;
			uint32_t evap1_coiltemp_err		:1;
			uint32_t evap2_coiltemp_err		:1;
			uint32_t evap1_temp_err			:1;
			uint32_t evap2_temp_err			:1;
			uint32_t lo_refg_pres			:1;
			uint32_t hi_wat_temp			:1;
			uint32_t ambient_temp_err		:1;
			uint32_t rsrv					:14;
			
		}LoFaultBit;
	
		uint32_t all;

	

}LoFaultFlag;

typedef union
{
	struct
	{
		uint32_t rsrv					:32;

	}HiFaultBit;
	
	uint32_t all;

}HiFaultFlag;

typedef struct
{
	LoFaultFlag lofaults;
	HiFaultFlag hifaults;
	
}FaultBits;

 

...全文
655 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
风正豪 2023-03-10
精选
  • 打赏
  • 举报
回复
5.00元
感谢分享,欢迎各位嵌入式攻城狮一起交流讨论。

312

社区成员

发帖
与我相关
我的任务
社区描述
专门交流C语言,嵌入式软件,PCB设计的社区。
嵌入式硬件单片机stm32 技术论坛(原bbs)
社区管理员
  • 风正豪
  • 智者知已应修善业
  • pg_hj
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

(1)在该社区可以在对应频道下交流问题。

(2)在问问题的时候,希望各位成员预先看一下这篇博客https://blog.csdn.net/qq_63922192/article/details/127984909

(3)社区欢迎技术博客,公众号,资源,招聘信息,最新行业信息分享。

(4)招聘信息和最新行业信息请在日常分享频道。

(5)技术博客,公众号,资源在知识分享频道。

(6)如若出现反党反国,黄赌毒等违法内容直接举报!禁止讨论敏感话题与时政问题!

 

试试用AI创作助手写篇文章吧