EDN首页   博客首页

13

关于投票
汉化STM32F2.02版固件库之二十二(DAC)

/*******************************************************************************
* 函数名称: DAC_DeInit
* 功能描述: Deinitializes the DAC peripheral registers to their default
*                  reset values[还原DAC外设寄存器到默认复位值].
* 输入参数: 无.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void DAC_DeInit(void)
{
  /* Enable DAC reset state [使能DAC复位状态]*/
  RCC_APB1PeriphResetCmd(RCC_APB1Periph_DAC, ENABLE);
  /* Release DAC from reset state [解除DAC复位状态]*/
  RCC_APB1PeriphResetCmd(RCC_APB1Periph_DAC, DISABLE);
}

/*******************************************************************************
* 函数名称: DAC_Init
* 功能描述: Initializes the DAC peripheral according to the specified
*                  parameters in the DAC_InitStruct[依照DAC_InitStruct指定的参数初始化DAC外部设备].
* 输入参数: (1) DAC_Channel: the selected DAC channel[选择DAC通道].
*                    This parameter can be one of the following values[这个参数可以是下面的值之一]:
*                       - DAC_Channel_1: DAC Channel1 selected[选择DAC通道1]
*                       - DAC_Channel_2: DAC Channel2 selected[选择DAC通道2]
*           (2) DAC_InitStruct: pointer to a DAC_InitTypeDef structure that
*                    contains the configuration information for the specified
*                    DAC channel.[指向包含了指定DAC通道配置信息的DAC_InitTypeDef结构指针]
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void DAC_Init(u32 DAC_Channel, DAC_InitTypeDef* DAC_InitStruct)
{
  u32 tmpreg1 = 0, tmpreg2 = 0;

  /* Check the DAC parameters [检查DAC参数]*/
  assert_param(IS_DAC_TRIGGER(DAC_InitStruct->DAC_Trigger));
  assert_param(IS_DAC_GENERATE_WAVE(DAC_InitStruct->DAC_WaveGeneration));
  assert_param(IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(DAC_InitStruct->DAC_LFSRUnmask_TriangleAmplitude));
  assert_param(IS_DAC_OUTPUT_BUFFER_STATE(DAC_InitStruct->DAC_OutputBuffer));

/*---------------------------- DAC CR Configuration --------------------------*/
  /* Get the DAC CR value [获得DAC CR的值]*/
  tmpreg1 = DAC->CR;
  /* Clear BOFFx, TENx, TSELx, WAVEx and MAMPx bits [清BOFFx, TENx, TSELx, WAVEx和MAMPx位]*/
  tmpreg1 &= ~(CR_CLEAR_Mask << DAC_Channel);
  /* Configure for the selected DAC channel: buffer output, trigger, wave generation,
     mask/amplitude for wave generation [配置选择的DAC通道:缓存输出,触发器,波形发生器,波形发生器的时标/振幅]*/
  /* Set TSELx and TENx bits according to DAC_Trigger value [依照DAC_Trigger的值设置TSELx和TENx位]*/
  /* Set WAVEx bits according to DAC_WaveGeneration value [依照DAC_WaveGeneration的值设置WAVEx位]*/
  /* Set MAMPx bits according to DAC_LFSRUnmask_TriangleAmplitude value [依照DAC_LFSRUnmask_TriangleAmplitude的值设置MAMPx位]*/
  /* Set BOFFx bit according to DAC_OutputBuffer value [依照DAC_OutputBuffer的值设置BOFFx位]*/  
  tmpreg2 = (DAC_InitStruct->DAC_Trigger | DAC_InitStruct->DAC_WaveGeneration |
             DAC_InitStruct->DAC_LFSRUnmask_TriangleAmplitude | DAC_InitStruct->DAC_OutputBuffer);
  /* Calculate CR register value depending on DAC_Channel [根据DAC_Channel计算CR寄存器值]*/
  tmpreg1 |= tmpreg2 << DAC_Channel;
  /* Write to DAC CR [写DAC CR]*/
  DAC->CR = tmpreg1;
}

从二十一篇往后都是ST新器件的功能,原来MXCHIP翻译的固件库说明已经没的参考了,全靠我自己了,所以没有把原文替换掉,而是在后面加了括号。完整的stm32f10x_dac.c点击下载,请您在下载的同时到左上角顶我一下,以示支持!谢谢

