#ifndef _PRO_INTERFACE_H
#define _PRO_INTERFACE_H

#include "stm32f10x.h"

/*
//使用SPI1
#define NRF_SPI						SPI1
#define NRF_SPI_CLK					RCC_APB2Periph_SPI1

#define NRF_SPI_SCK_PIN				GPIO_Pin_5             //PA.05
#define NRF_SPI_SCK_GPIO_PORT		GPIOA                  //GPIOA
#define NRF_SPI_SCK_GPIO_CLK		RCC_APB2Periph_GPIOA

#define NRF_SPI_MISO_PIN			GPIO_Pin_6             //PA.06
#define NRF_SPI_MISO_GPIO_PORT		GPIOA                  //GPIOA
#define NRF_SPI_MISO_GPIO_CLK		RCC_APB2Periph_GPIOA

#define NRF_SPI_MOSI_PIN			GPIO_Pin_7             //PA.07
#define NRF_SPI_MOSI_GPIO_PORT		GPIOA                  //GPIOA
#define NRF_SPI_MOSI_GPIO_CLK		RCC_APB2Periph_GPIOA

#define NRF_CSN_PIN					GPIO_Pin_4             //PA.4 
#define NRF_CSN_GPIO_PORT			GPIOA                  //GPIOA
#define NRF_CSN_GPIO_CLK			RCC_APB2Periph_GPIOA

#define NRF_CE_PIN					GPIO_Pin_1             //PA.1 
#define NRF_CE_GPIO_PORT			GPIOA                  //GPIOA
#define NRF_CE_GPIO_CLK				RCC_APB2Periph_GPIOA

#define NRF_IRQ_PIN					GPIO_Pin_8             //PA.8 
#define NRF_IRQ_EXTI_LINE			EXTI_Line8
#define NRF_IRQ_EXTI_PIN_SOURCE		GPIO_PinSource8
#define NRF_IRQ_GPIO_PORT			GPIOA                  //GPIOA
#define NRF_IRQ_GPIO_CLK			RCC_APB2Periph_GPIOA
#define NRF_IRQ_EXTI_PORT_SOURCE	GPIO_PortSourceGPIOA
#define NRF_IRQ_EXTI_IRQn			EXTI9_5_IRQn

#define NRF_CSN_LOW()	GPIO_ResetBits(NRF_CSN_GPIO_PORT, NRF_CSN_PIN)//片选置低选中
#define NRF_CSN_HIGH()	GPIO_SetBits(NRF_CSN_GPIO_PORT, NRF_CSN_PIN)//片选置高不选中
#define NRF_CE_LOW()	GPIO_ResetBits(NRF_CE_GPIO_PORT, NRF_CE_PIN)//
#define NRF_CE_HIGH()	GPIO_SetBits(NRF_CE_GPIO_PORT, NRF_CE_PIN)//
*/

//使用SPI2
#define NRF_SPI						SPI2
#define NRF_SPI_CLK					RCC_APB1Periph_SPI2

#define NRF_SPI_SCK_PIN				GPIO_Pin_13				//PB.13
#define NRF_SPI_SCK_GPIO_PORT		GPIOB					//GPIOB
#define NRF_SPI_SCK_GPIO_CLK		RCC_APB2Periph_GPIOB

#define NRF_SPI_MISO_PIN			GPIO_Pin_14				//PB.14
#define NRF_SPI_MISO_GPIO_PORT		GPIOB					//GPIOB
#define NRF_SPI_MISO_GPIO_CLK		RCC_APB2Periph_GPIOB

#define NRF_SPI_MOSI_PIN			GPIO_Pin_15             //PA.15
#define NRF_SPI_MOSI_GPIO_PORT		GPIOB					//GPIOA
#define NRF_SPI_MOSI_GPIO_CLK		RCC_APB2Periph_GPIOB

#define NRF_CSN_PIN					GPIO_Pin_11				//PA.11 
#define NRF_CSN_GPIO_PORT			GPIOA					//GPIOA
#define NRF_CSN_GPIO_CLK			RCC_APB2Periph_GPIOA

#define NRF_CE_PIN					GPIO_Pin_12				//PA.12 
#define NRF_CE_GPIO_PORT			GPIOA					//GPIOA
#define NRF_CE_GPIO_CLK				RCC_APB2Periph_GPIOA

#define NRF_IRQ_PIN					GPIO_Pin_8				//PA.8 
#define NRF_IRQ_EXTI_LINE			EXTI_Line8
#define NRF_IRQ_EXTI_PIN_SOURCE		GPIO_PinSource8
#define NRF_IRQ_GPIO_PORT			GPIOA					//GPIOA
#define NRF_IRQ_GPIO_CLK			RCC_APB2Periph_GPIOA
#define NRF_IRQ_EXTI_PORT_SOURCE	GPIO_PortSourceGPIOA
#define NRF_IRQ_EXTI_IRQn			EXTI9_5_IRQn

//24L01操作线
#define NRF_CSN  PAout(11) //SPI片选信号
#define NRF_CE   PAout(12) //24L01片选信号
#define NRF_IRQ  PAin(8)   //IRQ主机数据输入

void NRF_GPIO_Init(void);
void NRF_EXTIX_Init(void);
void SPI_SetSpeed(const u8 SPI_BaudRatePrescaler);
u8 SPI_ReadWriteByte(const u8 TxData);
u8 NRF_ReadReg(const u8 reg);//读寄存器
u8 NRF_WriteReg(const u8 reg,const  u8 value);//写寄存器
u8 NRF_ReadBuf(const u8 reg, u8 *pBuf,const  u8 len);//读数据区
u8 NRF_WriteBuf(const u8 reg,const  u8 *pBuf,const  u8 len);//写数据区

extern volatile u8 TranFinish_flag,Timeout;

#endif
