⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stm32f10x_spi.c

📁 stm32f10xx的中文译文例程
💻 C
📖 第 1 页 / 共 3 页
字号:
  /* Initialize the SPI_FirstBit member [初始化SPI_FirstBit成员]*/
  SPI_InitStruct->SPI_FirstBit = SPI_FirstBit_MSB;

  /* Initialize the SPI_CRCPolynomial member [初始化SPI_CRCPolynomial成员]*/
  SPI_InitStruct->SPI_CRCPolynomial = 7;
}

/*******************************************************************************
* 函数名称: I2S_StructInit
* 功能描述: 用默认值填充每个I2S_InitStruct结构成员.
* 输入参数: I2S_InitStruct : 指向将要被初始化的I2S_InitTypeDef 结构指针.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void I2S_StructInit(I2S_InitTypeDef* I2S_InitStruct)
{
/*--------------- Reset I2S init structure parameters values [复位I2S初始化结构参数值]*/
  /* Initialize the I2S_Mode member [初始化I2S_Mode成员]*/
  I2S_InitStruct->I2S_Mode = I2S_Mode_SlaveTx;
  
  /* Initialize the I2S_Standard member [初始化I2S_Standard成员]*/
  I2S_InitStruct->I2S_Standard = I2S_Standard_Phillips;
  
  /* Initialize the I2S_DataFormat member [初始化I2S_DataFormat成员]*/
  I2S_InitStruct->I2S_DataFormat = I2S_DataFormat_16b;
  
  /* Initialize the I2S_MCLKOutput member [初始化I2S_MCLKOutput成员]*/
  I2S_InitStruct->I2S_MCLKOutput = I2S_MCLKOutput_Disable;
  
  /* Initialize the I2S_AudioFreq member [初始化I2S_AudioFreq成员]*/
  I2S_InitStruct->I2S_AudioFreq = I2S_AudioFreq_Default;
  
  /* Initialize the I2S_CPOL member [初始化I2S_CPOL成员]*/
  I2S_InitStruct->I2S_CPOL = I2S_CPOL_Low;
}

/*******************************************************************************
* 函数名称: SPI_Cmd
* 功能描述: 使能或关闭特定的外设.
* 输入参数: (1)SPIx :x为1,2或3用于选定SPI外设。
*           (2)NewState:这个SPI外设的新状态,这个参数可能是ENABLE或DISABLE
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void SPI_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_SPI_ALL_PERIPH(SPIx));
  assert_param(IS_FUNCTIONAL_STATE(NewState));

  if (NewState != DISABLE)
  {
    /* Enable the selected SPI peripheral [使能选择的SPI外设]*/
    SPIx->CR1 |= CR1_SPE_Set;
  }
  else
  {
    /* Disable the selected SPI peripheral [禁止选择的SPI外设]*/
    SPIx->CR1 &= CR1_SPE_Reset;
  }
}

/*******************************************************************************
* 函数名称: I2S_Cmd
* 功能描述: 使能或禁止指定的SPI外设(在 I2S 模式).
* 输入参数: (1)SPIx :x为1,2或3用于选定SPI外设。
*           (2)NewState: 新的SPIx外设状态. 
*                    这个参数可以是: ENABLE or DISABLE.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void I2S_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_SPI_23_PERIPH(SPIx));
  assert_param(IS_FUNCTIONAL_STATE(NewState));

  if (NewState != DISABLE)
  {
    /* Enable the selected SPI peripheral (in I2S mode) [使能选择的外设SPI(在I2S 模式)]*/
    SPIx->I2SCFGR |= I2SCFGR_I2SE_Set;
  }
  else
  {
    /* Disable the selected SPI peripheral (in I2S mode) [禁止选择的外设SPI(在I2S 模式)]*/
    SPIx->I2SCFGR &= I2SCFGR_I2SE_Reset;
  }
}