系统分类: 单片机
用户分类: STM32F
标签: STM32F 中文 汉化 固件库 DAC
来源: 原创
发表评论 阅读全文(703) | 回复(1)

18

关于投票
汉化STM32F2.02版固件库之二十一(DBGMCU)

/******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
* 文件名称: stm32f10x_dbgmcu.c
* 程序作者: MCD Application Team
* 程序版本: V2.0.2
* 编制日期: 07/11/2008
* 功能描述: 这个文件提供了所有DBGMCU的固件函数.
********************************************************************************
* 目前的固件的目的是为客户提供关于他们的产品的编码信息以便于节省他们时间。
* 结果, 意法半导体将不会为此承担任何直接,间接或相应的损害赔偿方面的任何索赔要求,
* 例如固件或使用所作的客户编码中他涉嫌包含与他们的相关产品的信息。
*******************************************************************************/

/* 包涵的文件 ------------------------------------------------------------------*/
#include "stm32f10x_dbgmcu.h"

/* 自用类型 -----------------------------------------------------------*/
/* 自用定义 ------------------------------------------------------------*/
#define IDCODE_DEVID_Mask    ((u32)0x00000FFF)

/* 自用宏 -----------------------------------------------------------*/
/* 自用变量 ---------------------------------------------------------*/
/* 自用函数原型 -----------------------------------------------------*/
/* 自用函数 ---------------------------------------------------------*/

/*******************************************************************************
* 函数名称: DBGMCU_GetREVID
* 功能描述: Returns the device revision identifier[返回设备的校正标示符].
* 输入参数: 无
* 输出参数: 无
* 返回参数: Device revision identifier[设备的校正标示符]
*******************************************************************************/
u32 DBGMCU_GetREVID(void)
{
   return(DBGMCU->IDCODE >> 16);
}

/*******************************************************************************
* 函数名称: DBGMCU_GetDEVID
* 功能描述: Returns the device identifier[返回设备的标示符].
* 输入参数: 无
* 输出参数: 无
* 返回参数: Device identifier[设备的标示符]
*******************************************************************************/
u32 DBGMCU_GetDEVID(void)
{
   return(DBGMCU->IDCODE & IDCODE_DEVID_Mask);
}

