打印

固件库V3.3中的关于USART新添加的两个函数,求解释?

[复制链接]
7685|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
PackBot|  楼主 | 2010-8-13 20:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/**
  * @brief  使能或失能USART的.---Enables or disables the USART's 8x oversampling mode.
  * @param  USARTx:  ---Select the USART or the UART peripheral.
  *         这个参数可以是下面的值之一 : USART1, USART2, USART3, UART4 or UART5.
  *         This parameter can be one of the following values: USART1, USART2, USART3, UART4 or UART5.
  * @param  NewState: new state of the USART one bit sampling methode.
  *        This parameter can be: ENABLE or DISABLE.
  * @note
  *     This function has to be called before calling USART_Init()
  *     function in order to have correct baudrate Divider value.   
  * @retval None
  */
void USART_OverSampling8Cmd(USART_TypeDef* USARTx, FunctionalState NewState)
{
  /* Check the parameters */
  assert_param(IS_USART_ALL_PERIPH(USARTx));
  assert_param(IS_FUNCTIONAL_STATE(NewState));
  
  if (NewState != DISABLE)
  {
    /* Enable the 8x Oversampling mode by setting the OVER8 bit in the CR1 register */
    USARTx->CR1 |= CR1_OVER8_Set;
  }
  else
  {
    /* Disable the 8x Oversampling mode by clearing the OVER8 bit in the CR1 register */
    USARTx->CR1 &= CR1_OVER8_Reset;
  }
}
/**
  * @brief  Enables or disables the USART's one bit sampling methode.
  * @param  USARTx: Select the USART or the UART peripheral.
  *   
  *   This parameter can be one of the following values: USART1, USART2, USART3, UART4 or UART5.
  * @param  NewState: new state of the USART one bit sampling methode.
  *   This parameter can be: ENABLE or DISABLE.
  * @retval None
  */
void USART_OneBitMethodCmd(USART_TypeDef* USARTx, FunctionalState NewState)
{
  /* Check the parameters */
  assert_param(IS_USART_ALL_PERIPH(USARTx));
  assert_param(IS_FUNCTIONAL_STATE(NewState));
  
  if (NewState != DISABLE)
  {
    /* Enable the one bit method by setting the ONEBITE bit in the CR3 register */
    USARTx->CR3 |= CR3_ONEBITE_Set;
  }
  else
  {
    /* Disable tthe one bit method by clearing the ONEBITE bit in the CR3 register */
    USARTx->CR3 &= CR3_ONEBITE_Reset;
  }
}
沙发
香水城| | 2010-8-13 22:17 | 只看该作者
楼主还挺仔细。

我也不知道是做什么的,好像是不公开的功能,:$

使用特权

评论回复
板凳
一级菜鸟| | 2010-8-13 23:13 | 只看该作者
用来选择串行通讯中,对每个位的采样是8次还是16次判读,默认为16次。

应该是为将来的STM32保留的功能,或者是现在已经有但是没有公布的功能

使用特权

评论回复
地板
香水城| | 2010-8-14 10:10 | 只看该作者
用来选择串行通讯中,对每个位的采样是8次还是16次判读,默认为16次。

应该是为将来的STM32保留的功能,或者是现在已经有但是没有公布的功能
一级菜鸟 发表于 2010-8-13 23:13


“一级菜鸟”名不副实,其实是个高手,:lol

按照他/她的提示,我看了一下STM32L的手册,楼主提到的这2个函数是STM32L的USART模块提供的功能,在STM32F系列中没有这些功能,肯定是开发的人在发布固件库时不小心放进去了,:@

使用特权

评论回复
5
bg4ajb| | 2010-8-14 13:02 | 只看该作者
那就是降低功耗用的吧。

使用特权

评论回复
6
PackBot|  楼主 | 2010-8-14 16:51 | 只看该作者
谢了版主,还有那位高人,俺明白了,继续虚心学习!

使用特权

评论回复
7
火箭球迷| | 2010-8-15 16:10 | 只看该作者
楼主这么虚心,不就就会达到一级菜鸟的水平了:lol

使用特权

评论回复
8
baidudz| | 2010-8-15 16:27 | 只看该作者
楼主得领悟能力不错,有成为大侠的潜质

使用特权

评论回复
9
无冕之王| | 2010-8-16 10:06 | 只看该作者
不小心放进去的,那就是没有用了??

使用特权

评论回复
10
yuechugxy| | 2010-8-29 12:59 | 只看该作者
/*************************************************************************************************
  * @fun:  void USART_OverSampling8Cmd(USART_TypeDef* USARTx, FunctionalState NewState)
  * @brief  Enables or disables the USART's 8x oversampling mode.
  *         启用或禁用USART 8倍过采样模式
  * @param  USARTx: Select the USART or the UART peripheral.
  *                 选择的USART或UART的外设。
  *   This parameter can be one of the following values:
  *   此参数可为下列值之一:
  *   USART1, USART2, USART3, UART4 or UART5.
  * @param  NewState: new state of the USART one bit sampling methode.
  *   This parameter can be: ENABLE or DISABLE.
  *                  USART位采样方法的新状态,此参数可以是:启用或禁用
  * @note
  *     This function has to be called before calling USART_Init()
  *     function in order to have correct baudrate Divider value.
  *     调用此函数之前,必须调用USART_Init函数确定恰当的波特率分频值
  * @retval None
************************************************************************************************/
void USART_OverSampling8Cmd(USART_TypeDef* USARTx, FunctionalState NewState)
{
    /* Check the parameters
       检查参数 */
  assert_param(IS_USART_ALL_PERIPH(USARTx));
  assert_param(IS_FUNCTIONAL_STATE(NewState));
  
  if (NewState != DISABLE)
  {
    /* Enable the 8x Oversampling mode by setting the OVER8 bit in the CR1 register
       置位CR1寄存器 OVER8 位启用8倍过采样模式 */
    USARTx->CR1 |= CR1_OVER8_Set;
  }
  else
  {
    /* Disable the 8x Oversampling mode by clearing the OVER8 bit in the CR1 register
       复位CR1寄存器 OVER8 位禁用8倍过采样模式 */
    USARTx->CR1 &= CR1_OVER8_Reset;

使用特权

评论回复
11
yuechugxy| | 2010-8-29 13:06 | 只看该作者
/*************************************************************************************************
  * @fun:  void USART_OneBitMethodCmd(USART_TypeDef* USARTx, FunctionalState NewState)
  * @brief  Enables or disables the USART's one bit sampling methode.
  *         启用或禁用USART位采样方法
  * @param  USARTx: Select the USART or the UART peripheral.
  *                 选择的USART或UART的外设。
  *   This parameter can be one of the following values:
  *   此参数可为下列值之一:
  *   USART1, USART2, USART3, UART4 or UART5.
  * @param  NewState: new state of the USART one bit sampling methode.
  *   This parameter can be: ENABLE or DISABLE.
  *                  USART位采样方法的新状态,此参数可以是:启用或禁用
  * @retval None
************************************************************************************************/
void USART_OneBitMethodCmd(USART_TypeDef* USARTx, FunctionalState NewState)
{
    /* Check the parameters
       检查参数 */
  assert_param(IS_USART_ALL_PERIPH(USARTx));
  assert_param(IS_FUNCTIONAL_STATE(NewState));
  
  if (NewState != DISABLE)
  {
    /* Enable the one bit method by setting the ONEBITE bit in the CR3 register
       置位CR3寄存器 ONEBITE 位启用位采样方法 */
    USARTx->CR3 |= CR3_ONEBITE_Set;
  }
  else
  {
    /* Disable tthe one bit method by clearing the ONEBITE bit in the CR3 register
       复位CR3寄存器 ONEBITE 位禁用位采样方法 */
    USARTx->CR3 &= CR3_ONEBITE_Reset;
  }
}

使用特权

评论回复
12
yuechugxy| | 2010-8-29 13:19 | 只看该作者
/* USART OverSampling-8 Mask
   USART 8倍过采样模式掩码*/
#define CR1_OVER8_Set             ((u16)0x8000)  /* USART OVER8 mode Enable Mask CR3[15]未有资料 */
#define CR1_OVER8_Reset           ((u16)0x7FFF)  /* USART OVER8 mode Disable Mask 未有资料 */
/* USART One Bit Sampling Mask
   USART 位采样方法掩码*/
#define CR3_ONEBITE_Set           ((u16)0x0800)  /* USART ONEBITE mode Enable Mask CR3[11] 未有资料 */
#define CR3_ONEBITE_Reset         ((u16)0xF7FF)  /* USART ONEBITE mode Disable Mask  未有资料 */

使用特权

评论回复
13
david_liang| | 2016-8-9 15:54 | 只看该作者
学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:创新是一个民族的灵魂!

0

主题

50

帖子

1

粉丝