欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > STM32库函数简介(重点)

STM32库函数简介(重点)

2025/5/23 4:47:01 来源:https://blog.csdn.net/weixin_46547922/article/details/148102654  浏览:    关键词: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.

typedef signed long s32;

typedef signed short s16;

typedef signed char s8;

typedef signed long const sc32; /* Read Only */

typedef signed short const sc16; /* Read Only */

typedef signed char const sc8; /* Read Only */

typedef volatile signed long vs32;

typedef volatile signed short vs16;

typedef volatile signed char vs8;

typedef volatile signed long const vsc32; /* Read Only */

typedef volatile signed short const vsc16; /* Read Only */

typedef volatile signed char const vsc8; /* Read Only */

typedef unsigned long u32;

typedef unsigned short u16;

typedef unsigned char u8;

typedef unsigned long const uc32; /* Read Only */

typedef unsigned short const uc16; /* Read Only */

typedef unsigned char const uc8; /* Read Only */

typedef volatile unsigned long vu32;

typedef volatile unsigned short vu16;

typedef volatile unsigned char vu8;

typedef volatile unsigned long const vuc32; /* Read Only */

typedef volatile unsigned short const vuc16; /* Read Only */

typedef volatile unsigned char const vuc8; /* Read Only */

一、通用输入/输出(GPIO

GPIO寄存器结构

GPIO_TypeDefAFIO_TypeDef,在文件“stm32f10x_map.h”中定义如下:

typedef struct

{

vu32 CRL;

vu32 CRH;

vu32 IDR;

vu32 ODR;

vu32 BSRR;

vu32 BRR;

vu32 LCKR;

}

GPIO_TypeDef;

typedef struct

{

vu32 EVCR;

vu32 MAPR;

vu32 EXTICR[4];

}

AFIO_TypeDef;

GPIO库函数

1 函数GPIO_DeInit

功能描述:将外设GPIOx寄存器重设为缺省值

例:

GPIO_DeInit(GPIOA);

2 函数GPIO_AFIODeInit

功能描述:将复用功能(重映射事件控制和EXTI设置)重设为缺省值

例:

GPIO_AFIODeInit();

3 函数GPIO_Init

功能描述:根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器

例:

GPIO_InitTypeDef GPIO_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_InitTypeDef structure

GPIO_InitTypeDef定义于文件“stm32f10x_gpio.h”

typedef struct

{

u16 GPIO_Pin;

GPIOSpeed_TypeDef GPIO_Speed;

GPIOMode_TypeDef GPIO_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_InitTypeDef GPIO_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

功能描述:读取指定端口管脚的输入

例:

u8 ReadValue;

ReadValue = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_7);

6 函数GPIO_ReadInputData

功能描述:读取指定的GPIO端口输入

例:

u16 ReadValue;

ReadValue = GPIO_ReadInputData(GPIOC);

7 函数GPIO_ReadOutputDataBit

功能描述:读取指定端口管脚的输出

例:

u8 ReadValue;

ReadValue = GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_7);

8 函数GPIO_ReadOutputData

功能描述:读取指定的GPIO端口输出

例:

u16 ReadValue;

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”中定义如下:

typedef struct

{

vu32 IMR;

vu32 EMR;

vu32 RTSR;

vu32 FTSR;

vu32 SWIER;

vu32 PR;

}

EXTI_TypeDef;

EXTI库函数

1 函数EXTI_DeInit

功能描述:将外设EXTI寄存器重设为缺省值

例:

EXTI_DeInit();

2 函数EXTI_Init

功能描述:根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器

例:

EXTI_InitTypeDef EXTI_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_InitTypeDef structure

EXTI_InitTypeDef定义于文件“stm32f10x_exti.h”:

typedef struct

{ u32 EXTI_Line;

EXTIMode_TypeDef EXTI_Mode;

EXTIrigger_TypeDef EXTI_Trigger;

FunctionalState EXTI_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_InitTypeDef EXTI_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线路标志位设置与否

例:

FlagStatus EXTIStatus;

EXTIStatus = EXTI_GetFlagStatus(EXTI_Line8);

6 函数EXTI_ClearFlag

功能描述:清除EXTI线路挂起标志位

例:

EXTI_ClearFlag(EXTI_Line2);

7 函数EXTI_GetITStatus

功能描述:检查指定的EXTI线路触发请求发生与否

例:

ITStatus EXTIStatus;

EXTIStatus = EXTI_GetITStatus(EXTI_Line8);

8 函数EXTI_ClearITPendingBit

功能描述:清除EXTI线路挂起位

例:

EXTI_ClearITpendingBit(EXTI_Line2);

三、通用定时器(TIM)

TIM寄存器结构

TIM_TypeDeff,在文件“stm32f10x_map.h”中定义如下:

typedef struct

{

vu16 CR1;

u16 RESERVED0;

vu16 CR2;

u16 RESERVED1;

vu16 SMCR;

u16 RESERVED2;

vu16 DIER;

u16 RESERVED3;

vu16 SR;

u16 RESERVED4;

vu16 EGR;

u16 RESERVED5;

vu16 CCMR1;

u16 RESERVED6;

vu16 CCMR2;

u16 RESERVED7;

vu16 CCER;

u16 RESERVED8;

vu16 CNT;

u16 RESERVED9;

vu16 PSC;

u16 RESERVED10;

vu16 ARR;

u16 RESERVED11[3];

vu16 CCR1;

u16 RESERVED12;

vu16 CCR2;

u16 RESERVED13;

vu16 CCR3;

u16 RESERVED14;

vu16 CCR4;

u16 RESERVED15[3];

vu16 DCR;

u16 RESERVED16;

vu16 DMAR;

u16 RESERVED17;

}

TIM_TypeDef;

TIM库函数

1 函数TIM_DeInit

功能描述:将外设TIMx寄存器重设为缺省值

例:

TIM_DeInit(TIM2);

2 函数TIM_TimeBaseInit

功能描述:根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位

例:

TIM_TimeBaseInitTypeDef TIM_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_TimeBaseInitTypeDef structure

TIM_TimeBaseInitTypeDef定义于文件“stm32f10x_tim.h”

typedef struct

{

u16 TIM_Period;

u16 TIM_Prescaler;

u8 TIM_ClockDivision;

u16 TIM_CounterMode;

} TIM_TimeBaseInitTypeDef;

TIM_Period

TIM_Period设置了在下一个更新事件装入活动的自动重装载寄存器周期的值。它的取值必须在0x00000xFFFF之间。

TIM_Prescaler

TIM_Prescaler设置了用来作为TIMx时钟频率除数的预分频值。它的取值必须在0x00000xFFFF之间。

TIM_ClockDivision

TIM_ClockDivision设置了时钟分割。

TIM_CKD_DIV1:TDTS = Tck_tim

TIM_CKD_DIV2:TDTS = 2Tck_tim

TIM_CKD_DIV4:TDTS = 4Tck_tim

TIM_CounterMode

TIM_CounterMode选择了计数器模式。

TIM_CounterMode_Up:TIM向上计数模式

TIM_CounterMode_Down:TIM向下计数模式

TIM_CounterMode_CenterAligned1:TIM中央对齐模式1计数模式

TIM_CounterMode_CenterAligned2:TIM中央对齐模式2计数模式

TIM_CounterMode_CenterAligned3:TIM中央对齐模式3计数模式

3 函数TIM_OCInit

功能描述:根据TIM_OCInitStruct中指定的参数初始化外设TIMx

例:

TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

TIM_OCInitStructure.TIM_Channel = TIM_Channel_1;

TIM_OCInitStructure.TIM_Pulse = 0x3FFF;

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

TIM_OCInit(TIM2, & TIM_OCInitStructure);

TIM_OCInitStruct:

指向结构TIM_OCInitTypeDef的指针,包含了TIMx时间基数单位的配置信息

TIM_OCInitTypeDef structure

TIM_OCInitTypeDef定义于文件“stm32f10x_tim.h”

typedef struct

{

u16 TIM_OCMode;

u16 TIM_Channel;

u16 TIM_Pulse;

u16 TIM_OCPolarity;

}

TIM_OCInitTypeDef;

TIM_OCMode

TIM_OCMode选择定时器模式。

TIM_OCMode_Timing:TIM输出比较时间模式

TIM_OCMode_Active:TIM输出比较主动模式

TIM_OCMode_Inactive:TIM输出比较非主动模式

TIM_OCMode_Toggle:TIM输出比较触发模式

TIM_OCMode_PWM1:TIM脉冲宽度调制模式1

TIM_OCMode_PWM2:TIM脉冲宽度调制模式2

TIM_Channel

TIM_Channel选择通道。

TIM_Channel_1:使用TIM通道1

TIM_Channel_2:使用TIM通道2

TIM_Channel_3:使用TIM通道3

TIM_Channel_4:使用TIM通道4

TIM_Pulse

TIM_Pulse设置了待装入捕获比较寄存器的脉冲值。它的取值必须在0x00000xFFFF之间。

TIM_OCPolarity

TIM_OCPolarity输出极性。

TIM_OCPolarity_High:TIM输出比较极性高

TIM_OCPolarity_Low:TIM输出比较极性低

4 函数TIM_ICInit

功能描述:根据TIM_ICInitStruct中指定的参数初始化外设TIMx

例:

TIM_DeInit(TIM2);

TIM_ICStructInit(&TIM_ICInitStructure);

TIM_ICInitStructure.TIM_ICMode = TIM_ICMode_PWMI;

TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;

TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;

TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;

TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;

TIM_ICInitStructure.TIM_ICFilter = 0x0;

TIM_ICInit(TIM2, &TIM_ICInitStructure);

TIM_ICInitStruct:指向结构TIM_ICInitTypeDef的指针,包含了TIMx的配置信息

TIM_ICInitTypeDef structure

TIM_ICInitTypeDef定义于文件“stm32f10x_tim.h”

typedef struct

{

u16 TIM_ICMode;

u16 TIM_Channel;

u16 TIM_ICPolarity;

u16 TIM_ICSelection;

u16 TIM_ICPrescaler;

u16 TIM_ICFilter;

}

TIM_ICInitTypeDef;

TIM_ICMode

TIM_ICMode选择了TIM输入捕获模式。

TIM_ICMode_ICAP:TIM使用输入捕获模式

TIM_ICMode_PWMI:TIM使用输入PWM模式

TIM_Channel

TIM_Channel选择通道。

TIM_Channel_1 使用TIM通道1

TIM_Channel_2 使用TIM通道2

TIM_Channel_3 使用TIM通道3

TIM_Channel_4 使用TIM通道4

TIM_ICPolarity

TIM_ICPolarity输入活动沿。

TIM_ICPolarity_Rising:TIM输入捕获上升沿

TIM_ICPolarity_Falling:TIM输入捕获下降沿

TIM_ICSelection

TIM_ICSelection选择输入。

TIM_ICSelection_DirectTI:TIM输入2,3或4选择对应地与IC1或IC2或IC3或IC4相连

TIM_ICSelection_IndirectTI:TIM输入2,3或4选择对应地与IC2或IC1或IC4或IC3相连

TIM_ICSelection_TRC:TIM输入2,3或4选择与TRC相连

TIM_ICPrescaler

TIM_ICPrescaler设置输入捕获预分频器。

TIM_ICPSC_DIV1:TIM捕获在捕获输入上每探测到一个边沿执行一次

TIM_ICPSC_DIV2:TIM捕获每2个事件执行一次

TIM_ICPSC_DIV3:TIM捕获每3个事件执行一次

TIM_ICPSC_DIV4:TIM捕获每4个事件执行一次

TIM_ICFilter

TIM_ICFilter选择输入比较滤波器。该参数取值在0x0和0xF之间。

5 函数TIM_TimeBaseStructInit

功能描述:把TIM_TimeBaseInitStruct中的每一个参数按缺省值填入

TIM_TimeBaseInitStruct:指向结构TIM_TimeBaseInitTypeDef的指针,待初始化

TIM_TimeBaseInitStruct缺省值

TIM_Period:TIM_Period_Reset_Mask

TIM_Prescaler:TIM_Prescaler_Reset_Mask

TIM_CKD:TIM_CKD_DIV1

TIM_CounterMode:TIM_CounterMode_Up

例:

TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;

TIM_TimeBaseStructInit(& TIM_TimeBaseInitStructure);

6 函数TIM_OCStructInit

功能描述:把TIM_OCInitStruct中的每一个参数按缺省值填入

TIM_OCInitStruct:指向结构TIM_OCInitTypeDef的指针,待初始化

例:

TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_OCStructInit(& TIM_OCInitStructure);

TIM_OCInitStruct缺省值

TIM_OCMode:TIM_OCMode_Timing

TIM_Channel:TIM_Channel_1

TIM_Pulse:TIM_Pulse_Reset_Mask

TIM_OCPolarity:TIM_OCPolarity_High

7 函数TIM_ICStructInit

功能描述:把TIM_ICInitStruct中的每一个参数按缺省值填入

TIM_ICInitStruct:指向结构TIM_ICInitTypeDef的指针,待初始化

例:

TIM_ICInitTypeDef TIM_ICInitStructure;

TIM_ICStructInit(& TIM_ICInitStructure);

TIM_ICInitStruct缺省值

TIM_ICMode:TIM_ICMode_ICAP

TIM_Channel:TIM_Channel_1

TIM_ICPolarity:TIM_ICPolarity_Rising

TIM_ICSelection:TIM_ICSelection_DirectTI

TIM_ICPrescaler:TIM_ICPSC_DIV1

TIM_ICFilter:TIM_ICFilter_Mask

8 函数TIM_Cmd

功能描述:使能或者失能TIMx外设

例:

TIM_Cmd(TIM2, ENABLE);

9 函数TIM _ITConfig

功能描述:使能或者失能指定的TIM中断

例:

TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE );

TIM_IT

输入参数TIM_IT使能或者失能TIM的中断

TIM_IT_Update TIM中断源

TIM_IT_CC1:TIM捕获/比较1中断源

TIM_IT_CC2:TIM捕获/比较2中断源

TIM_IT_CC3:TIM捕获/比较3中断源

TIM_IT_CC4:TIM捕获/比较4中断源

TIM_IT_Trigger:TIM触发中断源

10 函数TIM_DMAConfig

功能描述:设置TIMx的DMA接口

例:

TIM_DMAConfig(TIM2, TIM_DMABase_CCR1, TIM_DMABurstLength_1Byte)

TIM_DMABase

TIM_DMABase 设置DMA传输起始地址。

TIM_DMABase_CR1:TIM CR1寄存器作为DMA传输起始

TIM_DMABase_CR2:TIM CR2寄存器作为DMA传输起始

TIM_DMABase_SMCR:TIM SMCR寄存器作为DMA传输起始

TIM_DMABase_DIER:TIM DIER寄存器作为DMA传输起始

TIM_DMABase_SR:TIM SR寄存器作为DMA传输起始

TIM_DMABase_EGR:TIM EGR寄存器作为DMA传输起始

TIM_DMABase_CCMR1:TIM CCMR1寄存器作为DMA传输起始

TIM_DMABase_CCMR2:TIM CCMR2寄存器作为DMA传输起始

TIM_DMABase_CCER:TIM CCER寄存器作为DMA传输起始

TIM_DMABase_CNT:TIM CNT寄存器作为DMA传输起始

TIM_DMABase_PSC:TIM PSC寄存器作为DMA传输起始

TIM_DMABase_ARR:TIM APR寄存器作为DMA传输起始

TIM_DMABase_CCR1:TIM CCR1寄存器作为DMA传输起始

TIM_DMABase_CCR2:TIM CCR2寄存器作为DMA传输起始

TIM_DMABase_CCR3:TIM CCR3寄存器作为DMA传输起始

TIM_DMABase_CCR4:TIM CCR4寄存器作为DMA传输起始

TIM_DMABase_DCR:TIM DCR寄存器作为DMA传输起始

TIM_DMABurstLength

TIM_DMABurstLength设置DMA连续传送长度。

TIM_DMABurstLength_xByte:TIM DMA连续传送长度x字(1--18)

11 函数TIM_DMACmd

功能描述:使能或者失能指定的TIMx的DMA请求

例:

TIM_DMACmd(TIM2, TIM_DMA_CC1, ENABLE);

TIM_DMASource

输入参数TIM_DMASource使能或者失能TIM的中断。

TIM_DMA_Update TIM更新DMA源

TIM_DMA_CC1:TIM捕获/比较1DMA源

TIM_DMA_CC2:TIM捕获/比较2DMA源

TIM_DMA_CC3:TIM捕获/比较3DMA源

TIM_DMA_CC4:TIM捕获/比较4DMA源

TIM_DMA_Trigger:TIM触发DMA源

12 函数TIM_InternalClockConfig

功能描述:设置TIMx内部时钟

例:

TIM_InternalClockConfig(TIM2);

13 函数TIM_ITRxExternalClockConfig

功能描述:设置TIMx内部触发为外部时钟模式

例:

TIM_ITRxExternalClockConfig(TIM2, TIM_TS_ITR3);

TIM_InputTriggerSource

TIM_InputTriggerSource选择TIM输入触发。

TIM_TS_ITRx:TIM内部触发x(0--3)

14 函数TIM_TIxExternalClockConfig

功能描述:设置TIMx触发为外部时钟

例:

TIM_TIxExternalClockConfig(TIM2, TIM_TS_TI1FP1,

TIM_ICPolarity_Rising, 0);

TIM_TIxExternalCLKSource

TIM_TIxExternalCLKSource选择TIMx外部时钟源。

TIM_TS_TI1FP1:TIM IC1连接到TI1

TIM_TS_TI1FP2:TIM IC2连接到TI2

TIM_TS_TI1F_ED:TIM IC1连接到TI1:使用边沿探测

15 函数TIM_ETRClockMode1Config

功能描述:配置TIMx外部时钟模式1

例:

TIM_ExternalCLK1Config(TIM2, TIM_ExtTRGPSC_DIV2,TIM_ExtTRGPolarity_NonInverted, 0x0);

TIM_ExtTRGPrescaler

TIM_ExtTRGPrescaler设置TIMx外部触发预分频。

TIM_ExtTRGPSC_OFF:TIM ETRP 预分频 OFF

TIM_ExtTRGPSC_DIV2:TIM ETRP频率除以2

TIM_ExtTRGPSC_DIV4:TIM ETRP频率除以4

TIM_ExtTRGPSC_DIV8:TIM ETRP频率除以8

TIM_ExtTRGPolarity

TIM_ExtTRGPolarity设置TIMx外部触发极性。

TIM_ExtTRGPolarity_Inverted:TIM外部触发极性翻转:低电平或下降沿有效

TIM_ExtTRGPolarity_NonInverted:TIM外部触发极性非翻转:高电平或上升沿有效

16 函数TIM_ETRClockMode2Config

功能描述:配置TIMx外部时钟模式2

例:

TIM_ExternalCLK2Config(TIM2, TIM_ExtTRGPSC_DIV2,

TIM_ExtTRGPolarity_NonInverted, 0x0);

17 函数TIM_ETRConfig

功能描述:配置TIMx外部触发

例:

TIM_ExternalCLK2Config(TIM2, TIM_ExtTRGPSC_DIV2,

TIM_ExtTRGPolarity_NonInverted, 0x0);

18 函数TIM_SelectInputTrigger

功能描述:选择TIMx输入触发源

例:

void TIM_SelectInputTrigger(TIM2, TIM_TS_ITR3);

TIM_InputTriggerSource

TIM_InputTriggerSource选择TIMx输入触发源。

TIM_TS_ITR0:TIM内部触发0

TIM_TS_ITR1:TIM内部触发1

TIM_TS_ITR2:TIM内部触发2

TIM_TS_ITR3:TIM内部触发3

TIM_TS_TI1F_ED:TIM TL1 边沿探测器

TIM_TS_TI1FP1:TIM经滤波定时器输入1

TIM_TS_TI2FP2:TIM经滤波定时器输入2

TIM_TS_ETRF:TIM外部触发输入

19 函数TIM_PrescalerConfig

功能描述:设置TIMx预分频

例:

u16 TIMPrescaler = 0xFF00;

TIM_PrescalerConfig(TIM2, TIMPrescaler, TIM_PSCReloadMode_Immediate);

TIM_PSCReloadMode

TIM_PSCReloadMode选择预分频重载模式。

TIM_PSCReloadMode_Update:TIM预分频值在更新事件装入

TIM_PSCReloadMode_Immediate:TIM预分频值即时装入

20 函数TIM_CounterModeConfig

功能描述:设置TIMx计数器模式

例:

TIM_CounterModeConfig(TIM2, TIM_Counter_CenterAligned1);

21 函数TIM_ForcedOC1Config

功能描述:置TIMx输出1为活动或者非活动电平

例:

TIM_ForcedOC1Config(TIM2, TIM_ForcedAction_Active);

TIM_ForcedAction

输出信号的设置动作取值

TIM_ForcedAction_Active:置为OCxREF上的活动电平

TIM_ForcedAction_InActive:置为OCxREF上的非活动电平

22 函数TIM_ForcedOC2Config

功能描述:置TIMx输出2为活动或者非活动电平

例:

TIM_ForcedOC2Config(TIM2, TIM_ForcedAction_Active);

23 函数TIM_ForcedOC3Config

功能描述:置TIMx输出3为活动或者非活动电平

例:

TIM_ForcedOC3Config(TIM2, TIM_ForcedAction_Active);

24 函数TIM_ForcedOC4Config

功能描述:置TIMx输出4为活动或者非活动电平

例:

TIM_ForcedOC4Config(TIM2, TIM_ForcedAction_Active);

25 函数TIM_ARRPreloadConfig

功能描述:使能或者失能TIMx在ARR上的预装载寄存器

例:

TIM_ARRPreloadConfig(TIM2, ENABLE);

26 函数TIM_SelectCCDMA

功能描述:选择TIMx外设的捕获比较DMA源

例:

TIM_SelectCCDMA(TIM2, ENABLE);

27 函数TIM_OC1PreloadConfig

功能描述:使能或者失能TIMx在CCR1上的预装载寄存器

例:

TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);

TIM_OCPreload

输出比较预装载状态可以使能或者失能

TIM_OCPreload_Enable:TIMx在CCR1上的预装载寄存器使能

TIM_OCPreload_Disable:TIMx在CCR1上的预装载寄存器失能

28 函数TIM_OC2PreloadConfig

功能描述:使能或者失能TIMx在CCR2上的预装载寄存器

例:

TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable);

29 函数TIM_OC3PreloadConfig

功能描述:使能或者失能TIMx在CCR3上的预装载寄存器

例:

TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable);

30 函数TIM_OC4PreloadConfig

功能描述:使能或者失能TIMx在CCR4上的预装载寄存器

例:

TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable);

31 函数TIM_OC1FastConfig

功能描述:设置TIMx捕获比较1快速特征

例:

TIM_OC1FastConfig(TIM2, TIM_OCFast_Enable);

TIM_OCFast

输出比较快速特征性能可以使能或者失能

TIM_OCFast_Enable:TIMx输出比较快速特征性能使能

TIM_OCFast_Disable:TIMx输出比较快速特征性能失能

32 函数TIM_OC2FastConfig

功能描述:设置TIMx捕获比较2快速特征

例:

TIM_OC2FastConfig(TIM2, TIM_OCFast_Enable);

33 函数TIM_OC3FastConfig

功能描述:设置TIMx捕获比较3快速特征

例:

TIM_OC3FastConfig(TIM2, TIM_OCFast_Enable);

34 函数TIM_OC4FastConfig

功能描述:设置TIMx捕获比较4快速特征

例:

TIM_OC4FastConfig(TIM2, TIM_OCFast_Enable);

35 函数TIM_ClearOC1Ref

功能描述:在一个外部事件时清除或者保持OCREF1信号

例:

TIM_ClearOC1Ref(TIM2, TIM_OCClear_Enable);

TIM_OCClear

输出比较清除使能位的值

TIM_OCClear_Enable:TIMx输出比较清除使能

TIM_OCClear_Disable:TIMx输出比较清除失能

36 函数TIM_ClearOC2Ref

功能描述:在一个外部事件时清除或者保持OCREF2信号

例:

TIM_ClearOC2Ref(TIM2, TIM_OCClear_Enable);

37 函数TIM_ClearOC3Ref

功能描述:在一个外部事件时清除或者保持OCREF3信号

例:

TIM_ClearOC3Ref(TIM2, TIM_OCClear_Enable);

38 函数TIM_ClearOC4Ref

功能描述:在一个外部事件时清除或者保持OCREF4信号

例:

TIM_ClearOC4Ref(TIM2, TIM_OCClear_Enable);

39 函数TIM_UpdateDisableConfig

功能描述:使能或者失能TIMx更新事件

例:

TIM_UpdateDisableConfig(TIM2, DISABLE);

40 函数TIM_EncoderInterfaceConfig

功能描述:设置TIMx编码界面

例:

TIM_EncoderInterfaceConfig(TIM2, TIM_EncoderMode_TI1, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);

TIM_EncoderMode

TIM_EncoderMode选择TIMx编码模式。

TIM_EncoderMode_TI1 使用TIM编码模式1

TIM_EncoderMode_TI1 使用TIM编码模式2

TIM_EncoderMode_TI12 使用TIM编码模式3

41 函数TIM_GenerateEvent

功能描述:设置TIMx事件由软件产生

例:

TIM_GenerateEvent(TIM2, TIM_EventSource_Trigger);

TIM_EventSource

TIM_EventSource选择TIM软件事件源。

TIM_EventSource_Update:TIM更新事件源

TIM_EventSource_CC1:TIM捕获比较1事件源

TIM_EventSource_CC2:TIM捕获比较2事件源

TIM_EventSource_CC3:TIM捕获比较3事件源

TIM_EventSource_CC4:TIM捕获比较4事件源

TIM_EventSource_Trigger:TIM触发事件源

42 函数TIM_OC1PolarityConfig

功能描述:设置TIMx通道1极性

例:

TIM_OC1PolarityConfig(TIM2, TIM_OCPolarity_High);

43 函数TIM_OC2PolarityConfig

功能描述:设置TIMx通道2极性

例:

TIM_OC2PolarityConfig(TIM2, TIM_OCPolarity_High);

44 函数TIM_OC3PolarityConfig

功能描述:设置TIMx通道3极性

例:

TIM_OC3PolarityConfig(TIM2, TIM_OCPolarity_High);

45 函数TIM_OC4PolarityConfig

功能描述:设置TIMx通道4极性

例:

TIM_OC4PolarityConfig(TIM2, TIM_OCPolarity_High);

46 函数TIM_UpdateRequestConfig

功能描述:设置TIMx更新请求源

例:

TIM_UpdateRequestConfig(TIM2, TIM_UpdateSource_Regular);

TIM_UpdateSource

TIM_UpdateSource选择TIM更新源。

TIM_UpdateSource_Global:生成重复的脉冲:在更新事件时计数器不停止

TIM_UpdateSource_Regular:生成单一的脉冲:计数器在下一个更新事件停止

47 函数TIM_SelectHallSensor

功能描述:使能或者失能TIMx霍尔传感器接口

例:

TIM_SelectHallSensor(TIM2, ENABLE);

48 函数TIM_SelectOnePulseMode

功能描述:设置TIMx单脉冲模式

例:

TIM_SelectOnePulseMode(TIM2, TIM_OPMode_Single);

TIM_OPMode

TIM_OPMode选择TIM更新源。

TIM_OPMode_Repetitive:生成重复的脉冲:在更新事件时计数器不停止

TIM_OPMode_Single:生成单一的脉冲:计数器在下一个更新事件停止

49 函数TIM_SelectOutputTrigger

功能描述:选择TIMx触发输出模式

例:

TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);

TIM_TRGOSource

TIM_TRGOSource选择TIM触发输出源。

TIM_TRGOSource_Reset: 使用寄存器TIM_EGR的UG位作为触发输出(TRGO)

TIM_TRGOSource_Enable:使用计数器使能CEN作为触发输出(TRGO)

TIM_TRGOSource_Update:使用更新事件作为触发输出(TRGO)

TIM_TRGOSource_OC1:一旦捕获或者比较匹配发生,当标志位CC1F被设置时触发输出发送一个肯定脉冲(TRGO)

TIM_TRGOSource_OC1Ref 使用OC1REF作为触发输出(TRGO)

TIM_TRGOSource_OC2Ref:使用OC2REF作为触发输出(TRGO)

TIM_TRGOSource_OC3Ref:使用OC3REF作为触发输出(TRGO)

TIM_TRGOSource_OC4Ref:使用OC4REF作为触发输出(TRGO)

50 函数TIM_SelectSlaveMode

功能描述:选择TIMx从模式

例:

TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Gated);

TIM_SlaveMode

TIM_SlaveMode选择TIM从模式。

TIM_SlaveMode_Reset:选中触发信号(TRGI)的上升沿重初始化计数器并触发寄存器的更新

TIM_SlaveMode_Gated:当触发信号(TRGI)为高电平计数器时钟使能

TIM_SlaveMode_Trigger:计数器在触发(TRGI)的上升沿开始

TIM_SlaveMode_External1:选中触发(TRGI)的上升沿作为计数器时钟

51 函数TIM_SelectMasterSlaveMode

功能描述:设置或者重置TIMx主/从模式

例:

TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable);

TIM_MasterSlaveMode

TIM_MasterSlaveMode选择TIM/从模式。见Table 543. 参阅该参数的取值。

TIM_MasterSlaveMode_Enable:TIM主/从模式使能

TIM_MasterSlaveMode_Disable:TIM主/从模式失能

52 函数TIM_SetCounter

功能描述:设置TIMx计数器寄存器值

例:

u16 TIMCounter = 0xFFFF;

TIM_SetCounter(TIM2, TIMCounter);

53 函数TIM_SetAutoreload

功能描述:设置TIMx自动重装载寄存器值

例:

u16 TIMAutoreload = 0xFFFF;

TIM_SetAutoreload(TIM2, TIMAutoreload);

54 函数TIM_SetCompare1

功能描述:设置TIMx捕获比较1寄存器值

例:

u16 TIMCompare1 = 0x7FFF;

TIM_SetCompare1(TIM2, TIMCompare1);

55 函数TIM_SetCompare2

功能描述:设置TIMx捕获比较2寄存器值

例:

u16 TIMCompare2 = 0x7FFF;

TIM_SetCompare2(TIM2, TIMCompare2);

56 函数TIM_SetCompare3

功能描述:设置TIMx捕获比较3寄存器值

例:

u16 TIMCompare3 = 0x7FFF;

TIM_SetCompare3(TIM2, TIMCompare3);

57 函数TIM_SetCompare4

功能描述:设置TIMx捕获比较4寄存器值

例:

u16 TIMCompare4 = 0x7FFF;

TIM_SetCompare4(TIM2, TIMCompare4);

58 函数TIM_SetIC1Prescaler

功能描述:设置TIMx输入捕获1预分频

例:

TIM_SetIC1Prescaler(TIM2, TIM_ICPSC_Div2);

59 函数TIM_SetIC2Prescaler

功能描述:设置TIMx输入捕获2预分频

例:

TIM_SetIC2Prescaler(TIM2, TIM_ICPSC_Div2);

60 函数TIM_SetIC3Prescaler

功能描述:设置TIMx输入捕获3预分频

例:

TIM_SetIC3Prescaler(TIM2, TIM_ICPSC_Div2);

61 函数TIM_SetIC4Prescaler

功能描述:设置TIMx输入捕获4预分频

例:

TIM_SetIC4Prescaler(TIM2, TIM_ICPSC_Div2);

62 函数TIM_SetClockDivision

功能描述:设置TIMx的时钟分割值

例:

TIM_SetClockDivision(TIM2, TIM_CKD_DIV4);

63 函数TIM_GetCapture1

功能描述:获得TIMx输入捕获1的值

例:

u16 ICAP1value = TIM_GetCapture1(TIM2);

64 函数TIM_GetCapture2

功能描述:获得TIMx输入捕获2的值

例:

u16 ICAP2value = TIM_GetCapture2(TIM2);

65 函数TIM_GetCapture3

功能描述:获得TIMx输入捕获3的值

例:

u16 ICAP3value = TIM_GetCapture3(TIM2);

66 函数TIM_GetCapture4

功能描述:获得TIMx输入捕获4的值

例:

u16 ICAP4value = TIM_GetCapture4(TIM2);

67 函数TIM_GetCounter

功能描述:获得TIMx计数器的值

例:

u16 TIMCounter = TIM_GetCounter(TIM2);

68 函数TIM_GetPrescaler

功能描述:获得TIMx预分频值

例:

u16 TIMPrescaler = TIM_GetPrescaler(TIM2);

69 函数TIM_GetFlagStatus

功能描述:检查指定的TIM标志位设置与否

例:

if(TIM_GetFlagStatus(TIM2, TIM_FLAG_CC1) == SET)

{

}

TIM_FLAG

TIM_FLAG_Update TIM更新标志位

TIM_FLAG_CC1:TIM捕获/比较1标志位

TIM_FLAG_CC2:TIM捕获/比较2标志位

TIM_FLAG_CC3:TIM捕获/比较3标志位

TIM_FLAG_CC4:TIM捕获/比较4标志位

TIM_FLAG_Trigger:TIM触发标志位

TIM_FLAG_CC1OF:TIM捕获/比较1溢出标志位

TIM_FLAG_CC2OF:TIM捕获/比较2溢出标志位

TIM_FLAG_CC3OF:TIM捕获/比较3溢出标志位

TIM_FLAG_CC4OF:TIM捕获/比较4溢出标志位

70 函数TIM_ClearFlag

功能描述:清除TIMx的待处理标志位

例:

TIM_ClearFlag(TIM2, TIM_FLAG_CC1);

71 函数TIM_GetITStatus

功能描述:检查指定的TIM中断发生与否

例:

if(TIM_GetITStatus(TIM2, TIM_IT_CC1) == SET)

{

}

72 函数TIM_ClearITPendingBit

功能描述:清除TIMx的中断待处理位

例:

TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);

四:ADC寄存器

ADC配置规则

void ADC_Config(void)