/*******************************************************************************
* 函数名称: DBGMCU_Config
* 功能描述: Configures the specified peripheral and low power mode behavior
*                  when the MCU under Debug mode[配置MCU在调试模式下指定外设和低功耗模式状态].
* 输入参数: (1) DBGMCU_Periph: specifies the peripheral and low power mode[指定的外设和低功耗模式].
*                    This parameter can be any combination of the following values:[可以使用下述任意值的组合]
*                       - DBGMCU_SLEEP: Keep debugger connection during SLEEP mode [在睡眠模式保持调试器的连接]            
*                       - DBGMCU_STOP: Keep debugger connection during STOP mode[在暂停模式保持调试器的连接]              
*                       - DBGMCU_STANDBY: Keep debugger connection during STANDBY mode[在停止模式保持调试器的连接]            
*                       - DBGMCU_IWDG_STOP: Debug IWDG stopped when Core is halted[当内核停止时停止调试IWDG]         
*                       - DBGMCU_WWDG_STOP: Debug WWDG stopped when Core is halted[当内核停止时停止调试WWDG]           
*                       - DBGMCU_TIM1_STOP: TIM1 counter stopped when Core is halted[当内核停止时停止TIM1计数器]          
*                       - DBGMCU_TIM2_STOP: TIM2 counter stopped when Core is halted[当内核停止时停止TIM2计数器]         
*                       - DBGMCU_TIM3_STOP: TIM3 counter stopped when Core is halted[当内核停止时停止TIM3计数器]         
*                       - DBGMCU_TIM4_STOP: TIM4 counter stopped when Core is halted[当内核停止时停止TIM4计数器]         
*                       - DBGMCU_CAN_STOP: Debug CAN stopped when Core is halted[当内核停止时停止调试CAN]          
*                       - DBGMCU_I2C1_SMBUS_TIMEOUT: I2C1 SMBUS timeout mode stopped
*                                                    when Core is halted[当内核停止时停止I2C1总线超时模式]
*                       - DBGMCU_I2C2_SMBUS_TIMEOUT: I2C2 SMBUS timeout mode stopped
*                                                    when Core is halted[当内核停止时停止I2C2总线超时模式]
*                       - DBGMCU_TIM5_STOP: TIM5 counter stopped when Core is halted[当内核停止时停止TIM5计数器]         
*                       - DBGMCU_TIM6_STOP: TIM6 counter stopped when Core is halted[当内核停止时停止TIM6计数器]         
*                       - DBGMCU_TIM7_STOP: TIM7 counter stopped when Core is halted[当内核停止时停止TIM7计数器]         
*                       - DBGMCU_TIM8_STOP: TIM8 counter stopped when Core is halted[当内核停止时停止TIM8计数器]         
*           (2) NewState: new state of the specified peripheral in Debug mode.[指定的外设在低功耗模式的新状态]
*                    This parameter can be: ENABLE or DISABLE.[这个参数可以是:ENABLE or DISABLE]
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void DBGMCU_Config(u32 DBGMCU_Periph, FunctionalState NewState)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_DBGMCU_PERIPH(DBGMCU_Periph));
  assert_param(IS_FUNCTIONAL_STATE(NewState));

  if (NewState != DISABLE)
  {
    DBGMCU->CR |= DBGMCU_Periph;
  }
  else
  {
    DBGMCU->CR &= ~DBGMCU_Periph;
  }
}

/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/

完整的stm32f10x_dbgmcu.c已经都在这里了,请您在下载的同时到左上角顶我一下,以示支持!谢谢

系统分类: 单片机
用户分类: STM32F
标签: STM32F 中文 汉化 固件库 DBGMCU
来源: 原创
发表评论 阅读全文(855) | 回复(2)

16

关于投票
汉化STM32F2.02版固件库之二十(TIM)

/*******************************************************************************
* 函数名称: TIM_DeInit
* 功能描述: 重置TIMx外设寄存器为其默认复位值.
* 输入参数: TIMx:此处x可以是1到8以选择外设.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_DeInit(TIM_TypeDef* TIMx)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_TIM_ALL_PERIPH(TIMx));
 
  switch (*(u32*)&TIMx)
  {
    case TIM1_BASE:
      RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM1, ENABLE);
      RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM1, DISABLE); 
      break;
     
    case TIM2_BASE:
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM2, ENABLE);
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM2, DISABLE);
      break;
 
    case TIM3_BASE:
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM3, ENABLE);
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM3, DISABLE);
      break;
 
    case TIM4_BASE:
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM4, ENABLE);
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM4, DISABLE);
      break;
     
    case TIM5_BASE:
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM5, ENABLE);
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM5, DISABLE);
      break;
     
    case TIM6_BASE:
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM6, ENABLE);
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM6, DISABLE);
      break;
     
    case TIM7_BASE:
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM7, ENABLE);
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM7, DISABLE);
      break;
     
    case TIM8_BASE:
      RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM8, ENABLE);
      RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM8, DISABLE); 
      break;
     
    default:
      break;
  }
}

/*******************************************************************************
* 函数名称: TIM_TimeBaseInit
* 功能描述: 根据TIM_TimeBaseInitStruct中的特定参数初始化某个TIM的时间基单元.
* 输入参数: (1)TIMx:此处x可以是1,2,3,4,5或8以选择外设.
*           (2)TIM_BaseInitStruct:指向一个包含TIM时间基配置信息的TIM_BaseInitTypeDef结构的指针..
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_TIM_123458_PERIPH(TIMx));
  assert_param(IS_TIM_COUNTER_MODE(TIM_TimeBaseInitStruct->TIM_CounterMode));
  assert_param(IS_TIM_CKD_DIV(TIM_TimeBaseInitStruct->TIM_ClockDivision));

  /* Select the Counter Mode and set the clock division [选择计数模式和设置时钟分频]*/
  TIMx->CR1 &= CR1_CKD_Mask & CR1_CounterMode_Mask;
  TIMx->CR1 |= (u32)TIM_TimeBaseInitStruct->TIM_ClockDivision |
                TIM_TimeBaseInitStruct->TIM_CounterMode;
  /* Set the Autoreload value [设置自动装载值]*/
  TIMx->ARR = TIM_TimeBaseInitStruct->TIM_Period ;

  /* Set the Prescaler value [设置预分频器值]*/
  TIMx->PSC = TIM_TimeBaseInitStruct->TIM_Prescaler;

  /* Generate an update event to reload the Prescaler value immediatly [产生一个更新事件立即重新装载预分频器值]*/
  TIMx->EGR = TIM_PSCReloadMode_Immediate;
   
  if (((*(u32*)&TIMx) == TIM1_BASE) || ((*(u32*)&TIMx) == TIM8_BASE)) 
  {
    /* Set the Repetition Counter value [设置重复计数器值]*/
    TIMx->RCR = TIM_TimeBaseInitStruct->TIM_RepetitionCounter;
  }       
}

