Преглед изворни кода

修复spi的myRadioSpi_rwByte超时操作i

dropLin пре 4 недеља
родитељ
комит
cf96a901f0
2 измењених фајлова са 302 додато и 295 уклоњено
  1. 7 0
      gitFocePushRemote.bat
  2. 295 295
      radio/myRadio_gpio.c

+ 7 - 0
gitFocePushRemote.bat

@@ -0,0 +1,7 @@
+@echo off  
+setlocal  
+  
+:: 假设你已经处于正确的Git仓库目录中  
+  
+:: 添加所有更改到暂存区  
+git push -f --set-upstream origin master:master

+ 295 - 295
radio/myRadio_gpio.c

@@ -1,295 +1,295 @@
-#include "myRadio_gpio.h"
-
-void BOARD_SPI_NSS_H(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_CSN, BOARD_PIN_SPI_CSN, BOARD_PIN_H);
-}
-void BOARD_SPI_NSS_L(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_CSN, BOARD_PIN_SPI_CSN, BOARD_PIN_L);
-}
-void BOARD_SPI_SCK_H(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_CLK, BOARD_PIN_SPI_CLK, BOARD_PIN_H);
-}
-void BOARD_SPI_SCK_L(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_CLK, BOARD_PIN_SPI_CLK, BOARD_PIN_L);
-}
-void BOARD_SPI_MISO_H(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_MISO, BOARD_PIN_SPI_MISO, BOARD_PIN_H);
-}
-void BOARD_SPI_MISO_L(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_MISO, BOARD_PIN_SPI_MISO, BOARD_PIN_L);
-}
-void BOARD_SPI_MOSI_H(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_MOSI, BOARD_PIN_SPI_MOSI, BOARD_PIN_H);
-}
-void BOARD_SPI_MOSI_L(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_MOSI, BOARD_PIN_SPI_MOSI, BOARD_PIN_L);
-}
-void BOARD_GPIOA_H(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_GPIOA, BOARD_PIN_SPI_GPIOA, BOARD_PIN_H);
-}
-void BOARD_GPIOA_L(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_GPIOA, BOARD_PIN_SPI_GPIOA, BOARD_PIN_L);
-}
-void BOARD_GPIOB_H(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_GPIOB, BOARD_PIN_SPI_GPIOB, BOARD_PIN_H);
-}
-void BOARD_GPIOB_L(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_GPIOB, BOARD_PIN_SPI_GPIOB, BOARD_PIN_L);
-}
-void BOARD_GPIOC_H(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_GPIOC, BOARD_PIN_SPI_GPIOC, BOARD_PIN_H);
-}
-void BOARD_GPIOC_L(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_GPIOC, BOARD_PIN_SPI_GPIOC, BOARD_PIN_L);
-}
-void BOARD_GPIOD_H(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_GPIOD, BOARD_PIN_SPI_GPIOD, BOARD_PIN_H);
-}
-void BOARD_GPIOD_L(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_GPIOD, BOARD_PIN_SPI_GPIOD, BOARD_PIN_L);
-}
-void BOARD_GPIOE_H(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_GPIOE, BOARD_PIN_SPI_GPIOE, BOARD_PIN_H);
-}
-void BOARD_GPIOE_L(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_GPIOE, BOARD_PIN_SPI_GPIOE, BOARD_PIN_L);
-}
-void BOARD_GPIOF_H(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_GPIOF, BOARD_PIN_SPI_GPIOF, BOARD_PIN_H);
-}
-void BOARD_GPIOF_L(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_GPIOF, BOARD_PIN_SPI_GPIOF, BOARD_PIN_L);
-}
-void BOARD_GPIOG_H(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_GPIOG, BOARD_PIN_SPI_GPIOG, BOARD_PIN_H);
-}
-void BOARD_GPIOG_L(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_GPIOG, BOARD_PIN_SPI_GPIOG, BOARD_PIN_L);
-}
-void BOARD_GPIOH_H(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_GPIOH, BOARD_PIN_SPI_GPIOH, BOARD_PIN_H);
-}
-void BOARD_GPIOH_L(void)
-{
-    GPIO_WriteBit(BOARD_PORT_SPI_GPIOH, BOARD_PIN_SPI_GPIOH, BOARD_PIN_L);
-}
-
-uint8_t READ_BOARD_SPI_MISO(void)
-{
-    return GPIO_ReadInputDataBit(BOARD_PORT_SPI_MISO, BOARD_PIN_SPI_MISO);
-}
-uint8_t READ_BOARD_GPIOA(void)
-{
-    return GPIO_ReadInputDataBit(BOARD_PORT_SPI_GPIOA, BOARD_PIN_SPI_GPIOA);
-}
-uint8_t READ_BOARD_GPIOB(void)
-{
-    return GPIO_ReadInputDataBit(BOARD_PORT_SPI_GPIOB, BOARD_PIN_SPI_GPIOB);
-}
-uint8_t READ_BOARD_GPIOC(void)
-{
-    return GPIO_ReadInputDataBit(BOARD_PORT_SPI_GPIOC, BOARD_PIN_SPI_GPIOC);
-}
-uint8_t READ_BOARD_GPIOD(void)
-{
-    return GPIO_ReadInputDataBit(BOARD_PORT_SPI_GPIOD, BOARD_PIN_SPI_GPIOD);
-}
-uint8_t READ_BOARD_GPIOE(void)
-{
-    return GPIO_ReadInputDataBit(BOARD_PORT_SPI_GPIOE, BOARD_PIN_SPI_GPIOE);
-}
-uint8_t READ_BOARD_GPIOF(void)
-{
-    return GPIO_ReadInputDataBit(BOARD_PORT_SPI_GPIOF, BOARD_PIN_SPI_GPIOF);
-}
-uint8_t READ_BOARD_GPIOG(void)
-{
-    return GPIO_ReadInputDataBit(BOARD_PORT_SPI_GPIOG, BOARD_PIN_SPI_GPIOG);
-}
-uint8_t READ_BOARD_GPIOH(void)
-{
-    return GPIO_ReadInputDataBit(BOARD_PORT_SPI_GPIOH, BOARD_PIN_SPI_GPIOH);
-}
-void myRadio_gpio_init(void)
-{
-    GPIO_InitTypeDef  GPIO_InitStructure;
-	SPI_InitTypeDef  SPI_InitStructure;
-    
-#if defined(SPI_HARD)    
-    //----------SPI1时钟使能
-    RCC_APB2PeriphClockCmd(	RCC_APB2Periph_SPI1, ENABLE );
-
-	GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_CLK | BOARD_PIN_SPI_MISO | BOARD_PIN_SPI_MOSI;
-	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出
-	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
-	GPIO_Init(BOARD_PORT_SPI_CLK, &GPIO_InitStructure);
-
- 	GPIO_SetBits(BOARD_PORT_SPI_CLK, BOARD_PIN_SPI_CLK | BOARD_PIN_SPI_MISO | BOARD_PIN_SPI_MOSI);
-    /*!< SPI configuration */
-    SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
-    SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
-    SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
-    SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
-    SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
-    SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
-    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;
-
-    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
-    SPI_InitStructure.SPI_CRCPolynomial = 7;
-    SPI_Init(SPI1, &SPI_InitStructure);
-
-    /*!< Enable the SPI1  */
-    SPI_Cmd(SPI1, ENABLE);
-#else
-
-    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_MOSI;           
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
-    GPIO_Init(BOARD_PORT_SPI_MOSI, &GPIO_InitStructure);
-    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_MISO;           
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;     
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
-    GPIO_Init(BOARD_PORT_SPI_MISO, &GPIO_InitStructure);
-    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_CLK;            
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
-    GPIO_Init(BOARD_PORT_SPI_CLK, &GPIO_InitStructure);
-#endif
-    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_CSN;            
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
-    GPIO_Init(BOARD_PORT_SPI_CSN, &GPIO_InitStructure);
-
-    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_GPIOA;         
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
-    GPIO_Init(BOARD_PORT_SPI_GPIOA, &GPIO_InitStructure);
-    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_GPIOB;         
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;      
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
-    GPIO_Init(BOARD_PORT_SPI_GPIOB, &GPIO_InitStructure);
-    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_GPIOC;         
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;      
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
-    GPIO_Init(BOARD_PORT_SPI_GPIOC, &GPIO_InitStructure);
-    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_GPIOD;         
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;      
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
-    GPIO_Init(BOARD_PORT_SPI_GPIOD, &GPIO_InitStructure);
-    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_GPIOE;         
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;      
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
-    GPIO_Init(BOARD_PORT_SPI_GPIOE, &GPIO_InitStructure);
-    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_GPIOF;
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
-    GPIO_Init(BOARD_PORT_SPI_GPIOF, &GPIO_InitStructure);
-    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_GPIOG;
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
-    GPIO_Init(BOARD_PORT_SPI_GPIOG, &GPIO_InitStructure);
-    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_GPIOH;
-    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
-    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
-    GPIO_Init(BOARD_PORT_SPI_GPIOH, &GPIO_InitStructure);
-
-    BOARD_SPI_NSS_H();
-}
-uint8_t SpiReadWrite(uint8_t byteToWrite)
-{
-    uint8_t i, temp;
-    temp = 0;   
-    __set_PRIMASK(1);   //全局中断关闭
-#if defined(SPI_HARD)
-	while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET) //检查指定的SPI标志位设置与否:发送缓存空标志位
-    {
-        i++;
-        if(i > 200)return 0;
-    }			  
-	SPI_I2S_SendData(SPI1, byteToWrite); //通过外设SPIx发送一个数据
-	i=0;
-
-	while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET)//检查指定的SPI标志位设置与否:接受缓存非空标志位
-    {
-        i++;
-        if(i > 200)return 0;
-    }
-    /*!< Return the byte read from the SPI bus */
-    temp = SPI_I2S_ReceiveData(SPI1);
-#else
-    BOARD_SPI_SCK_L();
-    for(i = 0; i < 8; i ++)
-    {
-        if(byteToWrite & 0x80)
-        {
-          //SpiSetMosiHigh();
-          BOARD_SPI_MOSI_H();
-        }
-        else
-        {
-          //SpiSetMosiLow();
-          BOARD_SPI_MOSI_L();
-        } 
-
-        byteToWrite <<= 1;
-
-        //SpiSetSckHigh(); 
-        BOARD_SPI_SCK_H();
-        temp <<= 1;
-        if(READ_BOARD_SPI_MISO())
-        {
-          temp ++; 
-        }
-        //SpiSetSckLow();
-        BOARD_SPI_SCK_L();
-    }
-#endif
-    __set_PRIMASK(0);   //全局中断打开
-	return temp;
-}
-
-void SpiWriteData(uint8_t byteCount, uint8_t* pData)
-{
-  uint8_t i;
-  
-  for(i = 0; i < byteCount; i++)
-  {
-    SpiReadWrite(*pData);
-    pData ++;
-  }
-}
-
-void SpiReadData(uint8_t byteCount, uint8_t* pData)
-{
-  uint8_t i;
-  
-  for(i = 0; i < byteCount; i++)
-  {
-    *pData = SpiReadWrite(0xFF);
-    pData ++;
-  }
-}
-
+#include "myRadio_gpio.h"
+
+void BOARD_SPI_NSS_H(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_CSN, BOARD_PIN_SPI_CSN, BOARD_PIN_H);
+}
+void BOARD_SPI_NSS_L(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_CSN, BOARD_PIN_SPI_CSN, BOARD_PIN_L);
+}
+void BOARD_SPI_SCK_H(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_CLK, BOARD_PIN_SPI_CLK, BOARD_PIN_H);
+}
+void BOARD_SPI_SCK_L(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_CLK, BOARD_PIN_SPI_CLK, BOARD_PIN_L);
+}
+void BOARD_SPI_MISO_H(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_MISO, BOARD_PIN_SPI_MISO, BOARD_PIN_H);
+}
+void BOARD_SPI_MISO_L(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_MISO, BOARD_PIN_SPI_MISO, BOARD_PIN_L);
+}
+void BOARD_SPI_MOSI_H(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_MOSI, BOARD_PIN_SPI_MOSI, BOARD_PIN_H);
+}
+void BOARD_SPI_MOSI_L(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_MOSI, BOARD_PIN_SPI_MOSI, BOARD_PIN_L);
+}
+void BOARD_GPIOA_H(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_GPIOA, BOARD_PIN_SPI_GPIOA, BOARD_PIN_H);
+}
+void BOARD_GPIOA_L(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_GPIOA, BOARD_PIN_SPI_GPIOA, BOARD_PIN_L);
+}
+void BOARD_GPIOB_H(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_GPIOB, BOARD_PIN_SPI_GPIOB, BOARD_PIN_H);
+}
+void BOARD_GPIOB_L(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_GPIOB, BOARD_PIN_SPI_GPIOB, BOARD_PIN_L);
+}
+void BOARD_GPIOC_H(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_GPIOC, BOARD_PIN_SPI_GPIOC, BOARD_PIN_H);
+}
+void BOARD_GPIOC_L(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_GPIOC, BOARD_PIN_SPI_GPIOC, BOARD_PIN_L);
+}
+void BOARD_GPIOD_H(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_GPIOD, BOARD_PIN_SPI_GPIOD, BOARD_PIN_H);
+}
+void BOARD_GPIOD_L(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_GPIOD, BOARD_PIN_SPI_GPIOD, BOARD_PIN_L);
+}
+void BOARD_GPIOE_H(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_GPIOE, BOARD_PIN_SPI_GPIOE, BOARD_PIN_H);
+}
+void BOARD_GPIOE_L(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_GPIOE, BOARD_PIN_SPI_GPIOE, BOARD_PIN_L);
+}
+void BOARD_GPIOF_H(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_GPIOF, BOARD_PIN_SPI_GPIOF, BOARD_PIN_H);
+}
+void BOARD_GPIOF_L(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_GPIOF, BOARD_PIN_SPI_GPIOF, BOARD_PIN_L);
+}
+void BOARD_GPIOG_H(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_GPIOG, BOARD_PIN_SPI_GPIOG, BOARD_PIN_H);
+}
+void BOARD_GPIOG_L(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_GPIOG, BOARD_PIN_SPI_GPIOG, BOARD_PIN_L);
+}
+void BOARD_GPIOH_H(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_GPIOH, BOARD_PIN_SPI_GPIOH, BOARD_PIN_H);
+}
+void BOARD_GPIOH_L(void)
+{
+    GPIO_WriteBit(BOARD_PORT_SPI_GPIOH, BOARD_PIN_SPI_GPIOH, BOARD_PIN_L);
+}
+
+uint8_t READ_BOARD_SPI_MISO(void)
+{
+    return GPIO_ReadInputDataBit(BOARD_PORT_SPI_MISO, BOARD_PIN_SPI_MISO);
+}
+uint8_t READ_BOARD_GPIOA(void)
+{
+    return GPIO_ReadInputDataBit(BOARD_PORT_SPI_GPIOA, BOARD_PIN_SPI_GPIOA);
+}
+uint8_t READ_BOARD_GPIOB(void)
+{
+    return GPIO_ReadInputDataBit(BOARD_PORT_SPI_GPIOB, BOARD_PIN_SPI_GPIOB);
+}
+uint8_t READ_BOARD_GPIOC(void)
+{
+    return GPIO_ReadInputDataBit(BOARD_PORT_SPI_GPIOC, BOARD_PIN_SPI_GPIOC);
+}
+uint8_t READ_BOARD_GPIOD(void)
+{
+    return GPIO_ReadInputDataBit(BOARD_PORT_SPI_GPIOD, BOARD_PIN_SPI_GPIOD);
+}
+uint8_t READ_BOARD_GPIOE(void)
+{
+    return GPIO_ReadInputDataBit(BOARD_PORT_SPI_GPIOE, BOARD_PIN_SPI_GPIOE);
+}
+uint8_t READ_BOARD_GPIOF(void)
+{
+    return GPIO_ReadInputDataBit(BOARD_PORT_SPI_GPIOF, BOARD_PIN_SPI_GPIOF);
+}
+uint8_t READ_BOARD_GPIOG(void)
+{
+    return GPIO_ReadInputDataBit(BOARD_PORT_SPI_GPIOG, BOARD_PIN_SPI_GPIOG);
+}
+uint8_t READ_BOARD_GPIOH(void)
+{
+    return GPIO_ReadInputDataBit(BOARD_PORT_SPI_GPIOH, BOARD_PIN_SPI_GPIOH);
+}
+void myRadio_gpio_init(void)
+{
+    GPIO_InitTypeDef  GPIO_InitStructure;
+	SPI_InitTypeDef  SPI_InitStructure;
+    
+#if defined(SPI_HARD)    
+    //----------SPI1时钟使能
+    RCC_APB2PeriphClockCmd(	RCC_APB2Periph_SPI1, ENABLE );
+
+	GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_CLK | BOARD_PIN_SPI_MISO | BOARD_PIN_SPI_MOSI;
+	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出
+	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
+	GPIO_Init(BOARD_PORT_SPI_CLK, &GPIO_InitStructure);
+
+ 	GPIO_SetBits(BOARD_PORT_SPI_CLK, BOARD_PIN_SPI_CLK | BOARD_PIN_SPI_MISO | BOARD_PIN_SPI_MOSI);
+    /*!< SPI configuration */
+    SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
+    SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
+    SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
+    SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
+    SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
+    SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
+    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;
+
+    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
+    SPI_InitStructure.SPI_CRCPolynomial = 7;
+    SPI_Init(SPI1, &SPI_InitStructure);
+
+    /*!< Enable the SPI1  */
+    SPI_Cmd(SPI1, ENABLE);
+#else
+
+    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_MOSI;           
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
+    GPIO_Init(BOARD_PORT_SPI_MOSI, &GPIO_InitStructure);
+    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_MISO;           
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;     
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
+    GPIO_Init(BOARD_PORT_SPI_MISO, &GPIO_InitStructure);
+    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_CLK;            
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
+    GPIO_Init(BOARD_PORT_SPI_CLK, &GPIO_InitStructure);
+#endif
+    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_CSN;            
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
+    GPIO_Init(BOARD_PORT_SPI_CSN, &GPIO_InitStructure);
+
+    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_GPIOA;         
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
+    GPIO_Init(BOARD_PORT_SPI_GPIOA, &GPIO_InitStructure);
+    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_GPIOB;         
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;      
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
+    GPIO_Init(BOARD_PORT_SPI_GPIOB, &GPIO_InitStructure);
+    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_GPIOC;         
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;      
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
+    GPIO_Init(BOARD_PORT_SPI_GPIOC, &GPIO_InitStructure);
+    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_GPIOD;         
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;      
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
+    GPIO_Init(BOARD_PORT_SPI_GPIOD, &GPIO_InitStructure);
+    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_GPIOE;         
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;      
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
+    GPIO_Init(BOARD_PORT_SPI_GPIOE, &GPIO_InitStructure);
+    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_GPIOF;
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
+    GPIO_Init(BOARD_PORT_SPI_GPIOF, &GPIO_InitStructure);
+    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_GPIOG;
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
+    GPIO_Init(BOARD_PORT_SPI_GPIOG, &GPIO_InitStructure);
+    GPIO_InitStructure.GPIO_Pin = BOARD_PIN_SPI_GPIOH;
+    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
+    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
+    GPIO_Init(BOARD_PORT_SPI_GPIOH, &GPIO_InitStructure);
+
+    BOARD_SPI_NSS_H();
+}
+uint8_t SpiReadWrite(uint8_t byteToWrite)
+{
+    uint16_t i = 0;
+    uint8_t temp = 0;   
+    __set_PRIMASK(1);   //全局中断关闭
+#if defined(SPI_HARD)
+	while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET) //检查指定的SPI标志位设置与否:发送缓存空标志位
+    {
+        i++;
+        if(i > 2000)return 0;
+    }			  
+	SPI_I2S_SendData(SPI1, byteToWrite); //通过外设SPIx发送一个数据
+	i=0;
+
+	while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET)//检查指定的SPI标志位设置与否:接受缓存非空标志位
+    {
+        i++;
+        if(i > 2000)return 0;
+    }
+    /*!< Return the byte read from the SPI bus */
+    temp = SPI_I2S_ReceiveData(SPI1);
+#else
+    BOARD_SPI_SCK_L();
+    for(i = 0; i < 8; i ++)
+    {
+        if(byteToWrite & 0x80)
+        {
+          //SpiSetMosiHigh();
+          BOARD_SPI_MOSI_H();
+        }
+        else
+        {
+          //SpiSetMosiLow();
+          BOARD_SPI_MOSI_L();
+        } 
+
+        byteToWrite <<= 1;
+
+        //SpiSetSckHigh(); 
+        BOARD_SPI_SCK_H();
+        temp <<= 1;
+        if(READ_BOARD_SPI_MISO())
+        {
+          temp ++; 
+        }
+        //SpiSetSckLow();
+        BOARD_SPI_SCK_L();
+    }
+#endif
+    __set_PRIMASK(0);   //全局中断打开
+	return temp;
+}
+
+void SpiWriteData(uint8_t byteCount, uint8_t* pData)
+{
+  uint8_t i;
+  
+  for(i = 0; i < byteCount; i++)
+  {
+    SpiReadWrite(*pData);
+    pData ++;
+  }
+}
+
+void SpiReadData(uint8_t byteCount, uint8_t* pData)
+{
+  uint8_t i;
+  
+  for(i = 0; i < byteCount; i++)
+  {
+    *pData = SpiReadWrite(0xFF);
+    pData ++;
+  }
+}
+