完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在移植freemodbus程序中,portevent.c中的程序如下:
static eMBEventType eQueuedEvent; static BOOL xEventInQueue; /* ----------------------- Start implementation -----------------------------*/ BOOL xMBPortEventInit( void ) { xEventInQueue = FALSE; return TRUE; } BOOL xMBPortEventPost( eMBEventType eEvent ) { xEventInQueue = TRUE; eQueuedEvent = eEvent; return TRUE; } BOOL xMBPortEventGet( eMBEventType * eEvent ) { BOOL xEventHappened = 0x00; xMBPortSerialPutByte(xEventInQueue); if( xEventInQueue == TRUE) { xMBPortSerialPutByte(0X09); *eEvent = eQueuedEvent; xEventInQueue = FALSE; xEventHappened = 0x01; } return xEventHappened; } 通过串口观测,xEventInQueue 为0x16,但是在程序赋值时,xEventInQueue 只是赋值了TRUE或FALSE,也就是1或0,但是为什么xEventInQueue 会是0x16,求大神帮下忙,谢谢 |
|
相关推荐
5个回答
|
|
|
|
表示本人看蒙蔽了!
|
|
|
|
简单的说就是:程序中BOOL的类型是char,定义TRUE为1,FALSE为0,定义BOOL型变量xEventInQueue,并执行xEventInQueue = FALSE;后,用串口发送xEventInQueue 的值,显示为0x03,但是发送的FALSE的值就是为1,不知道哪里的问题,请问您知道吗
|
|
|
|
定义成 bit类型试试看看
|
|
|
|
查查程序里TRUE和FALSE的具体定义的数值是多少,如果程序里没有具体定义TRUE和FALSE的数值,C语言好像是假如编译缺省定义FALSE为1的话,TRUE可能只是任何一个非1的数值
|
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2956 浏览 16 评论
3458 浏览 1 评论
8996 浏览 16 评论
4051 浏览 18 评论
1109浏览 3评论
572浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
568浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2301浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1858浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 02:36 , Processed in 1.205534 second(s), Total 91, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号