/*******************************************************************************
* 函数名称: SPI_I2S_ITConfig
* 功能描述: 使能或禁止指定的SPI/I2S中断。
* 输入参数: (1)SPIx: x可以是 :
*                         - 1, 2 或 3 在 SPI 模式 
*                         - 2 或 3 在 I2S 模式
*           (2)SPI_I2S_IT: 指定的中断源被使能或禁止. 
*                    这个参数可以是下面的值之一:
*                       - SPI_I2S_IT_TXE: Tx buffer empty interrupt mask
*                       - SPI_I2S_IT_RXNE: Rx buffer not empty interrupt mask
*                       - SPI_I2S_IT_ERR: Error interrupt mask
*           (3)NewState: 指定的 SPI/I2S 中断新状态.
*                    这个参数可以是: ENABLE or DISABLE.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void SPI_I2S_ITConfig(SPI_TypeDef* SPIx, u8 SPI_I2S_IT, FunctionalState NewState)
{
  u16 itpos = 0, itmask = 0 ;

  /* Check the parameters [检查参数]*/
  assert_param(IS_SPI_ALL_PERIPH(SPIx));
  assert_param(IS_FUNCTIONAL_STATE(NewState));
  assert_param(IS_SPI_I2S_CONFIG_IT(SPI_I2S_IT));

  /* Get the SPI/I2S IT index */
  itpos = SPI_I2S_IT >> 4;
  /* Set the IT mask */
  itmask = (u16)((u16)1 << itpos);

  if (NewState != DISABLE)
  {
    /* Enable the selected SPI/I2S interrupt [使能选择的SPI/I2S 中断]*/
    SPIx->CR2 |= itmask;
  }
  else
  {
    /* Disable the selected SPI/I2S interrupt [禁止选择的SPI/I2S 中断]*/
    SPIx->CR2 &= (u16)~itmask;
  }
}

/*******************************************************************************
* 函数名称: SPI_I2S_DMACmd
* 功能描述: 使能或禁止SPIx/I2Sx DMA接口.
* 输入参数: (1)SPIx: x可以是 :
*                         - 1, 2 或 3 在 SPI 模式 
*                         - 2 或 3 在 I2S 模式
*           (2)SPI_I2S_DMAReq: 指定的 SPI/I2S DMA 传输请求被使能或禁止。
*                    这个参数可以是下面任意值的组合:
*                       - SPI_I2S_DMAReq_Tx: 发送缓冲 DMA传输请求
*                       - SPI_I2S_DMAReq_Rx:  接收缓冲DMA 传输请求
*           (3)NewState:选择的 SPI/I2S DMA传输请求新状态 
*                    这个参数可以是: ENABLE 或DISABLE.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void SPI_I2S_DMACmd(SPI_TypeDef* SPIx, u16 SPI_I2S_DMAReq, FunctionalState NewState)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_SPI_ALL_PERIPH(SPIx));
  assert_param(IS_FUNCTIONAL_STATE(NewState));
  assert_param(IS_SPI_I2S_DMAREQ(SPI_I2S_DMAReq));

  if (NewState != DISABLE)
  {
    /* Enable the selected SPI/I2S DMA requests [使能选择的SPI/I2S DMA请求]*/
    SPIx->CR2 |= SPI_I2S_DMAReq;
  }
  else
  {
    /* Disable the selected SPI/I2S DMA requests [禁止选择的SPI/I2S DMA请求]*/
    SPIx->CR2 &= (u16)~SPI_I2S_DMAReq;
  }
}

/*******************************************************************************
* 函数名称: SPI_I2S_SendData
* 功能描述: 通过SPIx/I2Sx外设发送数据
* 输入参数: (1)SPIx: x可以是 :
*                         - 1, 2 或 3 在 SPI 模式 
*                         - 2 或 3 在 I2S 模式
*           (2)Data : 发送的数据
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void SPI_I2S_SendData(SPI_TypeDef* SPIx, u16 Data)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_SPI_ALL_PERIPH(SPIx));
  
  /* Write in the DR register the data to be sent [把准备发送的数据写到DR寄存器]*/
  SPIx->DR = Data;
}

