1.GPIO初始化函数
用法:
- voidGPIO_Configuration(void)
- {
- GPIO_InitTypeDefGPIO_InitStructure;//GPIO状态恢复默认参数
- GPIO_InitStructure.GPIO_Pin=GPIO_Pin_标号|GPIO_Pin_标号;
- //管脚位置定义,标号可以是NONE、ALL、0至15。
- GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//最高输出速度为50MHz
- GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出
- GPIO_Init(GPIOC,&GPIO_InitStructure);//C组GPIO初始化
- /*注:以上四行代码为一组,每组GPIO属性必须相同,默认的GPIO参数为:ALL,2MHz,FLATING。如果其中任意一行与前一组相应设置相同,那么那一行可以省略,由此推论如果前面已经将此行参数设定为默认参数(包括使用GPIO_InitTypeDefGPIO_InitStructure代码),本组应用也是默认参数的话,那么也可以省略。以下重复这个过程直到所有应用的管脚全部被定义完毕。*/
- }
GPIO基础应用:向管脚置1||0
- GPIO_SetBits(GPIOC,GPIO_Pin_1);//置1
- GPIO_ResetBits(GPIOC,GPIO_Pin_1);//置0
2.RCC:单片机时钟管理。
管理外部、内部和外设的时钟,设置、打开和关闭这些时钟。
用法:
函数初始化
- voidRCC_Configuration(void)//时钟初始化函数
- {
- ErrorStatusHSEStartUpStatus;//等待时钟的稳定
- RCC_DeInit();//时钟管理重置
- RCC_HSEConfig(RCC_HSE_ON);//打开外部晶振HSEStartUpStatus=RCC_WaitForHSEStartUp();//等待外部晶振就绪
- if(HSEStartUpStatus==SUCCESS)
- {
- FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//flash读取缓冲,加速
- FLASH_SetLatency(FLASH_Latency_2);//flash操作的延时
- RCC_HCLKConfig(RCC_SYSCLK_Div1);//AHB使用系统时钟
- RCC_PCLK2Config(RCC_HCLK_Div2);//APB2(高速)为HCLK的一半
- RCC_PCLK1Config(RCC_HCLK_Div2);//APB1(低速)为HCLK的一半
- /*注:AHB主要负责外部存储器时钟。APB2负责AD,I/O,高级TIM,串口1。APB1负
- 责DA,USB,SPI,I2C,CAN,串口2345,普通TIM。*/
- RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);
- //PLLCLK=8MHz*9=72MHz
- RCC_PLLCmd(ENABLE);//启动PLL
- while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET){}//等待PLL启动
- RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//将PLL设置为系统时钟源
- while(RCC_GetSYSCLKSource()!=0x08){}//等待系统时钟源的启动
- }
- RCC_AHBPeriphClockCmd(ABP2设备1|ABP2设备2|,ENABLE);//启动AHP设备
- RCC_APB2PeriphClockCmd(ABP2设备1|ABP2设备2|,ENABLE);//启动ABP2设备
- RCC_APB1PeriphClockCmd(ABP2设备1|ABP2设备2|,ENABLE);//启动ABP1设备
- }
3.NVIC:系统中断管理。
管理系统内部的中断,负责打开和关闭中断。
基础应用1,中断的初始化函数,包括设置中断向量表位置,和开启所需的中断两部分。
用法:
|