{

定义ADC初始化结构体变量  // ADC_Init();

ADC1和ADC2工作模式

使能扫描

ADC转换工作模式

由软件控制转换

转换数据右对齐

设置转换通道

初始化ADC  // ADC_Init();

ADC1选择信道、音序器等级、采样时间

使能ADC1模块DMA

使能ADC1

重置ADC1校准寄存器

等待ADC1校准重置完成

开始ADC1校准

等待ADC1校准完成

使能ADC1软件开始转换

}

ADC寄存器结构

ADC_TypeDef,定义于文件“stm32f10x_map.h”如下:

typedef struct

{

vu32 SR;

vu32 CR1;

vu32 CR2;

vu32 SMPR1;

vu32 SMPR2;

vu32 JOFR1;

vu32 JOFR2;

vu32 JOFR3;

vu32 JOFR4;

vu32 HTR;

vu32 LTR;

vu32 SQR1;

vu32 SQR2;

vu32 SQR3;

vu32 JSQR;

vu32 JDR1;

vu32 JDR2;

vu32 JDR3;

vu32 JDR4;

vu32 DR;

}

ADC_TypeDef;

ADC库函数

1、ADC_DeInit();

功能描述:将外设ADCx的全部寄存器重设为缺省值

例:

ADC_DeInit(ADC2);

2、ADC_Init();

功能描述:根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器

例:

{

ADC_InitTypeDef ADC_InitStructure;

ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;

ADC_InitStructure.ADC_ScanConvMode = ENABLE;

ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;

ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_Ext_IT11;

ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;

ADC_InitStructure.ADC_NbrOfChannel = 16;

ADC_Init(ADC1, &ADC_InitStructure);

}

ADC_InitStruct:指向结构ADC_InitTypeDef的指针,包含了指定外设ADC的配置信息

ADC_InitTypeDef:

typedef struct

{

u32 ADC_Mode;

FunctionalState ADC_ScanConvMode;

FunctionalState ADC_ContinuousConvMode;

u32 ADC_ExternalTrigConv;

u32 ADC_DataAlign;

u8 ADC_NbrOfChannel;

}

ADC_InitTypeDef

ADC_Mode

ADC_Mode_Independent:ADC1和ADC2工作在独立模式

ADC_Mode_RegInjecSimult:ADC1和ADC2工作在同步规则和同步注入模式

ADC_Mode_RegSimult_AlterTrig:ADC1和ADC2工作在同步规则模式和交替触发模式

ADC_Mode_InjecSimult_FastInterl:ADC1和ADC2工作在同步规则模式和快速交替模式

ADC_Mode_InjecSimult_SlowInterl:ADC1和ADC2工作在同步注入模式和慢速交替模式

ADC_Mode_InjecSimult:ADC1和ADC2工作在同步注入模式

ADC_Mode_RegSimult:ADC1和ADC2工作在同步规则模式

ADC_Mode_FastInterl:ADC1和ADC2工作在快速交替模式

ADC_Mode_SlowInterl:ADC1和ADC2工作在慢速交替模式

ADC_Mode_AlterTrig:ADC1和ADC2工作在交替触发模式

例:

ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;

ADC_ScanConvMode

ADC_ScanConvMode规定了模数转换工作在扫描模式(多通道)还是单次(单通道)模式。可以设置这个参数为ENABLE或者DISABLE。

例:

ADC_InitStructure.ADC_ScanConvMode = ENABLE;

ADC_ContinuousConvMode

ADC_ContinuousConvMode规定了模数转换工作在连续还是单次模式。可以设置这个参数为ENABLE或者DISABLE。

例:

ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;

ADC_ExternalTrigConv

ADC_ExternalTrigConv_T1_CC1:选择定时器1的捕获比较1作为转换外部触发

ADC_ExternalTrigConv_T1_CC2:选择定时器1的捕获比较2作为转换外部触发

ADC_ExternalTrigConv_T1_CC3:选择定时器1的捕获比较3作为转换外部触发

ADC_ExternalTrigConv_T2_CC2:选择定时器2的捕获比较2作为转换外部触发

ADC_ExternalTrigConv_T3_TRGO:选择定时器3的TRGO作为转换外部触发

ADC_ExternalTrigConv_T4_CC4:选择定时器4的捕获比较4作为转换外部触发

ADC_ExternalTrigConv_Ext_IT11:选择外部中断线11事件作为转换外部触发

ADC_ExternalTrigConv_None:转换由软件而不是外部触发启动

例:

ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_Ext_IT11;

ADC_DataAlign

ADC_DataAlign_Right:ADC数据右对齐

ADC_DataAlign_Left:ADC数据左对齐

例:

ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;

ADC_NbrOfChannel

ADC_NbreOfChannel 规定了顺序进行规则转换的ADC通道的数目。这个数目的取值范围是1到16。

例:

ADC_InitStructure.ADC_NbrOfChannel = 16;

3 函数ADC_StructInit();

功能描述:把ADC_InitStruct中的每一个参数按缺省值填入,如下:

ADC_Mode:ADC_Mode_Independent

ADC_ScanConvMode:DISABLE

ADC_ContinuousConvMode:DISABLE

ADC_ExternalTrigConv:ADC_ExternalTrigConv_T1_CC1

ADC_DataAlign:ADC_DataAlign_Right

ADC_NbrOfChannel:1

例:

ADC_InitTypeDef ADC_InitStructure;

ADC_StructInit(&ADC_InitStructure);

4 函数ADC_Cmd();

功能描述:使能或者失能指定的ADC

例:

ADC_Cmd(ADC1, ENABLE);

5 函数ADC_DMACmd();

功能描述:使能或者失能指定的ADC的DMA请求

例:

ADC_DMACmd(ADC2, ENABLE);

6 函数ADC_ITConfig();

功能描述:使能或者失能指定的ADC的中断

例:

ADC_ITConfig(ADC2, ADC_IT_EOC | ADC_IT_AWD, ENABLE);

ADC_IT

ADC_IT可以用来使能或者失能ADC中断。可以使用下表中的一个参数,或者他们的组合。

ADC_IT_EOC EOC:中断屏蔽

ADC_IT_AWD AWDOG:中断屏蔽

ADC_IT_JEOC JEOC:中断屏蔽

7 函数ADC_ResetCalibration();

功能描述:重置指定的ADC的校准寄存器

例:

ADC_ResetCalibration(ADC1);

8 函数ADC_GetResetCalibrationStatus();

功能描述:获取ADC重置校准寄存器的状态

例:

FlagStatus Status;

Status = ADC_GetResetCalibrationStatus(ADC2);

9 函数ADC_StartCalibration();

功能描述:开始指定ADC的校准状态

例:

ADC_StartCalibration(ADC2);

10 函数ADC_GetCalibrationStatus();

功能描述:获取指定ADC的校准程序

例:

FlagStatus Status;

Status = ADC_GetCalibrationStatus(ADC2);

11 函数ADC_SoftwareStartConvCmd();

功能描述:使能或者失能指定的ADC的软件转换启动功能

例:

ADC_SoftwareStartConvCmd(ADC1, ENABLE);

12 函数ADC_GetSoftwareStartConvStatus();

功能描述:获取ADC软件转换启动状态

例:

FlagStatus Status; Status = ADC_GetSoftwareStartConvStatus(ADC1);

13 函数ADC_DiscModeChannelCountConfig();

功能描述:对ADC规则组通道配置间断模式

例:

ADC_DiscModeChannelCountConfig(ADC1, 2);

14 函数ADC_DiscModeCmd();

功能描述:使能或者失能指定的ADC规则组通道的间断模式

例:

ADC_DiscModeCmd(ADC1, ENABLE);

15 函数ADC_RegularChannelConfig();

功能描述:设置指定ADC的规则组通道,设置它们的转化顺序和采样时间

例:

ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 1, ADC_SampleTime_7Cycles5);

ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 2, ADC_SampleTime_1Cycles5);

ADC_Channel 参数ADC_Channel指定了通过调用函数ADC_RegularChannelConfig来设置的ADC通道。

ADC_Channel_0:选择ADC通道0

ADC_Channel_1:选择ADC通道1

ADC_Channel_2:选择ADC通道2

ADC_Channel_3:选择ADC通道3

ADC_Channel_4:选择ADC通道4

ADC_Channel_5:选择ADC通道5

ADC_Channel_6:选择ADC通道6

ADC_Channel_7:选择ADC通道7

ADC_Channel_8:选择ADC通道8

ADC_Channel_9:选择ADC通道9

ADC_Channel_10:选择ADC通道10

ADC_Channel_11:选择ADC通道11

ADC_Channel_12:选择ADC通道12

ADC_Channel_13:选择ADC通道13

ADC_Channel_14:选择ADC通道14

ADC_Channel_15:选择ADC通道15

ADC_Channel_16:选择ADC通道16

ADC_Channel_17:选择ADC通道17

ADC_SampleTime

ADC_SampleTime设定了选中通道的ADC采样时间。

ADC_SampleTime_1Cycles5:采样时间为1.5周期

ADC_SampleTime_7Cycles5:采样时间为7.5周期

ADC_SampleTime_13Cycles5:采样时间为13.5周期

ADC_SampleTime_28Cycles5:采样时间为28.5周期

ADC_SampleTime_41Cycles5:采样时间为41.5周期

ADC_SampleTime_55Cycles5:采样时间为55.5周期

ADC_SampleTime_71Cycles5:采样时间为71.5周期

ADC_SampleTime_239Cycles5:采样时间为239.5周期

16 函数ADC_ExternalTrigConvConfig();

功能描述:使能或者失能ADCx的经外部触发启动转换功能

例:

ADC_ExternalTrigConvCmd(ADC1, ENABLE);

17 函数ADC_GetConversionValue();

功能描述:返回最近一次ADCx规则组的转换结果

例:

u16 DataValue;

DataValue = ADC_GetConversionValue(ADC1);

18 函数ADC_GetDuelModeConversionValue();

功能描述:返回最近一次双ADC模式下的转换结果

例:

u32 DataValue;

DataValue = ADC_GetDualModeConversionValue();

19 函数ADC_AutoInjectedConvCmd();

功能描述:使能或者失能指定ADC在规则组转化后自动开始注入组转换

例:

ADC_AutoInjectedConvCmd(ADC2, ENABLE);

20 函数ADC_InjectedDiscModeCmd();

功能描述:使能或者失能指定ADC的注入组间断模式

例:

ADC_InjectedDiscModeCmd(ADC2, ENABLE);

21 函数ADC_ExternalTrigInjectedConvConfig();

功能描述:配置ADCx的外部触发启动注入组转换功能

例:

ADC_ExternalTrigInjectedConvConfig(ADC1,

ADC_ExternalTrigConv_T1_CC4);

ADC_ExternalTrigInjectedConv

ADC_ExternalTrigInjectedConv指定了所使用的注入转换启动触发。

ADC_ExternalTrigInjecConv_T1_TRGO:选择定时器1的TRGO作为注入转换外部触发

ADC_ExternalTrigInjecConv_T1_CC4:选择定时器1的捕获比较4作为注入转换外部触发

ADC_ExternalTrigInjecConv_T2_TRGO:选择定时器2的TRGO作为注入转换外部触发

ADC_ExternalTrigInjecConv_T2_CC1:选择定时器2的捕获比较1作为注入转换外部触发

ADC_ExternalTrigInjecConv_T3_CC4:选择定时器3的捕获比较4作为注入转换外部触发

ADC_ExternalTrigInjecConv_T4_TRGO:选择定时器4的TRGO作为注入转换外部触发

ADC_ExternalTrigInjecConv_Ext_IT15:选择外部中断线15事件作为注入转换外部触发