/*******************************************************************************
* 函数名称: SPI_I2S_ReceiveData
* 功能描述: 返回最近从SPIx/I2Sx外部设备接收的数据。
* 输入参数: (1)- SPIx: x可以是 :
*                         - 1, 2 或 3 在 SPI 模式 
*                         - 2 或 3 在 I2S 模式
* 输出参数: 无
* 返回参数: 接收的数据值.
*******************************************************************************/
u16 SPI_I2S_ReceiveData(SPI_TypeDef* SPIx)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_SPI_ALL_PERIPH(SPIx));
  
  /* Return the data in the DR register [返回DR寄存器的数据]*/
  return SPIx->DR;
}

/*******************************************************************************
* 函数名称: SPI_NSSInternalSoftwareConfig
* 功能描述: 软件配置选择的SPI内部引脚.
* 输入参数: (1)SPIx :x为1,2或3用于选定SPI外设。
*           (2)SPI_NSSInternalSoft: 指定的SPI NSS内部状态.
*                    这个参数可以是下面的值之一:
*                       - SPI_NSSInternalSoft_Set: 置位NSS内部引脚
*                       - SPI_NSSInternalSoft_Reset: 复位NSS内部引脚
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void SPI_NSSInternalSoftwareConfig(SPI_TypeDef* SPIx, u16 SPI_NSSInternalSoft)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_SPI_ALL_PERIPH(SPIx));
  assert_param(IS_SPI_NSS_INTERNAL(SPI_NSSInternalSoft));

  if (SPI_NSSInternalSoft != SPI_NSSInternalSoft_Reset)
  {
    /* Set NSS pin internally by software [软件置位NSS内部引脚]*/
    SPIx->CR1 |= SPI_NSSInternalSoft_Set;
  }
  else
  {
    /* Reset NSS pin internally by software [软件复位NSS内部引脚]*/
    SPIx->CR1 &= SPI_NSSInternalSoft_Reset;
  }
}

/*******************************************************************************
* 函数名称: SPI_SSOutputCmd
* 功能描述: 使能或关闭选定的SPI接口的SS输出.
* 输入参数: (1)SPIx :x为1,2或3用于选定SPI外设。
*           (2)NewState:选定的SPI SS输出的新状态,这个参数可能是ENABLE或DISABLE
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void SPI_SSOutputCmd(SPI_TypeDef* SPIx, FunctionalState NewState)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_SPI_ALL_PERIPH(SPIx));
  assert_param(IS_FUNCTIONAL_STATE(NewState));

  if (NewState != DISABLE)
  {
    /* Enable the selected SPI SS output [使能选择的SPI SS输出]*/
    SPIx->CR2 |= CR2_SSOE_Set;
  }
  else
  {
    /* Disable the selected SPI SS output [禁止选择的SPI SS输出]*/
    SPIx->CR2 &= CR2_SSOE_Reset;
  }
}

/*******************************************************************************
* 函数名称: SPI_DataSizeConfig
* 功能描述: 为选定的SPI接口配置数据大小.
* 输入参数: (1)SPIx :x为1,2或3用于选定SPI外设。
*           (2)SPI_DataSize: SPI数据大小。
*                    这个参数可以是下面的值之一:
*                       - SPI_DataSize_16b: 设置数据大小为16位
*                       - SPI_DataSize_8b: 设置数据大小为8位
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void SPI_DataSizeConfig(SPI_TypeDef* SPIx, u16 SPI_DataSize)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_SPI_ALL_PERIPH(SPIx));
  assert_param(IS_SPI_DATASIZE(SPI_DataSize));

  /* Clear DFF bit [清除DFF位]*/
  SPIx->CR1 &= (u16)~SPI_DataSize_16b;
  /* Set new DFF bit value [设置DFF位的新值]*/
  SPIx->CR1 |= SPI_DataSize;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -