STM32库函数功能详解.docx
《STM32库函数功能详解.docx》由会员分享,可在线阅读,更多相关《STM32库函数功能详解.docx(101页珍藏版)》请在冰豆网上搜索。
STM32库函数功能详解
STM32库函数简介
一、通用输入/输出(GPIO)--------------------------------------------------------------------------------------------3
二、外部中断/事件控制器(EXTI)-----------------------------------------------------------------------------------7
三、通用定时器(TIM)-------------------------------------------------------------------------------------------------9
四:
ADC寄存器------------------------------------------------------------------------25
五:
备份寄存器(BKP)-------------------------------------------------------------------------------------------------33
六、DMA控制器(DMA)---------------------------------------------------------------37
七、复位和时钟设置(RCC)------------------------------------------------------------------------------------------41
八、嵌套向量中断控制器(NVIC)-----------------------------------------------------------------------------------49
命名规则
在函数名中,只允许存在一个下划线,用以分隔外设缩写和函数名的其它部分。
名为PPP_Init的函数,其功能是根据PPP_InitTypeDef中指定的参数,初始化外设PPP,例如TIM_Init.
名为PPP_DeInit的函数,其功能为复位外设PPP的所有寄存器至缺省值,例如TIM_DeInit.
名为PPP_StructInit的函数,其功能为通过设置PPP_InitTypeDef结构中的各种参数来定义外设的功能,例如:
USART_StructInit
名为PPP_Cmd的函数,其功能为使能或者失能外设PPP,例如:
SPI_Cmd.
名为PPP_ITConfig的函数,其功能为使能或者失能来自外设PPP某中断源,例如:
RCC_ITConfig.
名为PPP_DMAConfig的函数,其功能为使能或者失能外设PPP的DMA接口,例如:
TIM1_DMAConfig.用以配置外设功能的函数,总是以字符串“Config”结尾,例如GPIO_PinRemapConfig.
名为PPP_GetFlagStatus的函数,其功能为检查外设PPP某标志位被设置与否,例如:
I2C_GetFlagStatus.
名为PPP_ClearFlag的函数,其功能为清除外设PPP标志位,例如:
I2C_ClearFlag.
名为PPP_GetITStatus的函数,其功能为判断来自外设PPP的中断发生与否,例如:
I2C_GetITStatus.
名为PPP_ClearITPendingBit的函数,其功能为清除外设PPP中断待处理标志位,例如:
I2C_ClearITPendingBit.
typedefsignedlongs32;
typedefsignedshorts16;
typedefsignedchars8;
typedefsignedlongconstsc32;/*ReadOnly*/
typedefsignedshortconstsc16;/*ReadOnly*/
typedefsignedcharconstsc8;/*ReadOnly*/
typedefvolatilesignedlongvs32;
typedefvolatilesignedshortvs16;
typedefvolatilesignedcharvs8;
typedefvolatilesignedlongconstvsc32;/*ReadOnly*/
typedefvolatilesignedshortconstvsc16;/*ReadOnly*/
typedefvolatilesignedcharconstvsc8;/*ReadOnly*/
typedefunsignedlongu32;
typedefunsignedshortu16;
typedefunsignedcharu8;
typedefunsignedlongconstuc32;/*ReadOnly*/
typedefunsignedshortconstuc16;/*ReadOnly*/
typedefunsignedcharconstuc8;/*ReadOnly*/
typedefvolatileunsignedlongvu32;
typedefvolatileunsignedshortvu16;
typedefvolatileunsignedcharvu8;
typedefvolatileunsignedlongconstvuc32;/*ReadOnly*/
typedefvolatileunsignedshortconstvuc16;/*ReadOnly*/
typedefvolatileunsignedcharconstvuc8;/*ReadOnly*/
一、通用输入/输出(GPIO)
GPIO寄存器结构
GPIO_TypeDef和AFIO_TypeDef,在文件“stm32f10x_map.h”中定义如下:
typedefstruct
{
vu32CRL;
vu32CRH;
vu32IDR;
vu32ODR;
vu32BSRR;
vu32BRR;
vu32LCKR;
}
GPIO_TypeDef;
typedefstruct
{
vu32EVCR;
vu32MAPR;
vu32EXTICR[4];
}
AFIO_TypeDef;
GPIO库函数
1函数GPIO_DeInit
功能描述:
将外设GPIOx寄存器重设为缺省值
例:
GPIO_DeInit(GPIOA);
2函数GPIO_AFIODeInit
功能描述:
将复用功能(重映射事件控制和EXTI设置)重设为缺省值
例:
GPIO_AFIODeInit();
3函数GPIO_Init
功能描述:
根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器
例:
GPIO_InitTypeDefGPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitTypeDefstructure
GPIO_InitTypeDef定义于文件“stm32f10x_gpio.h”:
typedefstruct
{
u16GPIO_Pin;
GPIOSpeed_TypeDefGPIO_Speed;
GPIOMode_TypeDefGPIO_Mode;
}
GPIO_InitTypeDef;
GPIO_Pin
该参数选择待设置的GPIO管脚,使用操作符“|”可以一次选中多个管脚。
可以使用下表中的任意组合。
GPIO_Pin_None:
无管脚被选中
GPIO_Pin_x:
选中管脚x(0--15)
GPIO_Pin_All:
选中全部管脚
GPIO_Speed
GPIO_Speed:
用以设置选中管脚的速率。
GPIO_Speed_10MHz:
最高输出速率10MHz
GPIO_Speed_2MHz:
最高输出速率2MHz
GPIO_Speed_50MHz:
最高输出速率50MHz
GPIO_Mode
GPIO_Mode:
用以设置选中管脚的工作状态。
GPIO_Mode_AIN:
模拟输入
GPIO_Mode_IN_FLOATING:
浮空输入
GPIO_Mode_IPD:
下拉输入
GPIO_Mode_IPU:
上拉输入
GPIO_Mode_Out_OD:
开漏输出
GPIO_Mode_Out_PP:
推挽输出
GPIO_Mode_AF_OD:
复用开漏输出
GPIO_Mode_AF_PP:
复用推挽输出
4函数GPIO_StructInit
功能描述:
把GPIO_InitStruct中的每一个参数按缺省值填入
例:
GPIO_InitTypeDefGPIO_InitStructure;
GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStruct:
GPIO_Pin:
GPIO_Pin_All
GPIO_Speed:
GPIO_Speed_2MHz
GPIO_Mode:
GPIO_Mode_IN_FLOATING
5函数GPIO_ReadInputDataBit
功能描述:
读取指定端口管脚的输入
例:
u8ReadValue;
ReadValue=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7);
6函数GPIO_ReadInputData
功能描述:
读取指定的GPIO端口输入
例:
u16ReadValue;
ReadValue=GPIO_ReadInputData(GPIOC);
7函数GPIO_ReadOutputDataBit
功能描述:
读取指定端口管脚的输出
例:
u8ReadValue;
ReadValue=GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_7);
8函数GPIO_ReadOutputData
功能描述:
读取指定的GPIO端口输出
例:
u16ReadValue;
ReadValue=GPIO_ReadOutputData(GPIOC);
9函数GPIO_SetBits
功能描述:
置位指定的数据端口位
例:
GPIO_SetBits(GPIOA,GPIO_Pin_10|GPIO_Pin_15);
10函数GPIO_ResetBits
功能描述:
清除指定的数据端口位
例:
GPIO_ResetBits(GPIOA,GPIO_Pin_10|GPIO_Pin_15);
11函数GPIO_WriteBit
功能描述:
设置或者清除指定的数据端口位
例:
GPIO_WriteBit(GPIOA,GPIO_Pin_15,Bit_SET);
12函数GPIO_Write
功能描述:
向指定GPIO数据端口写入数据
例:
GPIO_Write(GPIOA,0x1101);
13函数GPIO_PinLockConfig
功能描述:
锁定GPIO管脚设置寄存器
例:
GPIO_PinLockConfig(GPIOA,GPIO_Pin_0|GPIO_Pin_1);
14函数GPIO_EventOutputConfig
功能描述:
选择GPIO管脚用作事件输出
例:
GPIO_EventOutputConfig(GPIO_PortSourceGPIOE,GPIO_PinSource5);
GPIO_PortSource
GPIO_PortSource用以选择用作事件输出的GPIO端口。
GPIO_PinSource
GPIO_PinSource用以选择用作事件输出的GPIO管脚。
15函数GPIO_EventOutputCmd
功能描述:
使能或者失能事件输出
例:
GPIO_EventOutputConfig(GPIO_PortSourceGPIOC,GPIO_PinSource6);
GPIO_EventOutputCmd(ENABLE);
16函数GPIO_PinRemapConfig
功能描述:
改变指定管脚的映射
例:
GPIO_PinRemapConfig(GPIO_Remap_I2C1,ENABLE);
GPIO_Remap
GPIO_Remap用以选择用作事件输出的GPIO端口。
GPIO_Remap_SPI1:
SPI1复用功能映射
GPIO_Remap_I2C1:
I2C1复用功能映射
GPIO_Remap_USART1:
USART1复用功能映射
GPIO_PartialRemap_USART3:
USART2复用功能映射
GPIO_FullRemap_USART3:
USART3复用功能完全映射
GPIO_PartialRemap_TIM1:
USART3复用功能部分映射
GPIO_FullRemap_TIM1:
TIM1复用功能完全映射
GPIO_PartialRemap1_TIM2:
TIM2复用功能部分映射1
GPIO_PartialRemap2_TIM2:
TIM2复用功能部分映射2
GPIO_FullRemap_TIM2:
TIM2复用功能完全映射
GPIO_PartialRemap_TIM3:
TIM3复用功能部分映射
GPIO_FullRemap_TIM3:
TIM3复用功能完全映射
GPIO_Remap_TIM4:
TIM4复用功能映射
GPIO_Remap1_CAN:
CAN复用功能映射1
GPIO_Remap2_CAN:
CAN复用功能映射2
GPIO_Remap_PD01:
PD01复用功能映射
GPIO_Remap_SWJ_NoJTRST:
除JTRST外SWJ完全使能(JTAG+SW-DP)
GPIO_Remap_SWJ_JTAGDisable:
JTAG-DP失能+SW-DP使能
GPIO_Remap_SWJ_Disable:
SWJ完全失能(JTAG+SW-DP)
17函数GPIO_EXTILineConfig
功能描述:
选择GPIO管脚用作外部中断线路
例:
GPIO_EXTILineConfig(GPIO_PortSource_GPIOB,GPIO_PinSource8);
二、外部中断/事件控制器(EXTI)
EXTI寄存器结构
EXTI_TypeDef,在文件“stm32f10x_map.h”中定义如下:
typedefstruct
{
vu32IMR;
vu32EMR;
vu32RTSR;
vu32FTSR;
vu32SWIER;
vu32PR;
}
EXTI_TypeDef;
EXTI库函数
1函数EXTI_DeInit
功能描述:
将外设EXTI寄存器重设为缺省值
例:
EXTI_DeInit();
2函数EXTI_Init
功能描述:
根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器
例:
EXTI_InitTypeDefEXTI_InitStructure;
EXTI_InitStructure.EXTI_Line=EXTI_Line12|EXTI_Line14;
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd=ENABLE;
EXTI_Init(&EXTI_InitStructure);
EXTI_InitTypeDefstructure
EXTI_InitTypeDef定义于文件“stm32f10x_exti.h”:
typedefstruct
{u32EXTI_Line;
EXTIMode_TypeDefEXTI_Mode;
EXTIrigger_TypeDefEXTI_Trigger;
FunctionalStateEXTI_LineCmd;
}
EXTI_InitTypeDef;
EXTI_Line
EXTI_Line选择了待使能或者失能的外部线路。
EXTI_Linex:
外部中断线x(0--18)
EXTI_Mode
EXTI_Mode:
设置了被使能线路的模式。
EXTI_Mode_Event:
设置EXTI线路为事件请求
EXTI_Mode_Interrupt:
设置EXTI线路为中断请求
EXTI_Trigger
EXTI_Trigger:
设置了被使能线路的触发边沿。
EXTI_Trigger_Falling:
设置输入线路下降沿为中断请求
EXTI_Trigger_Rising:
设置输入线路上升沿为中断请求
EXTI_Trigger_Rising_Falling:
设置输入线路上升沿和下降沿为中断请求
EXTI_LineCmd
EXTI_LineCmd用来定义选中线路的新状态。
它可以被设为ENABLE或者DISABLE。
3函数EXTI_StructInit
功能描述:
把EXTI_InitStruct中的每一个参数按缺省值填入
例:
EXTI_InitTypeDefEXTI_InitStructure;
EXTI_StructInit(&EXTI_InitStructure);
EXTI_InitStruct缺省值
EXTI_Line:
EXTI_LineNone
EXTI_Mode:
EXTI_Mode_Interrupt
EXTI_Trigger:
EXTI_Trigger_Falling
EXTI_LineCmd:
DISABLE
4函数EXTI_GenerateSWInterrupt
功能描述:
产生一个软件中断
例:
EXTI_GenerateSWInterrupt(EXTI_Line6);
5函数EXTI_GetFlagStatus
功能描述:
检查指定的EXTI线路标志位设置与否
例:
FlagStatusEXTIStatus;
EXTIStatus=EXTI_GetFlagStatus(EXTI_Line8);
6函数EXTI_ClearFlag
功能描述:
清除EXTI线路挂起标志位
例:
EXTI_ClearFlag(EXTI_Line2);
7函数EXTI_GetITStatus
功能描述:
检查指定的EXTI线路触发请求发生与否
例:
ITStatusEXTIStatus;
EXTIStatus=EXTI_GetITStatus(EXTI_Line8);
8函数EXTI_ClearITPendingBit
功能描述:
清除EXTI线路挂起位
例:
EXTI_ClearITpendingBit(EXTI_Line2);
三、通用定时器(TIM)
TIM寄存器结构
TIM_TypeDeff,在文件“stm32f10x_map.h”中定义如下:
typedefstruct
{
vu16CR1;
u16RESERVED0;
vu16CR2;
u16RESERVED1;
vu16SMCR;
u16RESERVED2;
vu16DIER;
u16RESERVED3;
vu16SR;
u16RESERVED4;
vu16EGR;
u16RESERVED5;
vu16CCMR1;
u16RESERVED6;
vu16CCMR2;
u16RESERVED7;
vu16CCER;
u16RESERVED8;
vu16CNT;
u16RESERVED9;
vu16PSC;
u16RESERVED10;
vu16ARR;
u16RESERVED11[3];
vu16CCR1;
u16RESERVED12;
vu16CCR2;
u16RESERVED13;
vu16CCR3;
u16RESERVED14;
vu16CCR4;
u16RESERVED15[3];
vu16DCR;
u16RESERVED16;
vu16DMAR;
u16RESERVED17;
}
TIM_TypeDef;
TIM库函数
1函数TIM_DeInit
功能描述:
将外设TIMx寄存器重设为缺省值
例:
TIM_DeInit(TIM2);
2函数TIM_TimeBaseInit
功能描述:
根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
例:
TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period=0xFFFF;
TIM_TimeBaseStructure.TIM_Prescaler=0xF;
TIM_TimeBaseStructure.TIM_ClockDivision=0x0;
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);
TIM_TimeBaseInitTypeDefstructure
TIM_TimeBaseInitTypeDef定义于文件“stm32f10x_tim.h”:
typedefstruct
{
u16TIM_Period;
u16TIM_Prescaler;
u8TIM_ClockDivision;
u16TIM_CounterMode;
}TIM_TimeBaseInitTypeDef;
TIM_Period
TIM_Period设置了在下一个更新事件装入活动的自动重装载寄存器周期的值。
它的取值必须在0x0000和0xFFFF之间。
TIM_Prescale