ADC_ExternalTrigInjecConv_None:注入转换由软件而不是外部触发启动

22 函数ADC_ExternalTrigInjectedConvCmd();

功能描述:使能或者失能ADCx的经外部触发启动注入组转换功能

例:

ADC_ExternalTrigInjectedConvCmd(ADC1, ENABLE);

23 函数ADC_SoftwareStartinjectedConvCmd();

功能描述:使能或者失能ADCx软件启动注入组转换功能

例:

ADC_SoftwareStartInjectedConvCmd(ADC2, ENABLE);

24 函数ADC_GetsoftwareStartinjectedConvStatus();

功能描述:获取指定ADC的软件启动注入组转换状态

例:

FlagStatus Status; Status = ADC_GetSoftwareStartInjectedConvStatus(ADC1);

25 函数ADC_InjectedChannleConfig();

功能描述:设置指定ADC的注入组通道,设置它们的转化顺序和采样时间

例:

ADC_InjectedChannelConfig(ADC1, ADC_Channel_12, 2, ADC_SampleTime_28Cycles5);

ADC_InjectedChannelConfig(ADC2, ADC_Channel_4, 11, ADC_SampleTime_71Cycles5);

26 函数ADC_InjectedSequencerLengthConfig();

功能描述:设置注入组通道的转换序列长度

例:

ADC_InjectedSequencerLengthConfig(ADC1, 4);

27 函数ADC_SetinjectedOffset();

功能描述:设置注入组通道的转换偏移值

例:

ADC_SetInjectedOffset(ADC1, ADC_InjectedChannel_3, 0x100);

ADC_InjectedChannel

参数ADC_InjectedChannel指定了必须设置转换偏移值的ADC通道。

ADC_InjectedChannel_1:选择注入通道1 ADC_InjectedChannel_2 选择注入通道2

ADC_InjectedChannel_3:选择注入通道3 ADC_InjectedChannel_4 选择注入通道4

28 函数ADC_GetInjectedConversionValue();

功能描述:返回ADC指定注入通道的转换结果

例:

u16InjectedDataValue;InjectedDataValue=ADC_GetInjectedConversionValue(ADC1,ADC_InjectedChannel_1);

29 函数ADC_AnalogWatchdogCmd();

功能描述:使能或者失能指定单个/全体,规则/注入组通道上的模拟看门狗

例:

ADC_AnalogWatchdogCmd(ADC2, ADC_AnalogWatchdog_AllRegAllInjecEnable);

30 函数ADC_AnalogWatchdongThresholdsConfig();

功能描述:设置模拟看门狗的高/低阈值

例:

ADC_AnalogWatchdogThresholdsConfig(ADC1, 0x400, 0x100);

31 函数ADC_AnalogWatchdongSingleChannelConfig();

功能描述:对单个ADC通道设置模拟看门狗

例:

ADC_AnalogWatchdogSingleChannelConfig(ADC1, ADC_Channel_1);

32 函数ADC_TampSensorVrefintCmd();

功能描述:使能或者失能温度传感器和内部参考电压通道

例:

ADC_TempSensorVrefintCmd(ENABLE);

33 函数ADC_GetFlagStatus();

功能描述:检查制定ADC标志位置1与否

例:

FlagStatus Status; Status = ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC);

ADC_FLAG

ADC_FLAG_AWD 模拟看门狗标志位 ADC_FLAG_EOC 转换结束标志位 ADC_FLAG_JEOC 注入组转换结束标志位 ADC_FLAG_JSTRT 注入组转换开始标志位 ADC_FLAG_STRT 规则组转换开始标志位

34 函数ADC_ClearFlag();

功能描述:清除ADCx的待处理标志位

例:

ADC_ClearFlag(ADC2, ADC_FLAG_STRT);

35 函数ADC_GetITStatus();

功能描述:检查指定的ADC中断是否发生

例:

ITStatus Status; Status = ADC_GetITStatus(ADC1, ADC_IT_AWD);

36 函数ADC_ClearITPendingBit();

功能描述:清除ADCx的中断待处理位

例:

ADC_ClearITPendingBit(ADC2, ADC_IT_JEOC);

五:备份寄存器(BKP)

BKP寄存器结构

BKP_TypeDef,在文件“stm32f10x_map.h”中定义如下:

typedef struct

{

u32 RESERVED0;

vu16 DR1;

u16 RESERVED1;

vu16 DR2;

u16 RESERVED2;

vu16 DR3;

u16 RESERVED3;

vu16 DR4;

u16 RESERVED4;

vu16 DR5;

u16 RESERVED5;

vu16 DR6;

u16 RESERVED6;

vu16 DR7;

u16 RESERVED7;

vu16 DR8;

u16 RESERVED8;

vu16 DR9;

u16 RESERVED9;

vu16 DR10;

u16 RESERVED10;

vu16 RTCCR;

u16 RESERVED11;

vu16 CR;

u16 RESERVED12;

vu16 CSR;

u16 RESERVED13;

}

BKP_TypeDef;

BKP库函数

1 函数BKP_DeInit();

功能描述:将外设BKP的全部寄存器重设为缺省值

例:

BKP_DeInit();

2 函数BKP_TamperPinLevelConfig();

功能描述:设置侵入检测管脚的有效电平

例:

BKP_TamperPinLevelConfig(BKP_TamperPinLevel_High);

BKP_TamperPinLevel

参数BKP_TamperPinLevel指定了侵入检测管脚的有效电平。

BKP_TamperPinLevel_High:侵入检测管脚高电平有效

BKP_TamperPinLevel_Low:侵入检测管脚低电平有效

3 函数BKP_TamperPinCmd();

功能描述:使能或者失能管脚的侵入检测功能

例:

BKP_TamperPinCmd(ENABLE);

4 函数BKP_ITConfig();

功能描述:使能或者失能侵入检测中断

例:

BKP_ITConfig(ENABLE);

5 函数BKP_RTCOutputConfig();

功能描述:选择在侵入检测管脚上输出的RTC时钟源

例:

BKP_RTCOutputConfig(BKP_RTCOutputSource_CalibClock);

BKP_RTCOutputSource

参数BKP_RTCOutputSource用来选择RTC输出时钟源

BKP_RTCOutputSource_None 侵入检测管脚上无RTC输出

BKP_RTCOutputSource_CalibClock 侵入检测管脚上输出,其时钟频率为RTC时钟除以64

BKP_RTCOutputSource_Alarm 侵入检测管脚上输出RTC闹钟脉冲

BKP_RTCOutputSource_Second 侵入检测管脚上输出RTC秒脉冲

6 函数BKP_SetRTCCalibrationValue();

功能描述:设置RTC时钟校准值

例:

BKP_SetRTCCalibrationValue(0x7F);

7 函数BKP_WriteBackupRegister();

功能描述:向指定的后备寄存器中写入用户程序数据

例:

BKP_WriteBackupRegister(BKP_DR1, 0xA587);

BKP_DR 参数BKP_DR用来选择数据后备寄存器

BKP_DRx:选中数据寄存器x(1—10)

8 函数BKP_ReadBackupRegister();

功能描述:从指定的后备寄存器中读出数据

例:

u16 Data; Data = BKP_ReadBackupRegister(BKP_DR1);

9 函数BKP_GetFlagStatus();

功能描述:检查侵入检测管脚事件的标志位被置位与否

例:

FlagStatus Status;

Status = BKP_GetFlagStatus();

if(Status == RESET)

{ ... }

else

{ ... }

10 函数BKP_ClearFlag();

功能描述:清除侵入检测管脚事件的待处理标志位

例:

BKP_ClearFlag();

11 函数BKP_GetITStatus();

功能描述:检查侵入检测中断发生与否

例:

ITStatus Status;

Status = BKP_GetITStatus();

if(Status == RESET)

{ ... }

else

{ ... }

12 函数BKP_ClearITPendingBit();

功能描述:清除侵侵入检测中断的待处理位

例:

BKP_ClearITPendingBit();

六、DMA控制器(DMA)

DMA寄存器结构

DMA寄存器结构,DMA_Cannel_TypeDefDMA_TypeDef,在文件“stm32f10x_map.h”中定义如下:

typedef struct

{

vu32 CCR;

vu32 CNDTR;

vu32 CPAR;

vu32 CMAR;

}

DMA_Channel_TypeDef;

typedef struct

{

vu32 ISR;

vu32 IFCR;

}

DMA_TypeDef;

DMA库函数

1 函数DMA_DeInit

功能描述:将DMA的通道x寄存器重设为缺省值

例:

DMA_DeInit(DMA_Channel2);

2 函数DMA_Init

功能描述:根据DMA_InitStruct中指定的参数初始化DMA的通道x寄存器

DMA_InitStruct:指向结构DMA_InitTypeDef的指针,包含了DMA通道x的配置信息

DMA_InitTypeDef structure

DMA_InitTypeDef定义于文件“stm32f10x_dma.h”:

typedef struct

{

u32 DMA_PeripheralBaseAddr;

u32 DMA_MemoryBaseAddr;

u32 DMA_DIR; u32 DMA_BufferSize;

u32 DMA_PeripheralInc;

u32 DMA_MemoryInc;

u32 DMA_PeripheralDataSize;

u32 DMA_MemoryDataSize;

u32 DMA_Mode;

u32 DMA_Priority;

u32 DMA_M2M;

}

DMA_InitTypeDef;

DMA_PeripheralBaseAddr

该参数用以定义DMA外设基地址

DMA_MemoryBaseAddr

该参数用以定义DMA内存基地址

DMA_DIR

DMA_DIR规定了外设是作为数据传输的目的地还是来源。

DMA_DIR_PeripheralDST:外设作为数据传输的目的地

DMA_DIR_PeripheralSRC:外设作为数据传输的来源

DMA_BufferSize

DMA_BufferSize用以定义指定DMA通道的DMA缓存的大小,单位为数据单位。根据传输方向,数据单位等于结构中参数DMA_PeripheralDataSize或者参数DMA_MemoryDataSize的值。

DMA_PeripheralInc

DMA_PeripheralInc用来设定外设地址寄存器递增与否

DMA_PeripheralInc_Enable:外设地址寄存器递增

DMA_PeripheralInc_Disable:外设地址寄存器不变

DMA_MemoryInc

DMA_MemoryInc用来设定内存地址寄存器递增与否。

DMA_PeripheralInc_Enable:内存地址寄存器递增

DMA_PeripheralInc_Disable:内存地址寄存器不变

DMA_PeripheralDataSize

DMA_PeripheralDataSize设定了外设数据宽度。

DMA_PeripheralDataSize_Byte:数据宽度为8位

DMA_PeripheralDataSize_HalfWord:数据宽度为16位

DMA_PeripheralDataSize_Word:数据宽度为32位

DMA_MemoryDataSize

DMA_MemoryDataSize设定了外设数据宽度。

DMA_MemoryDataSize_Byte:数据宽度为8位

DMA_MemoryDataSize_HalfWord:数据宽度为16位

DMA_MemoryDataSize_Word:数据宽度为32位

DMA_Mode

DMA_Mode设置了CAN的工作模式,

DMA_Mode_Circular:工作在循环缓存模式

DMA_Mode_Normal:工作在正常缓存模式

DMA_Priority

DMA_Priority设定DMA通道x的软件优先级。

DMA_Priority_VeryHigh:DMA通道x拥有非常高优先级

DMA_Priority_High:DMA通道x拥有高优先级

DMA_Priority_Medium:DMA通道x拥有中优先级

