新手入门
- 积分
- 16
- 金钱
- 16
- 注册时间
- 2018-9-28
- 在线时间
- 4 小时
|
程序如下:
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "spi.h"
#include "key.h"
#include "24l01.h"
#include <stdlib.h>
#include "receive.h"
#include "misc.h"
//要写入到W25Q16的字符串数组
const u8 TEXT_Buffer[]={"Explorer STM32F4 SPI TEST"};
#define SIZE sizeof(TEXT_Buffer)
int main(void)
{
u8 key,mode;
u16 t=0;
u8 tmp_buf[33];
int decode;
decode=0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
delay_init(168); //初始化延时函数
uart_init(115200); //初始化串口波特率为115200
LED_Init(); //初始化LED
KEY_Init(); //按键初始化
NRF24L01_Init(); //初始化NRF24L01
{
LED1=!LED1;
delay_ms(1000);
}
while(1)
{
key=KEY_Scan(0);
if(key==KEY0_PRES)
{
mode=0;
break;
}else if(key==KEY1_PRES)
{
mode=1;
break;
}
t++;
if(t==100)LCD_ShowString(10,150,230,16,16,"KEY0:RX_Mode KEY1:TX_Mode"); //闪烁显示提示信息
if(t==200)
{
LCD_Fill(10,150,230,150+16,WHITE);
t=0;
}
delay_ms(5);
}
LCD_Fill(10,150,240,166,WHITE);//清空上面的显示
POINT_COLOR=BLUE;//设置字体为蓝色
if(mode==0)//RX模式
{
LCD_ShowString(30,150,200,16,16,"NRF24L01 RX_Mode");
LCD_ShowString(30,170,200,16,16,"Received DATA:");
NRF24L01_RX_Mode();
while(1)
{
if(NRF24L01_RxPacket(tmp_buf)==0)//一旦接收到信息,则显示出来.
{
tmp_buf[32]=0;//加入字符串结束符
LED0=!LED0;
}
decode=myatoi(tmp_buf);
switch(decode)
{
case 111111ED1=!LED1;break;
case 222222ED1=!LED1;break;
}
}
}
}
myatoi()是字符串转换成整型
int myatoi(const u8* pstr)
{
int Ret_Integer = 0;
int Integer_sign = 1;
//判断指针是否为空
if(pstr == NULL)
{
printf("ointer is NULL\n");
return 0;
}
//跳过前面的空格字符
while(isspace(*pstr) == 0)
{
pstr++;
}
//判断正负号
//如果是正号,指针指向下一个字符
//如果是符号,把符号标记为Integer_sign置-1,然后再把指针指向下一个字符
if(*pstr == '-')
{
Integer_sign = -1;
}
if(*pstr == '-' || *pstr == '+')
{
pstr++;
}
//把数字字符串逐个转换成整数,并把最后转换好的整数赋给Ret_Integer
while(*pstr >= '0' && *pstr <= '9')
{
Ret_Integer = Ret_Integer * 10 + *pstr - '0';
pstr++;
}
Ret_Integer = Integer_sign * Ret_Integer;
return Ret_Integer;
}
收到的数据一直识别不了,执行不了相应的程序
|
|