| 
 
新手上路 
 
	积分20金钱20 注册时间2018-5-2在线时间3 小时 | 
 
3金钱 
| 浮点数我用一个函数转化为无符号字符串类型了,代码如下****************************************************** 
 void sprint(float n,U8 *reChar,int zsize,int xsize,int flag)
 {
 int z,p,i=0,j=0;
 char a[11];
 //n=n+0.001;//+0.00001避免浮点数精度丢失,可根据你传感器输出实际数字位数修改,不要超出类型范围
 z=(int)n;
 p=(int)((n-z)*100);//取小数数字,最大1位小数 *10  2位*100 3位*1000 需要自行修改 你也可以自己写10次方函数利用xsize运算
 while(p/10!=0)
 {    a[i++]=p%10+'0';
 p=p/10;}
 a[i++]=p+'0';
 a[i++]='.';
 while(z/10!=0)
 {
 a[i++]=z%10+'0';
 z=z/10;
 }
 a[i++]=z+'0';
 //  a[i]=0;
 for(i=zsize+xsize-1;i>=0;i--)
 reChar[j++]=a[i];
 if(flag==1)
 reChar[j]=',';
 }
 
 
 **********************************
 发送设置如下
 /****************************************************************************************************/
 //函数:void SetTX_Mode(void)
 //功能:数据发送配置
 //****************************************************************************************************/
 void SetTX_Mode(void)
 {
 RF24L01_CE_0 ;
 
 SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);
 SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, RX_ADR_WIDTH);
 SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);
 SPI_RW_Reg(WRITE_REG + SETUP_RETR,0x1a);
 SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);
 SPI_RW_Reg(WRITE_REG + RF_CH, 0);
 SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH);
 
 // SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x0F);   //设置TX发射参数,0db增益,2Mbps,低噪声增益开启
 SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);   //设置发射速率为1MHZ,发射功率为最大值0dB
 
 SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);
 ms_delay(1);
 RF24L01_CE_1;
 
 }
 
 ****************************************
 电脑端用了一个转usb串口插在电脑上用串口调试助手读数据,调的时候如果发送源代码{0x0c,0xc9,0xcf,0xba,0xa3,0xb1,0xa6,0xc7,0xb6,0xb5,0xe7,0xd7,0xd3}电脑端就能接收,如果是我自己设置的常数浮点数转化之后的字符串就不能发送,真心不知道为什么。
 ***************************************************
 void nRF24L01_TxPacket(unsigned char  *tx_buf)//
 {
 RF24L01_CE_0 ;                        // StandBy I模式
 //SPI_RW_Reg(WRITE_REG + CONFIG, 0x7e);    // IRQ不显示,16位CRC,主发送
 SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // 装载接收端地址
 SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH);                 // 装载数据
 SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);                    // IRQ收发完成中断响应,16位CRC,主发送
 
 //SPI_RW_Reg(FLUSH_TX, 0XFF);
 //SPI_RW_Reg(WRITE_REG+STATUS,0XFF);   // 清状态寄存器
 RF24L01_CE_1;                 //置高CE,激发数据发送
 ms_delay(1);
 }
 
 *****************************
 
 | 
 |