DMA_Priority_Low:DMA通道x拥有低优先级

DMA_M2M

DMA_M2M使能DMA通道的内存到内存传输。

DMA_M2M_Enable:DMA通道x设置为内存到内存传输

DMA_M2M_Disable:DMA通道x没有设置为内存到内存传输

例:

DMA_InitTypeDef DMA_InitStructure;

DMA_InitStructure.DMA_PeripheralBaseAddr = 0x40005400;

DMA_InitStructure.DMA_MemoryBaseAddr = 0x20000100;

DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;

DMA_InitStructure.DMA_BufferSize = 256; DMA_InitStructure.

DMA_PeripheralInc = DMA_PeripheralInc_Disable;

DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;

DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;

DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;

DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;

DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;

DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;

DMA_Init(DMA_Channel1, &DMA_InitStructure);

3 函数DMA_StructInit

功能描述:把DMA_InitStruct中的每一个参数按缺省值填入

DMA_InitStruct:指向结构DMA_InitTypeDef的指针,待初始化

结构DMA_InitStruct的各个成员有如下的缺省值:

DMA_PeripheralBaseAddr:0

DMA_MemoryBaseAddr:0

DMA_DIR:DMA_DIR_PeripheralSRC

DMA_BufferSize:0

DMA_PeripheralInc:DMA_PeripheralInc_Disable

DMA_MemoryInc:DMA_MemoryInc_Disable

DMA_PeripheralDataSize:DMA_PeripheralDataSize_Byte

DMA_MemoryDataSize:DMA_MemoryDataSize_Byte

DMA_Mode:DMA_Mode_Normal

DMA_Priority:DMA_Priority_Low

DMA_M2M:DMA_M2M_Disable

例:

DMA_InitTypeDef DMA_InitStructure;

DMA_StructInit(&DMA_InitStructure);

4 函数DMA_Cmd

功能描述:使能或者失能指定的通道x

例:

DMA_Cmd(DMA_Channel7, ENABLE);

5 函数DMA_ITConfig

功能描述:使能或者失能指定的通道x中断

例:

DMA_ITConfig(DMA_Channel5, DMA_IT_TC, ENABLE);

DMA_IT

输入参数DMA_IT使能或者失能DMA通道x的中断。

DMA_IT_TC:传输完成中断屏蔽

DMA_IT_HT:传输过半中断屏蔽

DMA_IT_TE:传输错误中断屏蔽

6 函数DMA_GetCurrDataCounte

功能描述:返回当前DMA通道x剩余的待传输数据数目

例:

u16 CurrDataCount;

CurrDataCount = DMA_GetCurrDataCounter(DMA_Channel2);

7 函数DMA_GetFlagStatus

功能描述:检查指定的DMA通道x标志位设置与否

例:

FlagStatus Status;

Status = DMA_GetFlagStatus(DMA_FLAG_HT6);

DMA_FLAG 参数DMA_FLAG定义了待检察的标志位类型

DMA_FLAG_GLx:通道x全局标志位

DMA_FLAG_TCx:通道x传输完成标志位

DMA_FLAG_HTx:通道x传输过半标志位

DMA_FLAG_TEx:通道x传输错误标志位(1--7)

8 函数DMA_ClearFlag

功能描述:清除DMA通道x待处理标志位

例:

DMA_ClearFlag(DMA_FLAG_TE3);

9 函数DMA_GetITStatus

功能描述:检查指定的DMA通道x中断发生与否

例:

ITStatus Status;

Status = DMA_GetITStatus(DMA_IT_TC7);

DMA_IT

参数DMA_IT定义了待检察的DMA中断。

DMA_IT_GLx:通道x全局中断

DMA_IT_TCx:通道x传输完成中断

DMA_IT_HTx:通道x传输过半中断

DMA_IT_TEx:通道x传输错误中断(1--7)

10 函数DMA_ClearITPendingBit

功能描述:清除DMA通道x中断待处理标志位

例:

DMA_ClearITPendingBit(DMA_IT_GL5);

七、复位和时钟设置(RCC

RCC寄存器结构

RCC寄存器结构,RCC_TypeDeff,在文件“stm32f10x_map.h”中定义如下:

typedef struct

{

vu32 CR;

vu32 CFGR;

vu32 CIR;

vu32 APB2RSTR;

vu32 APB1RSTR;

vu32 AHBENR;

vu32 APB2ENR;

vu32 APB1ENR;

vu32 BDCR;

vu32 CSR;

}

RCC_TypeDef;

RCC库函数

1 函数RCC_DeInit

功能描述:将外设RCC寄存器重设为缺省值

例:

RCC_DeInit();

1. 该函数不改动寄存器RCC_CRHSITRIM[4:0]位。

2. 该函数不重置寄存器RCC_BDCR和寄存器RCC_CSR

2 函数RCC_HSEConfig

功能描述:设置外部高速晶振(HSE)

例:

RCC_HSEConfig(RCC_HSE_ON);

RCC_HSE

该参数设置了HSE的状态

RCC_HSE_OFF:HSE晶振OFF

RCC_HSE_ON:HSE晶振ON

RCC_HSE_Bypass:HSE晶振被外部时钟旁路

3 函数RCC_WaitForHSEStartUp

功能描述:等待HSE起振,该函数将等待直到HSE就绪,或者在超时的情况下退出

例:

ErrorStatus HSEStartUpStatus;

RCC_HSEConfig(RCC_HSE_ON); /* Enable HSE */

HSEStartUpStatus = RCC_WaitForHSEStartUp();/* Wait till HSE is ready and if Time out is reached exit */

if(HSEStartUpStatus == SUCCESS)

{

/* Add here PLL ans system clock config */

}

else

{

/* Add here some code to deal with this error */

}

4 函数RCC_AdjustHSICalibrationValue

功能描述:调整内部高速晶振(HSI)校准值

例:

RCC_AdjustHSICalibrationValue(0x1F);

5 函数RCC_HSICmd

功能描述:使能或者失能内部高速晶振(HSI)

例:

RCC_HSICmd(ENABLE);

6 函数RCC_PLLConfig

功能描述:设置PLL时钟源及倍频系数

例:

RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

警告:必须正确设置软件,使PLL输出时钟频率不超过72 MHz

RCC_PLLSource

RCC_PLLSource用以设置PLL的输入时钟源。

RCC_PLLSource_HSI_Div2:PLL的输入时钟 = HSI时钟频率除以2

RCC_PLLSource_HSE_Div1:PLL的输入时钟 = HSE时钟频率

RCC_PLLSource_HSE_Div2:PLL的输入时钟 = HSE 时钟频率除以2

RCC_PLLMul

该参数用以设置PLL的倍频系数。

RCC_PLLMul_a:PLL输入时钟 x a;(2--16)

7 函数RCC_PLLCmd

功能描述:使能或者失能PLL

例:

RCC_PLLCmd(ENABLE);

8 函数RCC_SYSCLKConfig

功能描述:设置系统时钟(SYSCLK)

例:

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

RCC_SYSCLKSource

该参数设置了系统时钟

RCC_SYSCLKSource_HSI:选择HSI作为系统时钟

RCC_SYSCLKSource_HSE:选择HSE作为系统时钟

RCC_SYSCLKSource_PLLCLK:选择PLL作为系统时钟

9 函数RCC_GetSYSCLKSource

功能描述:返回用作系统时钟的时钟源

例:

if(RCC_GetSYSCLKSource() != 0x04) /* Test if HSE is used as system clock */

{

}

else

{

}

返回值

用作系统时钟的时钟源:

0x00HSI作为系统时钟

0x04HSE作为系统时钟

0x08PLL作为系统时钟

10 函数RCC_HCLKConfig

功能描述:设置AHB时钟(HCLK)

例:

/* Configure HCLK such as HCLK = SYSCLK */

RCC_HCLKConfig(RCC_SYSCLK_Div1);

RCC_HCLK

该参数设置了AHB时钟

RCC_SYSCLK_Div1:AHB时钟 = 系统时钟 /1

RCC_SYSCLK_Div2:AHB时钟 = 系统时钟 / 2

RCC_SYSCLK_Div4:AHB时钟 = 系统时钟 / 4

RCC_SYSCLK_Div8:AHB时钟 = 系统时钟 / 8

RCC_SYSCLK_Div16:AHB时钟 = 系统时钟 / 16

RCC_SYSCLK_Div64:AHB时钟 = 系统时钟 / 64

RCC_SYSCLK_Div128:AHB时钟 = 系统时钟 / 128

RCC_SYSCLK_Div256:AHB时钟 = 系统时钟 / 256

RCC_SYSCLK_Div512:AHB时钟 = 系统时钟 / 512

11 函数RCC_PCLK1Config

功能描述:设置低速AHB时钟(PCLK1)

例:

RCC_PCLK1Config(RCC_HCLK_Div2);

RCC_PCLK1

该参数设置了低速AHB时钟(PCLK1

RCC_HCLK_Div1:APB1时钟 = HCLK /1

RCC_HCLK_Div2:APB1时钟 = HCLK / 2

RCC_HCLK_Div4:APB1时钟 = HCLK / 4

RCC_HCLK_Div8:APB1时钟 = HCLK / 8

RCC_HCLK_Div16:APB1时钟 = HCLK / 16

12 函数RCC_PCLK2Config

功能描述:设置高速AHB时钟(PCLK2)

例:

RCC_PCLK2Config(RCC_HCLK_Div1);

RCC_PCLK2

该参数设置了高速AHB时钟(PCLK2)

RCC_HCLK_Div1:APB2时钟 = HCLK

RCC_HCLK_Div2:APB2时钟 = HCLK / 2

RCC_HCLK_Div4:APB2时钟 = HCLK / 4

RCC_HCLK_Div8:APB2时钟 = HCLK / 8

RCC_HCLK_Div16:APB2时钟 = HCLK / 16

13 函数RCC_ITConfig

功能描述:使能或者失能指定的RCC中断

例:

RCC_ITConfig(RCC_IT_PLLRDY, ENABLE);

RCC_IT

输入参数RCC_IT使能或者失能RCC的中断。

RCC_IT_LSIRDY:LSI就绪中断

RCC_IT_LSERDY:LSE就绪中断

RCC_IT_HSIRDY:HSI就绪中断

RCC_IT_HSERDY:HSE就绪中断

RCC_IT_PLLRDY:PLL就绪中断

14 函数RCC_USBCLKConfig

功能描述:设置USB时钟(USBCLK)

例:

RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_1Div5);

RCC_USBCLKSource

该参数设置了USB时钟(USBCLK

RCC_USBCLKSource_PLLCLK_1Div5:USB时钟 = PLL时钟除以1.5

RCC_USBCLKSource_PLLCLK_Div1:USB时钟 = PLL时钟

15 函数RCC_ADCCLKConfig

功能描述:设置ADC时钟(ADCCLK)

例:

RCC_ADCCLKConfig(RCC_PCLK2_Div2);

RCC_ADCCLKSource

该参数设置了ADC时钟(ADCCLK

RCC_PCLK2_Div2:ADC时钟 = PCLK / 2

RCC_PCLK2_Div4:ADC时钟 = PCLK / 4

RCC_PCLK2_Div6:ADC时钟 = PCLK / 6

RCC_PCLK2_Div8:ADC时钟 = PCLK / 8

16 函数RCC_LSEConfig

功能描述:设置外部低速晶振(LSE)

例:

/* Enable the LSE */

RCC_LSEConfig(RCC_LSE_ON);

RCC_LSE

该参数设置了HSE的状态

RCC_LSE_OFF:LSE晶振OFF

RCC_LSE_ON:LSE晶振ON

RCC_LSE_Bypass:LSE晶振被外部时钟旁路

17 函数RCC_LSICmd

功能描述:使能或者失能内部低速晶振(LSI)

例:

RCC_LSICmd(ENABLE);

18 函数RCC_RTCCLKConfig

功能描述:设置RTC时钟(RTCCLK)

例:

RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);

RCC_RTCCLKSource

该参数设置了RTC时钟(RTCCLK

RCC_RTCCLKSource_LSE:选择LSE作为RTC时钟

RCC_RTCCLKSource_LSI:选择LSI作为RTC时钟

RCC_RTCCLKSource_HSE_Div128:选择HSE时钟频率除以128作为RTC时钟

19 函数RCC_RTCCLKCmd

功能描述:使能或者失能RTC时钟

例:

RCC_RTCCLKCmd(ENABLE);

20 函数RCC_GetClocksFreq

功能描述:返回不同片上时钟的频率

例:

RCC_ClocksTypeDef RCC_Clocks;

RCC_GetClocksFreq(&RCC_Clocks);

RCC_Clocks:指向结构RCC_ClocksTypeDef的指针,包含了各个时钟的频率

RCC_ClocksTypeDef structure

RCC_ClocksTypeDef定义于文件“stm32f10x_rcc.h”

typedef struct

{

u32 SYSCLK_Frequency;

u32 HCLK_Frequency;

u32 PCLK1_Frequency;

u32 PCLK2_Frequency;

u32 ADCCLK_Frequency;

}

RCC_ClocksTypeDef;

SYSCLK_Frequency

该成员返回SYSCLK的频率,单位 Hz

HCLK_Frequency

该成员返回HCLK的频率,单位 Hz

PCLK1_Frequency

该成员返回PCLK1的频率,单位 Hz

PCLK2_Frequency

该成员返回PCLK2的频率,单位 Hz

ADCCLK_Frequency

该成员返回ADCCLK的频率,单位 Hz

21 函数RCC_AHBPeriphClockCmd

功能描述:使能或者失能AHB外设时钟

例:

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA);

RCC_AHBPeriph

该参数被门控的AHB外设时钟,可以取下表的一个或者多个取值的组合作为该参数的值。

RCC_AHBPeriph_DMA:DMA时钟

RCC_AHBPeriph_SRAM:SRAM时钟

RCC_AHBPeriph_FLITF:FLITF时钟

22 函数RCC_APB2PeriphClockCmd

功能描述:使能或者失能APB2外设时钟

例:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_SPI1, ENABLE);

RCC_APB2Periph

该参数被门控的APB2外设时钟,可以取下表的一个或者多个取值的组合作为该参数的值。

RCC_APB2Periph_AFIO:功能复用IO时钟

RCC_APB2Periph_GPIOA:GPIOA时钟

RCC_APB2Periph_GPIOB:GPIOB时钟

RCC_APB2Periph_GPIOC:GPIOC时钟

RCC_APB2Periph_GPIOD:GPIOD时钟

RCC_APB2Periph_GPIOE:GPIOE时钟

RCC_APB2Periph_ADC1:ADC1时钟

RCC_APB2Periph_ADC2:ADC2时钟

RCC_APB2Periph_TIM1:TIM1时钟

RCC_APB2Periph_SPI1:SPI1时钟

RCC_APB2Periph_USART1:USART1时钟

RCC_APB2Periph_ALL:全部APB2外设时钟

23 函数RCC_APB1PeriphClockCmd

功能描述:使能或者失能APB1外设时钟

例:

RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP | RCC_APB1Periph_PWR, ENABLE);

