STM8SåçæºçA/Dç»æç®ä»ï¼
å
·æADC1 ADC2ï¼é¨ååå·æ²¡æADC2ï¼æå¤æä¾16个转æ¢ééï¼A/D转æ¢çå个ééå¯ä»¥æ§è¡å次åè¿ç»ç转æ¢æ¨¡å¼ã
1.çµå0å°Vdda;
2.å¨64å80å¼èå°è£
çæç¬ç«çVref,å
¶ä»çå°è£
å½¢å¼Vrefè¿æ¥å¨Vdda
3.ç»è½¬æ¢å½¢å¼;
4.æ¶é´14个æ¶éå¨æ;
5.10ä½è½¬æ¢ç²¾åº¦ï¼
6.产ç转æ¢ç»æä¸æ;
ç¼ç¨ä¸æ³¨æçç¥è¯ç¹ï¼
è¿ç½®ä½ADC_CR1å¯åå¨ç ADONä½æ¥å¼å¯ADCãå½é¦æ¬¡ç½®ä½ADONä½æ¶ï¼ADCä»ä½åè模å¼å¤éã为äºå¯å¨è½¬æ¢å¿
须第äºæ¬¡ä½¿ç¨åæ令æ¥ç½®ADC_CR1å¯åå¨çADON ä½ãå¨è½¬æ¢ç»ææ¶ADCä¼ä¿æå¨ä¸çµç¶æï¼ç¨æ·åªéè¦ç½®ä½ADONä½ä¸æ¬¡æ¥å¯å¨ä¸ä¸æ¬¡ç转æ¢ã
å¦æé¿æ¶é´æ²¡æ使ç¨ADCï¼æ¨èå°ADC模ååæ¢å°ä½åè模å¼æ¥éä½åèï¼è¿å¯ä»¥éè¿æ¸
é¶ ADON ä½æ¥å®ç°ãADC模åä¸çµåï¼æééé对åºçI/Oå£è¾åºæ¨¡åæ¯è¢«ç¦ç¨çãå æ¤æ¨èå¨ADCä¸çµä¹åè¦éæ©åéçADC转æ¢ééã
å¦æå次模å¼å¨å次转æ¢æ¨¡å¼ä¸ï¼ADCä»
å¨ç±ADC_CSRå¯åå¨çCH[3:0]éå®çééä¸å®æä¸æ¬¡è½¬æ¢ã该模å¼æ¯å¨å½CONTä½ä¸º0æ¶éè¿ç½®ä½ADC_CR1å¯åå¨çADONä½æ¥å¯å¨çã
ä¸æ¦è½¬æ¢å®æï¼è½¬æ¢åçæ°æ®åå¨å¨ADC_DRå¯åå¨ä¸ï¼EOC(转æ¢ç»æ)æ å¿è¢«ç½®EOCIE 被置ä½å°äº§çä¸ä¸ªä¸æã
代ç å¦ä¸ï¼
#include "adc.h"
u16 TempADC;
void ADC_Config(void)
{
ADC_CR1 |= 0x01; //å¼å§å¯å¨åå§åå¿
é¡»å¯å¨ä¸æ¬¡
//第ä¸æ¬¡å1ï¼ADCä»ä½åèå¤éï¼ç¬¬äºæ¬¡å1ï¼å¯å¨ADC转æ¢
//ADC_CR1 |= 0x20; //使è½è½¬æ¢ç»æä¸æï¼æ¬ä¾ä¸éç¨çæ¥è¯¢æ¹å¼ã
}
uint16_t Get_ADCCH_Value(ADC1_Channel_TypeDef ADC_Channel)
{
ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS,ADC_Channel, ADC1_PRESSEL_FCPU_D2,
ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_ALL, DISABLE);
//ä½ ä¹å¯ä»¥ç¨æä½å¯åå¨çæ¹å¼ä»£ç å¦ä¸ï¼ä½æªéªè¯ã
#if 0
ADC_CR2 = 0x00; // A/Dç»ææ°æ®å·¦å¯¹é½
CLK_PCKENR2 |= 0x08; // 使è½fMASTERä¸ADCçè¿æ¥
ADC_CR1 = 0x00;// ADCæ¶é=主æ¶é/2=8MHz,å次转æ¢æ¨¡å¼
ADC_CSR = 0x01; // éæ©éé2
ADC_TDRL = 0x01; // ç¦æ¢æ½å¯ç¹è§¦ååè½
ADC_TDRH = 0x01;
ADC_CR1 = 0x03; //2åé¢ï¼è¿ç»è½¬æ¢ï¼å¯å¨ADC
ADC_CR2 = 0x31; //å¤é¨äºä»¶ä¿çï¼æ°æ®å³å¯¹é½ï¼ç¦æ¢æ«æ模å¼ï¼
ADC_CSR|= 0x01; //éæ©éé1
#endif
ADC1_ConversionConfig(ADC1_CONVERSIONMODE_CONTINUOUS, ADC_Channel,ADC1_ALIGN_RIGHT);
ADC_CR1 |= 0x01; //å¼å§å¯å¨è½¬æ¢
while(!(ADC_CSR & 0x80)); //çå¾
转æ¢ç»æ
return ADC1_GetConversionValue(); //è¿åADCç»æ
}
//è¿ä¸ªåå§å代ç å¾éè¦ï¼ä¸è½çï¼æ¯æ¬¡åæ¢ééé½è¦åå§åä¸æ¬¡ï¼
å¨mainå½æ°ä¸ç´æ¥è°ç¨å³å¯ï¼
TempADC=Get_ADCCH_Value(ADC1_CHANNEL_1); //è·åAD转åå¼
WetADC=Get_ADCCH_Value(ADC1_CHANNEL_3; //è·åAD转åå¼
温馨提示:答案为网友推荐,仅供参考