你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

NRF24L01宏定义与实际值不一致

[复制链接]
at89 提问时间:2015-3-27 16:47 /
stm32f103ze的板子,查看发送失败的错误代码时发现与宏定义的不一致,宏定义如下
#define MAX_TX      0x10  
#define TX_OK       0x20  
#define RX_OK       0x40  
但是我串口读出来的对应十六进制数据是
TX_OK=40,MAX_TX=20,RX_OK =100
诸位可曾遇到过宏定义的不对应的情况。


收藏 评论23 发布时间:2015-3-27 16:47

举报

23个回答
at89 回答时间:2015-3-28 11:35:25
安 发表于 2015-3-28 09:55
应该不会的,楼主发一下工程或者数据传输的代码。

因为用到了无线模块数据的发送和接收,所以增加了一个对发送状态的定义,代码都是很简单的串口发送和SPI通信,没有什么问题啊。而且我调试下来发下判断条件为0x20或者是定义的TX_OK都可以通过
while(1)
                {                                                              
                       
                        printf("TX_Mode,Wait!!\n");
               
                        TX_Mode();
                       
                        if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
                        {
                                printf("Sended DATA:\n");       
                                for(i=0;i<33;i++)
                                printf("%c",tmp_buf);

                                printf("Send success\n");
                                return 0;
                        }else
                        {
                                printf("Send Failed!!\n");
                                printf("EORROR CODE=%o\n",NRF24L01_TxPacket(tmp_buf));                       
                                printf("TX_OK=%o,MAX_TX=%o,RX_OK =%o\n\n",TX_OK,MAX_TX,RX_OK );
                                return 0;
                        }


之前的宏定义如下
#define MAX_TX          0x10
#define TX_OK           0x20  
#define RX_OK           0x40
at89 回答时间:2015-3-30 12:45:46
wambob 发表于 2015-3-28 19:54
printf("%c",tmp_buf);  printf("EORROR CODE=%o\n",NRF24L01_TxPacket(tmp_buf));                        ...

两种情况啦
printf("Sended DATA:\n");      
for(i=0;i<33;i++)
printf("%c",tmp_buf);
这个是在串口终端上输出无线传输的数据,之前定义了u8 tmp_buf[32];数据缓存区
下面那个是如果通信失败才会打出十六进制的错误代码,你看我宏定义的和输出的不一致哇
#define MAX_TX          0x10
#define TX_OK           0x20  
#define RX_OK           0x40

输出的十六进制是
  printf("TX_OK=%o,MAX_TX=%o,RX_OK =%o\n\n",TX_OK,MAX_TX,RX_OK );

TX_OK=40,MAX_TX=20,RX_OK =100
at89 回答时间:2015-3-30 12:42:50
安 发表于 2015-3-28 14:12
printf输出的数据是什么样的

printf("Sended DATA:\n");      
for(i=0;i<33;i++)
printf("%c",tmp_buf);
这个是在串口终端上输出无线传输的数据,之前定义了u8 tmp_buf[32];数据缓存区
下面那个是如果通信失败才会打出十六进制的错误代码,你看我宏定义的和输出的不一致哇
#define MAX_TX          0x10
#define TX_OK           0x20  
#define RX_OK           0x40

输出的十六进制是
  printf("TX_OK=%o,MAX_TX=%o,RX_OK =%o\n\n",TX_OK,MAX_TX,RX_OK );

TX_OK=40,MAX_TX=20,RX_OK =100
bit 回答时间:2015-3-27 18:01:01
靠 这都有啊
at89 回答时间:2015-3-27 18:13:56

啥,好奇怪的问题是吧,我也是醉了
左岸右岸 回答时间:2015-3-27 19:35:10
的确很奇怪
mark0668 回答时间:2015-3-28 00:11:06
这问题可大了……
木木鱼 回答时间:2015-3-28 08:42:35
不懂帮顶
废鱼 回答时间:2015-3-28 09:55:57
应该不会的,楼主发一下工程或者数据传输的代码。
废鱼 回答时间:2015-3-28 14:12:48
printf输出的数据是什么样的
废鱼 回答时间:2015-3-28 14:12:53
printf输出的数据是什么样的
kqh1120 回答时间:2015-3-28 14:59:50
5.gif 1.gif 哎。。我双机通信失败
nocoyou 回答时间:2015-3-28 19:26:33
不懂帮顶
wamcncn 回答时间:2015-3-28 19:52:32
帮顶了
wamcncn 回答时间:2015-3-28 19:54:36
printf("%c",tmp_buf);  printf("EORROR CODE=%o\n",NRF24L01_TxPacket(tmp_buf));                        
一会 %c,一会%o ,你要输出什么数据呢?

wyxy163@126.com 回答时间:2015-3-28 21:37:57
提示: 作者被禁止或删除 内容自动屏蔽
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版