最近在使用stm32单片机时,有一个需求,就是通过NRF24L01向电脑发送数据,学习了部分教程后,发现目前分享的程序里基本只能发送简单的16进制数,并不能发送汉字、字符、数字、浮点数等,于是在其基础上进行改进,目前可以实现发送汉字、字符、数字、浮点数,需要源码可无偿分享,联系1090632294@qq.com。
//发送数据字节函数
void NRF24L01_SendBuf(uint8_t *Buf)
{
W_CE(0);
NRF24L01_Write_Reg(nRF_WRITE_REG + CONFIG, 0x0E);
W_CE(1);
Delay_us(15);
NRF24L01_SendTxBuf(Buf);
W_CE(0);
NRF24L01_Write_Reg(nRF_WRITE_REG + CONFIG, 0x0F);
W_CE(1);
}
//发送字符函数
void NRF24L01_SendString(char *String)
{
uint8_t Psign[32] = {0};
uint8_t SendBuf[33] = {0};
uint8_t TSign = 0;
for (uint8_t i = 0; i < 32; i ++)
{
if (String[i] != 0)
{
Psign[TSign] = i;
TSign ++;
}
}
if (TSign > 0)
{
TSign --;
}
SendBuf[0] = Psign[TSign] + 1;
for (uint8_t i = 0; i < SendBuf[0]; i ++)
{
SendBuf[i + 1] = String[i];
}
NRF24L01_SendBuf(SendBuf);
}
//发送数字函数
void NRF24L01_SendNum(uint32_t Num)
{
uint8_t SendBuf[2] = {0};
SendBuf[0] = 1;
for (uint8_t i = 0; i < 1; i ++)
{
SendBuf[i + 1] = (Num / (uint32_t)pow(10, 0 - i) % 10+'0');
}
NRF24L01_SendBuf(SendBuf);
}
//发送浮点数函数
void NRF24L01_SendFloatNum(double Number,int FraLength)
{
uint32_t PowNum, IntNum, FraNum,a;
/*提取整数部分和小数部分*/
IntNum = Number; //直接赋值给整型变量,提取整数
a=IntNum;
Number -= IntNum; //将Number的整数减掉,防止之后将小数乘到整数时因数过大造成错误
PowNum = pow(10, FraLength); //根据指定小数的位数,确定乘数
FraNum = round(Number * PowNum); //将小数乘到整数,同时四舍五入,避免显示误差
IntNum += FraNum / PowNum; //若四舍五入造成了进位,则需要再加给整数
int datalength=0;
while(IntNum!=0)
{
datalength++;
IntNum=IntNum/10;//一共有几位整数
} //此时IntNum为0 需要重新给IntNum赋值
IntNum=a;
NRF24L01_SendNum(IntNum);//发送整数部分
Delay_ms(200);
NRF24L01_SendString(".");
Delay_ms(200);
NRF24L01_SendNum(FraNum);//发送小数部分
Delay_ms(200);
}
//发送中文函数
void NRF24L01_Printf(char *format, ...)
{
char String[100]; //定义字符数组
va_list arg; //定义可变参数列表数据类型的变量arg
va_start(arg, format); //从format开始,接收参数列表到arg变量
vsprintf(String, format, arg); //使用vsprintf打印格式化字符串和参数列表到字符数组中
va_end(arg); //结束变量arg
NRF24L01_SendString(String); //串口发送字符数组(字符串)
}
主程序
程序现象文章来源:https://www.toymoban.com/news/detail-846357.html
文章来源地址https://www.toymoban.com/news/detail-846357.html
到了这里,关于基于江科大STM32利用NRF24L01向电脑发送 汉字、字符、数字、浮点数。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!