完善资料让更多小伙伴认识你,还能领取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为系统电压故障标志, |
|
|
|
只有小组成员才能发言,加入小组>>
809 浏览 0 评论
1161 浏览 1 评论
2535 浏览 5 评论
2871 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2719 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1100浏览 3评论
198浏览 2评论
464浏览 2评论
378浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
459浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 04:54 , Processed in 0.915587 second(s), Total 48, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号