看了视频,关于USART_DeInit函数,原子哥

2019-07-21 04:59发布

 

原子哥,你的文档里面所说的串口设置如上图,然后在视频里面说串口复位是指调用USART_DeInit函数,但是查看USART_DeInit的源代码我又觉得不妥了。
void USART_DeInit(USART_TypeDef* USARTx)
{
  /* Check the parameters */
  assert_param(IS_USART_ALL_PERIPH(USARTx));   if (USARTx == USART1)
  {
    RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, ENABLE);
    RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, DISABLE);
  }
  else if (USARTx == USART2)
  {
    RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2, ENABLE);
    RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2, DISABLE);
  }
  else if (USARTx == USART3)
  {
    RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART3, ENABLE);
    RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART3, DISABLE);
  }   
  else if (USARTx == UART4)
  {
    RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART4, ENABLE);
    RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART4, DISABLE);
  }   
  else
  {
    if (USARTx == UART5)
    {
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART5, ENABLE);
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART5, DISABLE);
    }
  }
}

void RCC_APB1PeriphResetCmd(uint32_t RCC_APB1Periph, FunctionalState NewState)
{
  /* Check the parameters */
  assert_param(IS_RCC_APB1_PERIPH(RCC_APB1Periph));
  assert_param(IS_FUNCTIONAL_STATE(NewState));
  if (NewState != DISABLE)
  {
    RCC->APB1RSTR |= RCC_APB1Periph;
  }
  else
  {
    RCC->APB1RSTR &= ~RCC_APB1Periph;
  }
}

这个USART_DeInit函数不是又把USART的时钟复位了吗,这样子usart哪里还有时钟呢?是我什么地方误会了吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
正点原子
1楼-- · 2019-07-21 10:03
回复【7楼】FMX_2011:
---------------------------------
不用也行,因为你硬件复位的时候,等于这些都复位了的。
正点原子
2楼-- · 2019-07-21 13:30
USART_DeInit后面还有其他代码初始化的.
烂泥桑
3楼-- · 2019-07-21 16:35
 精彩回答 2  元偷偷看……
正点原子
4楼-- · 2019-07-21 16:36
回复【3楼】烂泥桑:
---------------------------------
各自有单独的控制区域的。
我们的蓝牙模块例程,就用了2个串口,SIM900A的例程,gps例程都用了2个串口。。。
FMX_2011
5楼-- · 2019-07-21 17:00
回复【4楼】正点原子:
---------------------------------
在迷你板中就没有用到这个函数,那么它的串口如何复位呢
FMX_2011
6楼-- · 2019-07-21 18:59
回复【4楼】正点原子:
---------------------------------
在战舰版,注销掉这个函数也没有问题的。。。。。想明白为什么,这种情况可以不复位?

一周热门 更多>