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