在GPIO口复用USART进行串行通讯时,串口配置函数void USART_Config(void)中,同时使能了串口时钟和串口。
那么为什么在要同时使能呢?
DEBUG_USART_APBxClkCmd(DEBUG_USART_CLK, ENABLE); /*串口时钟使能*/ USART_Cmd(DEBUG_USARTx,ENABLE); /*串口使能*/
第一个是USART时钟使能,第二个是串口功能使能。
好比:给你的电脑插上电源(时钟使能),然后按电脑的开机键(串口功能使能)。
I2C也同样需要时钟使能和功能使能,外设在使用时都需要这两步。
由于stm32有很多外设,为降低功耗,每个外设都对应着一个时钟。在芯片刚刚上电时,这些时钟都是被关闭的。如果想要外设工作,必须把相应的时钟打开。