RCC_APB1Periph

该参数被门控的APB1外设时钟,可以取下表的一个或者多个取值的组合作为该参数的值。

RCC_APB1Periph_TIM2:TIM2时钟

RCC_APB1Periph_TIM3:TIM3时钟

RCC_APB1Periph_TIM4:TIM4时钟

RCC_APB1Periph_WWDG:WWDG时钟

RCC_APB1Periph_SPI2:SPI2时钟

RCC_APB1Periph_USART2:USART2时钟

RCC_APB1Periph_USART3:USART3时钟

RCC_APB1Periph_I2C1:I2C1时钟

RCC_APB1Periph_I2C2:I2C2时钟

RCC_APB1Periph_USB:USB时钟

RCC_APB1Periph_CAN:CAN时钟

24 函数RCC_APB2PeriphResetCmd

功能描述:强制或者释放高速APB(APB2)外设复位

例:

/* Enter the SPI1 peripheral to reset */

RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, ENABLE);

/* Exit the SPI1 peripheral from reset */

RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, DISABLE);

25 函数RCC_APB1PeriphResetCmd

功能描述:强制或者释放低速APB(APB1)外设复位

例:

/* Enter the SPI2 peripheral to reset */

RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2, ENABLE);

/* Exit the SPI2 peripheral from reset */

RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2, DISABLE);

26 函数RCC_BackupResetCmd

功能描述:强制或者释放后备域复位

例:

/* Reset the entire Backup domain */

RCC_BackupResetCmd(ENABLE);

27 函数RCC_ClockSecuritySystemCmd

功能描述:使能或者失能时钟安全系统

例:

/* Enable the Clock Security System */

RCC_ClockSecuritySystemCmd(ENABLE);

28 函数RCC_MCOConfig

功能描述:选择在MCO管脚上输出的时钟源

例:

RCC_MCOConfig(RCC_MCO_PLLCLK_Div2);

警告:当选中系统时钟作为MCO管脚的输出时,注意它的时钟频率不超过50MHz(最大I/O速率)

RCC_MCO

该参数设置了指定输出的时钟源

RCC_MCO_NoClock:无时钟被选中

RCC_MCO_SYSCLK:选中系统时钟

RCC_MCO_HSI:选中HSI

RCC_MCO_HSE:选中HSE

RCC_MCO_PLLCLK_Div2:选中PLL时钟除以2

29 函数RCC_GetFlagStatus

功能描述:检查指定的RCC标志位设置与否

例:

/* Test if the PLL clock is ready or not */

FlagStatus Status;

Status = RCC_GetFlagStatus(RCC_FLAG_PLLRDY);

if(Status == RESET)

{

...

}

else

RCC_FLAG

给出了所有可以被函数RCC_ GetFlagStatus检查的标志位列表

RCC_FLAG_HSIRDY:HSI晶振就绪

RCC_FLAG_HSERDY:HSE晶振就绪

RCC_FLAG_PLLRDY:PLL就绪

RCC_FLAG_LSERDY:LSI晶振就绪

RCC_FLAG_LSIRDY:LSE晶振就绪

RCC_FLAG_PINRST:管脚复位

RCC_FLAG_PORRST:POR/PDR复位

RCC_FLAG_SFTRST:软件复位

RCC_FLAG_IWDGRST I:WDG复位

RCC_FLAG_WWDGRST:WWDG复位

RCC_FLAG_LPWRRST:低功耗复位

30 函数RCC_ClearFlag

功能描述:清除RCC的复位标志位

例:

RCC_ClearFlag();

31 函数RCC_GetITStatus

功能描述:检查指定的RCC中断发生与否

例:

/* Test if the PLL Ready interrupt has occurred or not */

ITStatus Status;

Status = RCC_GetITStatus(RCC_IT_PLLRDY);

if(Status == RESET)

{

...

}

else

{

...

}

RCC_IT

给出了所有可以被函数RCC_ GetITStatus检查的中断标志位列表

RCC_IT_LSIRDY:LSI晶振就绪中断

RCC_IT_LSERDY:LSE晶振就绪中断

RCC_IT_HSIRDY: HSI晶振就绪中断

RCC_IT_HSERDY:HSE晶振就绪中断

RCC_IT_PLLRDY:PLL就绪中断

RCC_IT_CSS:时钟安全系统中断

32 函数RCC_ClearITPendingBit

功能描述:清除RCC的中断待处理位

例:

/* Clear the PLL Ready interrupt pending bit */

RCC_ClearITPendingBit(RCC_IT_PLLRDY);

RCC_IT

给出了所有可以被函数RCC_ ClearITPendingBit清除的中断待处理位列表

RCC_IT_LSIRDY:LSI晶振就绪中断

RCC_IT_LSERDY:LSE晶振就绪中断

RCC_IT_HSIRDY:HSI晶振就绪中断

RCC_IT_HSERDY:HSE晶振就绪中断

RCC_IT_PLLRDY:PLL就绪中断

RCC_IT_CSS:时钟安全系统中断

八、嵌套向量中断控制器(NVIC)

NVIC寄存器结构

NVIC寄存器结构,NVIC_TypeDeff,在文件“stm32f10x_map.h”中定义如下:

typedef struct

{

vu32 Enable[2];

u32 RESERVED0[30];

vu32 Disable[2];

u32 RSERVED1[30];

vu32 Set[2];

u32 RESERVED2[30];

vu32 Clear[2];

u32 RESERVED3[30];

vu32 Active[2];

u32 RESERVED4[62];

vu32 Priority[11];

}

NVIC_TypeDef;/* NVIC Structure */

typedef struct

{

vu32 CPUID;

vu32 IRQControlState;

vu32 ExceptionTableOffset;

vu32 AIRC;

vu32 SysCtrl;

vu32 ConfigCtrl;

vu32 SystemPriority[3];

vu32 SysHandlerCtrl;

vu32 ConfigFaultStatus;

vu32 HardFaultStatus;

vu32 DebugFaultStatus;

vu32 MemoryManageFaultAddr;

vu32 BusFaultAddr;

}

SCB_TypeDef; /* System Control Block Structure */

NVIC库函数

1 函数NVIC_DeInit

功能描述将外设NVIC寄存器重设为缺省值

例:

NVIC_DeInit();

2 函数NVIC_SCBDeInit

功能描述将外设SCB寄存器重设为缺省值

例:

NVIC_SCBDeInit();

3 函数NVIC_PriorityGroupConfig

功能描述设置优先级分组:先占优先级和从优先级

例:

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

NVIC_PriorityGroup

该参数设置优先级分组位长度

NVIC_PriorityGroup_0先占优先级0位从优先级4位

NVIC_PriorityGroup_1先占优先级1位从优先级3位

NVIC_PriorityGroup_2先占优先级2位从优先级2位

NVIC_PriorityGroup_3先占优先级3位从优先级1位

NVIC_PriorityGroup_4先占优先级4位从优先级0位

4 函数NVIC_Init

功能描述根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器

NVIC_InitStruct:指向结构NVIC_InitTypeDef的指针,包含了外设GPIO的配置信息

NVIC_InitTypeDef structure

NVIC_InitTypeDef定义于文件“stm32f10x_nvic.h”

typedef struct

{

u8 NVIC_IRQChannel;

u8 NVIC_IRQChannelPreemptionPriority;

u8 NVIC_IRQChannelSubPriority;

FunctionalState NVIC_IRQChannelCmd;

}

NVIC_InitTypeDef;

例:

NVIC_InitTypeDef NVIC_InitStructure;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQChannel;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_InitStructure(&NVIC_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQChannel;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 5;

NVIC_InitStructure(&NVIC_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQChannel;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 7;

NVIC_InitStructure(&NVIC_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQChannel;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 7;

NVIC_InitStructure(&NVIC_InitStructure);

NVIC_IRQChannel

该参数用以使能或者失能指定的IRQ通道。

WWDG_IRQChannel窗口看门狗中断

PVD_IRQChannelPVD通过EXTI探测中断

TAMPER_IRQChannel篡改中断

RTC_IRQChannelRTC全局中断

FlashItf_IRQChannelFLASH全局中断

RCC_IRQChannelRCC全局中断

EXTI0_IRQChannel外部中断线0中断

EXTI1_IRQChannel外部中断线1中断

EXTI2_IRQChannel外部中断线2中断

EXTI3_IRQChannel外部中断线3中断

EXTI4_IRQChannel外部中断线4中断

DMAChannel1_IRQChannelDMA通道1中断

DMAChannel2_IRQChannelDMA通道2中断

DMAChannel3_IRQChannelDMA通道3中断

DMAChannel4_IRQChannelDMA通道4中断

DMAChannel5_IRQChannelDMA通道5中断

DMAChannel6_IRQChannelDMA通道6中断

DMAChannel7_IRQChannelDMA通道7中断

ADC_IRQChannelADC全局中断

USB_HP_CANTX_IRQChannelUSB高优先级或者CAN发送中断

USB_LP_CAN_RX0_IRQChannelUSB低优先级或者CAN接收0中断

CAN_RX1_IRQChannelCAN接收1中断

CAN_SCE_IRQChannelCAN SCE中断

EXTI9_5_IRQChannel外部中断线9-5中断

TIM1_BRK_IRQChannelTIM1暂停中断

TIM1_UP_IRQChannelTIM1刷新中断

TIM1_TRG_COM_IRQChannelTIM1触发和通讯中断

TIM1_CC_IRQChannelTIM1捕获比较中断

TIM2_IRQChannelTIM2全局中断

TIM3_IRQChannelTIM3全局中断

TIM4_IRQChannelTIM4全局中断

I2C1_EV_IRQChannelI2C1事件中断

I2C1_ER_IRQChannelI2C1错误中断

I2C2_EV_IRQChannelI2C2事件中断

I2C2_ER_IRQChannelI2C2错误中断

SPI1_IRQChannelSPI1全局中断

SPI2_IRQChannelSPI2全局中断

USART1_IRQChannelUSART1全局中断

USART2_IRQChannelUSART2全局中断

USART3_IRQChannelUSART3全局中断

EXTI15_10_IRQChannel外部中断线15-10中断

RTCAlarm_IRQChannelRTC闹钟通过EXTI线中断

USBWakeUp_IRQChannelUSB通过EXTI线从悬挂唤醒中断

NVIC_IRQChannelPreemptionPriority

该参数设置了成员NVIC_IRQChannel中的先占优先级

NVIC_IRQChannelSubPriority

该参数设置了成员NVIC_IRQChannel中的从优先级

5 函数NVIC_StructInit

功能描述把NVIC_InitStruct中的每一个参数按缺省值填入

NVIC_InitStruct:指向结构NVIC_InitTypeDef的指针,待初始化

例:

NVIC_InitTypeDef NVIC_InitStructure;

NVIC_StructInit(&NVIC_InitStructure);

NVIC_InitStruct缺省值

NVIC_IRQChannel:0x0

NVIC_IRQChannelPreemptionPriority:0

NVIC_IRQChannelSubPriority:0

NVIC_IRQChannelCmd:DISABLE

6 函数NVIC_SETPRIMASK

功能描述使能PRIMASK优先级:提升执行优先级至0

1. 该函数由汇编语言书写。

2. 该函数只影响组优先级,不影响从优先级。

3. 在设置PRIMASK寄存器前,建议在从为了使能一个例外中另一个例外返回时,清除该寄存器

例:

NVIC_SETPRIMASK();

7 函数NVIC_RESETPRIMASK

功能描述失能PRIMASK优先级

例:

NVIC_RESETPRIMASK();

8 函数NVIC_SETFAULTMASK

功能描述使能FAULTMASK优先级:提升执行优先级至-1

1. 该函数由汇编语言书写。

2. 该函数只影响组优先级,不影响从优先级。

3. FAULTMASK只有在执行优先级值小于-1的情况下才能被设置,设置FAULTMASK将它的执行优先级提升到HardFAULT的级别。每当从除NMI之外的例外中返回,FAULTMASK会被自动清除。

例:

NVIC_SETFAULTMASK();

9 函数NVIC_RESETFAULTMASK

功能描述失能FAULTMASK优先级

1. 该函数由汇编语言书写。

例:

NVIC_RESETPRIMASK();

10 函数NVIC_BASEPRICONFIG

功能描述改变执行优先级从N(最低可设置优先级)提升至1

1. 该函数由汇编语言书写。

2. 该函数只影响组优先级,不影响从优先级。

3. 可以改变执行优先级,从N(最低可设置优先级)提升至1。将该寄存器清除至0不会影响当前的优先级,它的非零值起到优先级屏蔽的作用,执行后当BASEPRI定义的优先级高于当前优先级时,该操作将起作用。

例:

NVIC__BASEPRICONFIG(10);

11 函数NVIC_GetBASEPRI

功能描述返回BASEPRI屏蔽值

例:

u32 BASEPRI_Mask = 0;

BASEPRI_Mask = NVIC_GetBASEPRI();

12 函数NVIC_GetCurrentPendingIRQChannel

功能描述返回当前待处理IRQ标识符

例:

u16 CurrentPendingIRQChannel;

CurrentPendingIRQChannel = NVIC_GetCurrentPendingIRQChannel();

13 函数NVIC_GetIRQChannelPendingBitStatus

功能描述检查指定的IRQ通道待处理位设置与否

例:

ITStatus IRQChannelPendingBitStatus;

IRQChannelPendingBitStatus =

NVIC_GetIRQChannelPendingBitStatus(ADC_IRQChannel);

14 函数NVIC_SetIRQChannelPendingBit

功能描述设置指定的IRQ通道待处理位

例:

NVIC_SetIRQChannelPendingBit(SPI1_IRQChannel);

15 函数NVIC_ClearIRQChannelPendingBit

功能描述清除指定的IRQ通道待处理位

例:

NVIC_ClearIRQChannelPendingBit(ADC_IRQChannel);

16 函数NVIC_GetCurrentActiveHandler

功能描述返回当前活动的Handler(IRQ通道和系统Handler)的标识符

例:

u16 CurrentActiveHandler;

CurrentActiveHandler = NVIC_GetCurrentActiveHandler();

17 函数NVIC_GetIRQChannelActiveBitStatus

功能描述检查指定的IRQ通道活动位设置与否

例:

ITStatus IRQChannelActiveBitStatus;

IRQChannelActiveBitStatus =

NVIC_GetIRQChannelActiveBitStatus(ADC_IRQChannel);

18 函数NVIC_GetCPUID

功能描述返回ID号码,Cortex-M3内核的版本号和实现细节

例:

u32 CM3_CPUID;

CM3_CPUID = NVIC_GetCPUID();

19 函数NVIC_SetVectorTable

功能描述设置向量表的位置和偏移

例:

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);

NVIC_VectTab

该参数设置向量表基地址

NVIC_VectTab_FLASH向量表位于FLASH

NVIC_VectTab_RAM向量表位于RAM

20 函数NVIC_GenerateSystemReset

功能描述产生一个系统复位

例:

NVIC_GenerateSystemReset();

21 函数NVIC_GenerateCoreReset

功能描述产生一个内核(内核+NVIC)复位

例:

NVIC_GenerateCoreReset();

22 函数NVIC_SystemLPConfig

功能描述选择系统进入低功耗模式的条件

例:

NVIC_SystemLPConfig(SEVONPEND, ENABLE);

LowPowerMode

该参数设置了设备的低功耗模式

NVIC_LP_SEVONPEND:根据待处理请求唤醒

NVIC_LP_SLEEPDEEP:深度睡眠使能

NVIC_LP_SLEEPONEXIT:退出ISR后睡眠

23 函数NVIC_SystemHandlerConfig

功能描述使能或者失能指定的系统Handler

例:

/* Enable the Memory Manage Handler */

NVIC_SystemHandlerConfig(SystemHandler_MemoryManage, ENABLE);

SystemHandler

该参数设置了待使能或者失能指定的系统Handler

SystemHandler_MemoryManage存储器管理Handler

SystemHandler_BusFault总线错误Handler

SystemHandler_UsageFault使用错误Handler

24 函数NVIC_SystemHandlerPriorityConfig

功能描述设置指定的系统Handler优先级

例:

NVIC_SystemHandlerPriorityConfig(SystemHandler_MemoryManage, 2, 8);

SystemHandler

该参数指定了待设置的系统Handler

SystemHandler_MemoryManage存储器管理Handler

SystemHandler_BusFault总线错误Handler

SystemHandler_UsageFault使用错误Handler

SystemHandler_SVCallSVCall Handler

SystemHandler_DebugMonitor除错监控Handler

SystemHandler_PSVPSV Handler

SystemHandler_SysTick系统滴答定时器Handler

25 函数NVIC_GetSystemHandlerPendingBitStatus

功能描述检查指定的系统Handler待处理位设置与否

例:

MemoryHandlerStatus =NVIC_GetSystemHandlerPendingBitStatus(SystemHandler_MemoryManage);

SystemHandler

该参数指定系统Handler

SystemHandler_MemoryManage存储器管理Handler

SystemHandler_BusFault总线错误Handler

SystemHandler_SVCallSVCall Handler

26 函数NVIC_SetSystemHandlerPendingBit

功能描述设置系统Handler待处理位

例:

NVIC_SetSystemHandlerPendingBit(SystemHandler_NMI);

SystemHandler

该参数指定系统Handler

SystemHandler_NMINMI Handler

SystemHandler_PSVPSV Handler

SystemHandler_SysTick系统滴答定时器 Handler

27 函数NVIC_ClearSystemHandlerPendingBit

功能描述清除系统Handler待处理位

例:

NVIC_ClearSystemHandlerPendingBit(SystemHandler_SysTick);

SystemHandler

该参数指定系统Handler

SystemHandler_PSVPSV Handler

SystemHandler_SysTick系统滴答定时器 Handler

28 函数NVIC_GetSystemHandlerActiveBitStatus

功能描述检查系统Handler活动位设置与否

例:

ITStatus BusFaultHandlerStatus;

BusFaultHandlerStatus =

NVIC_GetSystemHandlerActiveBitStatus(SystemHandler_BusFault);

SystemHandler

该参数指定系统Handler

SystemHandler_MemoryManage存储器管理Handler

SystemHandler_BusFault总线错误Handler

SystemHandler_UsageFault使用错误Handler

SystemHandler_DebugMonitor除错监控Handler

SystemHandler_PSVPSV Handler

SystemHandler_SysTick系统滴答定时器 Handler

29 函数NVIC_GetFaultHandlerSources

功能描述返回表示出错的系统Handler源

例:

u32 BusFaultHandlerSource;

BusFaultHandlerSource

=NVIC_GetFaultHandlerSources(SystemHandler_BusFault);

SystemHandler

该参数指定系统Handler

SystemHandler_HardFault硬件错误Handler

SystemHandler_MemoryManage存储器管理Handler

SystemHandler_BusFault总线错误Handler

SystemHandler_UsageFault使用错误Handler

SystemHandler_DebugMonitor除错监控Handler

30 函数NVIC_GetFaultAddress

功能描述返回产生表示出错的系统Handler所在位置的地址

例:

u32 BusFaultHandlerAddress;

BusFaultHandlerAddress =

NVIC_GetFaultAddress(SystemHandler_BusFault);

SystemHandler

该参数指定系统Handler

SystemHandler_MemoryManage存储器管理Handler

SystemHandler_BusFault总线错误Handler

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词