使能外设时钟,我们就可以操作(读写)对应的外设;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
失能外设时钟,则我们无法操作对应的外设。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, DISABLE);
所以说,我们要操作外设,就必须要先开启(使能)其外设时钟。
复位外设就是恢复外设所有寄存器为上电默认值,也可以说复位了我们的配置。
可能有些地方你会也会发现xx外设配置之前有“重新初始化”外设的操作,如:
USART_DeInit(USART1);
DMA_DeInit(DMA1_Channel1);
这重新初始化代码里面,其实就是调用了复位外设代码。
复位外设,会复位外设的所有寄存器,但外设时钟不会被复位;
在STM32的库函数中,外设复位和清除都是成对的
外设时钟使能,复位外设,再清除复位外设,可以继续配置(读写)外设。如USART1重新初始化:
RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, ENABLE);
RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, DISABLE);
USART_Init(USART1, &USART_InitStructure);
复位外设,但不清除复位外设,则不能继续配置(读写)外设。
RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, ENABLE);
USART_Init(USART1, &USART_InitStructure);
缺省值和Null
缺省值是默认值,通常为0
null是没有值int ? i = null声明一个可空类型的i