完整的stm32f10x_tim.c点击下载,这是所有库文件里面最长的一个了,我歇了好几气才弄完的,请您在下载的同时到左上角顶我一下,以示支持!谢谢

系统分类: 单片机
用户分类: STM32F
标签: STM32F 中文 汉化 固件库 TIM
来源: 原创
发表评论 阅读全文(778) | 回复(1)

15

关于投票
汉化STM32F2.02版固件库之十九(LIB)

/******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
* 文件名称: stm32f10x_lib.c
* 程序作者: MCD Application Team
* 程序版本: V2.0.2
* 编制日期: 07/11/2008
* 功能描述: 这个文件提供了所有外设的指针初始化.
********************************************************************************
* 目前的固件的目的是为客户提供关于他们的产品的编码信息以便于节省他们时间。
* 结果, 意法半导体将不会为此承担任何直接,间接或相应的损害赔偿方面的任何索赔要求,
* 例如固件或使用所作的客户编码中他涉嫌包含与他们的相关产品的信息。
*******************************************************************************/

#define EXT

/* 包涵的文件 ------------------------------------------------------------------*/
#include "stm32f10x_lib.h"

/* 自用类型 ------------------------------------------------------------*/
/* 自用定义 ------------------------------------------------------------*/
/* 自用宏 --------------------------------------------------------------*/
/* 自用变量 ------------------------------------------------------------*/
/* 自用函数原型 --------------------------------------------------------*/
/* 自用函数 ------------------------------------------------------------*/

#ifdef DEBUG
/*******************************************************************************
* 函数名称: debug
* 功能描述: 这个函数初始化外设的指针.
* 输入参数: 无
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void debug(void)
{

/************************************* ADC ************************************/
#ifdef _ADC1
  ADC1 = (ADC_TypeDef *)  ADC1_BASE;
#endif /*_ADC1 */

#ifdef _ADC2
  ADC2 = (ADC_TypeDef *)  ADC2_BASE;
#endif /*_ADC2 */

#ifdef _ADC3
  ADC3 = (ADC_TypeDef *)  ADC3_BASE;
#endif /*_ADC3 */
完整的stm32f10x_lib.c点击下载请您在下载的同时到左上角顶我一下,以示支持!谢谢

系统分类: 单片机
用户分类: STM32F
标签: STM32F 中文 汉化 固件库 LIB
来源: 原创
发表评论 阅读全文(871) | 回复(0)

18

关于投票
汉化STM32F2.02版固件库之十八(CRC)

/******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
* 文件名称: stm32f10x_crc.c
* 程序作者: MCD Application Team
* 程序版本: V2.0.2
* 编制日期: 07/11/2008
* 功能描述: 这个文件提供了所有CRC的固件函数.
********************************************************************************
* 目前的固件的目的是为客户提供关于他们的产品的编码信息以便于节省他们时间。
* 结果, 意法半导体将不会为此承担任何直接,间接或相应的损害赔偿方面的任何索赔要求,
* 例如固件或使用所作的客户编码中他涉嫌包含与他们的相关产品的信息。
*******************************************************************************/

/* 包涵的文件 ------------------------------------------------------------------*/
#include "stm32f10x_crc.h"

/* 自用类型 -----------------------------------------------------------*/
/* 自用定义 ------------------------------------------------------------*/

/* CR register bit mask */
#define CR_RESET_Set    ((u32)0x00000001)

/* 自用宏 -------------------------------------------------------------*/
/* 自用变量 ---------------------------------------------------------*/
/* 自用函数原型 -----------------------------------------------*/
/* 自用函数 ---------------------------------------------------------*/

