STM32库函数功能详解 下载本文

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;

25

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工作在同步注入模式

26

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);

27

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);

28