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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版