/*******************************************************************************
* 函数名称: CRC_ResetDR
* 功能描述: Resets the CRC Data register (DR)[复位CRC数据寄存器].
* 输入参数: None
* 输出参数: None
* 返回参数: None
*******************************************************************************/
void CRC_ResetDR(void)
{
  /* Reset CRC generator [复位CRC发生器]*/
  CRC->CR = CR_RESET_Set;
}
/*******************************************************************************
* 函数名称: CRC_CalcCRC
* 功能描述: Computes the 32-bit CRC of a given data word(32-bit)[计算已知字的32位CRC].
* 输入参数: - Data: data word(32-bit) to compute its CRC[待计算CRC的数据字]
* 输出参数: None
* 返回参数: 32-bit CRC[32位CRC码]
*******************************************************************************/
u32 CRC_CalcCRC(u32 Data)
{
  CRC->DR = Data;
 
  return (CRC->DR);
}

/*******************************************************************************
* 函数名称: CRC_CalcBlockCRC
* 功能描述: Computes the 32-bit CRC of a given buffer of data word(32-bit)[计算一个缓冲区的数据的32位CRC].
* 输入参数: - pBuffer: pointer to the buffer containing the data to be
*                    computed[指向包含需要计算数据的缓冲区的指针]
*           - BufferLength: length of the buffer to be computed [待计算的缓冲区的长度]
* 输出参数: None
* 返回参数: 32-bit CRC[32位CRC码]
*******************************************************************************/
u32 CRC_CalcBlockCRC(u32 pBuffer[], u32 BufferLength)
{
  u32 index = 0;
 
  for(index = 0; index < BufferLength; index++)
  {
    CRC->DR = pBuffer[index];
  }

  return (CRC->DR);
}

/*******************************************************************************
* 函数名称: CRC_GetCRC
* 功能描述: Returns the current CRC value[返回当前的CRC值].
* 输入参数: None
* 输出参数: None
* 返回参数: 32-bit CRC[32位CRC码]
*******************************************************************************/
u32 CRC_GetCRC(void)
{
  return (CRC->DR);
}

/*******************************************************************************
* 函数名称: CRC_SetIDRegister
* 功能描述: Stores a 8-bit data in the Independent Data(ID) register[在独立的数据寄存器中保存一个8位的数据].
* 输入参数: - IDValue: 8-bit value to be stored in the ID register[等待保存到独立的数据寄存器中8位的数据值]
* 输出参数: None
* 返回参数: None
*******************************************************************************/
void CRC_SetIDRegister(u8 IDValue)
{
  CRC->IDR = IDValue;
}

/*******************************************************************************
* 函数名称: CRC_GetIDRegister
* 功能描述: Returns the 8-bit data stored in the Independent Data(ID) register[返回保存到独立的数据寄存器中8位的数据]
* 输入参数: None
* 输出参数: None
* 返回参数: 8-bit value of the ID register [独立的数据寄存器的8位数值]
*******************************************************************************/
u8 CRC_GetIDRegister(void)
{
  return (CRC->IDR);
}

/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/

这已经是完整的stm32f10x_crc.c文件了,请您在下载的同时到左上角顶我一下,以示支持!谢谢

系统分类: 单片机
用户分类: STM32F
标签: STM32F 中文 汉化 固件库 CRC
来源: 原创
发表评论 阅读全文(780) | 回复(0)

16

关于投票
汉化STM32F2.02版固件库之十七(SPI)

/*******************************************************************************
* 函数名称: SPI_I2S_DeInit
* 功能描述: 将SPIx外设寄存器重置为他们的缺省值(Affects also the I2Ss).
* 输入参数: SPIx x为1,2或3用于选定SPI外设。
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void SPI_I2S_DeInit(SPI_TypeDef* SPIx)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_SPI_ALL_PERIPH(SPIx));
 
  switch (*(u32*)&SPIx)
  {
    case SPI1_BASE:
      /* Enable SPI1 reset state [使能SPI1复位状态]*/
      RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, ENABLE);
      /* Release SPI1 from reset state [解除SPI1复位状态]*/
      RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, DISABLE);
      break;

    case SPI2_BASE:
      /* Enable SPI2 reset state [使能SPI2复位状态]*/
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2, ENABLE);
      /* Release SPI2 from reset state [解除SPI2复位状态]*/
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2, DISABLE);
      break;

    case SPI3_BASE:
      /* Enable SPI3 reset state [使能SPI3复位状态]*/
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI3, ENABLE);
      /* Release SPI3 from reset state [解除SPI3复位状态]*/
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI3, DISABLE);
      break;

    default:
      break;
  }
}

