原子哥,spi的无线发送和接收困扰我很长时间了,不知道从何处下手,我是想通过串口观看数据是否正确,可不知道怎么修改,我还想问你一下,无线模块是不是发送和接收都必须得下载程序,如果只是发送下载程序可以吗?我用的发射模块程序下载不进去?
发送部分:
int main(void)
{
u8 a;
int i=0;
//long double M_Old,M_New,differ=0;
u8 char2[30]="Transmit Succeed!\n";
u8 char3[30]="Transmit Fail!\n";
//u8 char5[30]="Data no change!\n";
u8 tmp_buf[8]; //?¨????×é
delay_init(); //???±??????????
NVIC_Configuration();
uart_init(9600); //?®??????????9600
LED_Init(); //????????LED??????????????
// LCD_Init(); //??????LCD
KEY_Init(); //°??ü??????
NRF24L01_Init(); //??????NRF24L01
// POINT_COLOR=RED;//?è??×??????ì??
// LCD_ShowString(60,50,200,16,16,"Mini STM32");
// LCD_ShowString(60,70,200,16,16,"NRF24L01 TEST");
// LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
// LCD_ShowString(60,110,200,16,16,"2014/3/12");
while(NRF24L01_Check()) //?ì?éNRF24L01??·?????.
{
delay_ms(100);
}
// LCD_ShowString(60,130,200,16,16,"NRF24L01 OK");
// LCD_Fill(10,150,240,166,WHITE);//??????????????
// POINT_COLOR=BLUE;//?è??×?????????
// LCD_ShowString(60,150,200,16,16,"NRF24L01 RX_Mode");
// LCD_ShowString(60,170,200,16,16,"Received DATA:");
NRF24L01_TX_Mode();
while(1)
{
if(NRF24L01_TxPacket(tmp_buf)==TX_OK)//???©??????????,?ò????????.
{
delay_ms(500);
for(i=0;char2!='\0';i++) //??????,?????"Transmit Succeed!\n"
{
USART_SendData(USART1, char2);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
}
}
else
{
delay_ms(500);
for(i=0;char3!='\0';i++)//??????,//??????,?????"Transmit Succeed!\n"
{
USART_SendData(USART1, char3);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
}
}
a=(tmp_buf[0]-'0')*100+(tmp_buf[1]-'0')*10+(tmp_buf[2]-'0');
a=a;
LED0=!LED0;
LED1=!LED1;
}
}
接收部分:
while(NRF24L01_Check()) //?ì?éNRF24L01??·?????.
{
delay_ms(100);
}
// LCD_ShowString(60,130,200,16,16,"NRF24L01 OK");
// LCD_Fill(10,150,240,166,WHITE);//??????????????
// POINT_COLOR=BLUE;//?è??×?????????
// LCD_ShowString(60,150,200,16,16,"NRF24L01 RX_Mode");
// LCD_ShowString(60,170,200,16,16,"Received DATA:");
NRF24L01_RX_Mode();
while(1)
{
if(NRF24L01_RxPacket(tmp_buf)==0)//???©??????????,?ò????????.
{
unsigned char temp;
if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==SET)
{
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
temp =USART_ReceiveData(USART1);
Uart1_PutChar(temp);
a=(tmp_buf[0]-'0')*100+(tmp_buf[1]-'0')*10+(tmp_buf[2]-'0');
a=a;
LED0=!LED0;
LED1=!LED1;
}
}
}
}
其他都一样,我还想问你一个问题,我是串口用接收的端口(COM口)不知道可以吗?还请原子哥多指教,谢谢!!!
|