完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
在嵌入式程序设计中,当系统检测到出现某种故障时,需要设置相应的故障标志。故障标志为0表示无故障,故障标志为1表示有故障。所有的故障标志合起来表示系统整体的故障状态。如何既能表示系统整体的故障状态,又能单独设置和表示某种故障标志呢?
方法一. 如果用一个8位的变量表示一个故障标志显然有些浪费。我们希望用变量的一位表示一种故障标志,用变量整体的值表示系统是否有故障。 例如:unsigned char ucError; //定义8位的故障标志字ucError //bit0 =0: 系统温度正常 bit0: 温度过高标志 //bit0 =1: 系统温度过高 //bit1 =0: 系统电压正常 bit1: 电压过高标志 //bit0 =1: 系统电压过高 ....... ucError=0,说明系统无故障;ucError!=0,说明系统有故障。 如果想单独设置bit1(电压过高标志)为1,可用0b00000010 | ucError; 为了单独表示某个故障标志位,可用宏定义: #define TempErrorFlag (0b00000001&ucError) //定义TempErrorFlag为温度故障标志 #define VoltErrorFlag ((0b00000010&ucError)>>1) //定义VoltErrorFlag为电压故障标志 方法二. 利用c语言中的union和位域。 union ErrorState { struct { unsigned char ucTempErrorFlag :1; unsigned char ucVoltErrorFlag :1; ........ } unsigned char ucErrorWord; }; ErrorState myErrorState; myErrorState.ucErrorWord为系统整体的故障状态字,myErrorState.ucTempErrorFlag为系统温度故障标志,myErrorState.ucVoltErrorFlag为系统电压故障标志, |
|
|
|
只有小组成员才能发言,加入小组>>
692 浏览 0 评论
1106 浏览 1 评论
2473 浏览 5 评论
2808 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2646 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
653浏览 9评论
649浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
781浏览 6评论
628浏览 5评论
668浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 22:46 , Processed in 1.059388 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号