/*******************************************************************************
* 函数名称: SPI_Init
* 功能描述: 根据SPI_InitStruct.中的特定参数初始化SPIx外设.
* 输入参数: (1)SPIx :x为1,2或3用于选定SPI外设。
*           (2)SPI_InitStruct:指向一个包含特定SPI外设配置信息的SPI_InitTypeDef结构体的指针。
* 输出参数: 无
* 返回参数: 无
******************************************************************************/
void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct)
{
  u16 tmpreg = 0;
 
  /* Check the parameters [检查参数]*/
  assert_param(IS_SPI_ALL_PERIPH(SPIx));  
 
  /* Check the SPI parameters [检查SPI的参数]*/
  assert_param(IS_SPI_DIRECTION_MODE(SPI_InitStruct->SPI_Direction));
  assert_param(IS_SPI_MODE(SPI_InitStruct->SPI_Mode));
  assert_param(IS_SPI_DATASIZE(SPI_InitStruct->SPI_DataSize));
  assert_param(IS_SPI_CPOL(SPI_InitStruct->SPI_CPOL));
  assert_param(IS_SPI_CPHA(SPI_InitStruct->SPI_CPHA));
  assert_param(IS_SPI_NSS(SPI_InitStruct->SPI_NSS));
  assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_InitStruct->SPI_BaudRatePrescaler));
  assert_param(IS_SPI_FIRST_BIT(SPI_InitStruct->SPI_FirstBit));
  assert_param(IS_SPI_CRC_POLYNOMIAL(SPI_InitStruct->SPI_CRCPolynomial));

/*---------------------------- SPIx CR1 Configuration [SPIx CR1配置]*/
  /* Get the SPIx CR1 value [取得SPIx CR1的值]*/
  tmpreg = SPIx->CR1;
  /* Clear BIDIMode, BIDIOE, RxONLY, SSM, SSI, LSBFirst, BR, MSTR, CPOL and CPHA bits
  清BIDIMode, BIDIOE, RxONLY, SSM, SSI, LSBFirst, BR, MSTR, CPOL 和CPHA 位*/
  tmpreg &= CR1_CLEAR_Mask;
  /* Configure SPIx[配置SPIx]: direction[方向], NSS management[NSS管理], first transmitted bit[第一个发送位], BaudRate prescaler[波特率预分频]
     master/salve mode[主/从模式], CPOL and CPHA */
  /* Set BIDImode, BIDIOE and RxONLY bits according to SPI_Direction value [依照SPI_Direction的值置位BIDImode, BIDIOE和RxONLY]*/
  /* Set SSM, SSI and MSTR bits according to SPI_Mode and SPI_NSS values [依照SPI_Mode 和SPI_NSS的值置位SSM, SSI 和 MSTR]*/
  /* Set LSBFirst bit according to SPI_FirstBit value [依照SPI_FirstBit的值置位LSBFirst]*/
  /* Set BR bits according to SPI_BaudRatePrescaler value [依照SPI_BaudRatePrescaler的值置位BR]*/
  /* Set CPOL bit according to SPI_CPOL value [依照SPI_CPOL的值置位CPOL]*/
  /* Set CPHA bit according to SPI_CPHA value [依照SPI_CPHA的值置位CPHA]*/
  tmpreg |= (u16)((u32)SPI_InitStruct->SPI_Direction | SPI_InitStruct->SPI_Mode |
                  SPI_InitStruct->SPI_DataSize | SPI_InitStruct->SPI_CPOL | 
                  SPI_InitStruct->SPI_CPHA | SPI_InitStruct->SPI_NSS | 
                  SPI_InitStruct->SPI_BaudRatePrescaler | SPI_InitStruct->SPI_FirstBit);
  /* Write to SPIx CR1 [写SPIx CR1]*/
  SPIx->CR1 = tmpreg;
 
  /* Activate the SPI mode (Reset I2SMOD bit in I2SCFGR register) */
  SPIx->I2SCFGR &= SPI_Mode_Select;    

/*---------------------------- SPIx CRCPOLY Configuration --------------------*/
  /* Write to SPIx CRCPOLY [写SPIx CRCPOLY]*/
  SPIx->CRCPR = SPI_InitStruct->SPI_CRCPolynomial;
}

完整的stm32f10x_spi.c点击下载请您在下载的同时到左上角顶我一下,以示支持!谢谢

系统分类: 单片机
用户分类: STM32F
标签: STM32F 中文 汉化 固件库 SPI
来源: 原创
发表评论 阅读全文(606) | 回复(0)
总共 , 当前 /