基于MSP430F149单片机的nRF24L01无线通信程序
基于MSP430F149单片机的nRF24L01无线通信程序.zip
(37.97 KB)
/*******************************************************
-------------------------------------------------------
通信格式:N.8.1, 9600
无校验,8个数据位,1个停止位,波特率9600
------------------------------------------------------
*******************************************************/
#include <msp430x14x.h>
#include "USART.H"
#include "nRF24L01.H"
/*******************************************************
---------------------延时函数--------------------------
*******************************************************/
void Delay(unsigned int t)
{
while(t--);
}
/*******************************************************
函数名称:Init_Sys
功 能:系统时钟初始化
参 数:无
返回值 :无
*******************************************************/
void Init_Sys(void)
{
unsigned char i;
//切换为XT2:
BCSCTL1&=~XT2OFF;//启动XT2时钟
do
{
IFG1 &= ~OFIFG; //清除振荡失效标志
for (i = 0xFF; i > 0; i--); //延时等待XT2起振
}
while ((IFG1 & OFIFG)); //判断XT2是否起振
BCSCTL2 |= SELM_2; //MCLK选择XT2时钟源
BCSCTL2 |= SELS; //SMCLK选择XT2时钟
}
/***********************************************************
--------------------------主函数----------------------------
***********************************************************/
void main( void )
{
unsigned char RX_FLOAG=0;
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗
Init_Sys(); //系统时钟初始化
init_io(); //I/O初始化
Init_Usart(); //串口初始化
Putsting("串口初始化OK ");
Mode(); //发送模式与接收模式的公共配置放入一个函数先配置一下
while(NRF24L01_Check()); //检测无线模块是否存在
Putsting("nRF24L01初始化OK\n\n");
Delay(1000);
RX_Mode(); //无线模块正常处于接收状态
while(1)
{
if(floag)
{
floag=0;
TX_Mode();
NRF24L01_TxPacket(TX_TAB);
RX_Mode();
}
else
{
RX_FLOAG=NRF24L01_RxPacket(RX_TAB);
if(RX_FLOAG==0)
{
Putchar(RX_TAB[0]);
}
}
}
}
|