基于MSP430F149单片机的nRF24L01无线通信程序
- /*******************************************************
- -------------------------------------------------------
- 通信格式: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]);
- }
- }
-
- }
- }
|