1.外设配置顺序
RCC时钟→GPIO→其他外设
2.外设具体配置过程
①配置函数首先声明PPP_InitTypeDef结构体变量。
例:GPIO_InitTypeDef GPIO_InitStructure;
②为定义的结构体变量设置需要的值。
设置变量中所有的值:PPP_InitStructure.member1 = value1;PPP_InitStructure.member2 = value2;...
OR: 定义时直接赋值:PPP_InitTypeDef PPP_InitStructure = {value1,value2,value3....};
设置变量中部分值:PPP_StructInit(&PPP_InitStructure);//先对结构体变量进行初始化
PPP_InitStructure.member1 = value1;PPP_InitStructure.member2 = value2;...
③在设置一个外设前,必须调用一下一个函数来使能它的时钟。
根据不同的外设,选择不同的BUS时钟,具体可查考参考手册中的时钟树。
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_PPPx,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PPPx,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_PPPx,ENABLE);
④调用PPP_Init(PPP,&PPP_InitStructure)进行外设初始化。//PPP_DeInit()功能和PPP_Init(PPP)相反,将寄存器复位为缺省值。
⑤PPP_Cmd(PPP,ENABLE);将外设使能。
3.头文件的一般结构
①开头注释:文件名、描述、作者、版本、日期;
/******************************************** 文件:xxx.h* 说明:干什么用的* 作者:xxx* 版本:v1.0* 日期:year/month/day********************************************/
②预处理:预包含、宏定义
#ifndef __xxxx_h#define __xxxx_h#include "xxxx.h"#define ABC_DEC FGHIGK#endif
③函数声明。
void USARTtoUSB_CONFIG(void);uint16_t ABC_CALCULATE(uint16_t, uint16_t);
4.源函数的一般结构
①开头注释:文件名、描述、作者、版本、日期;
②头文件包含;
③全局变量定义,源文件函数声明(注意:一般不要在头文件声明,否则编译会出现重定义错误)
uint16_t xxxValue = 0; //变量初始化extern uint32_t StateofXXX; //变量来自外部引用,不能赋初值char xString = "I love xxx"; //字符串变量
④具体函数体。