如何使用STM8S单片机的多通道AD转换 如何使用STM8S单片机的多通道AD转换

\u5982\u4f55\u4f7f\u7528STM8S\u5355\u7247\u673a\u7684\u591a\u901a\u9053AD\u8f6c\u6362

\u53ef\u4ee5\u91c7\u7528ADC\u7cfb\u5217\u82af\u7247\u4f5cA/D\u8f6c\u6362\uff0c\u6839\u636e\u5177\u4f53\u6240\u9009ADC\u82af\u7247\uff0c\u53ef\u6709\u591a\u8def\u8f6c\u6362\u901a\u9053\uff0c\u82e5\u53ea\u6d4b\u7535\u538b\uff0c\u5219\u53ea\u8981\u4e00\u8def\u5c31\u53ef\u4ee5\uff0c\u5176\u5b83\u5404\u8def\u5c31\u6682\u65f6\u4e0d\u7528\uff0c\u82e5\u60f3\u8ba9\u529f\u80fd\u591a\u4e00\u70b9\uff0c\u5219\u53ef\u7528\u5176\u5b83\u901a\u9053\u6d4b\u91cf\u7535\u6d41\u3001\u7535\u963b\u7b49\uff0c\u4f46\u7535\u8def\u5c06\u6bd4\u8f83\u590d\u6742\u3002 \u4e0d\u8fc7\u4e0d\u7528\u5355\u7247\u673a\uff0c\u53ea\u7528\u786c\u4ef6\u5b9e\u73b0\u7684\u7535\u8def\u4e5f\u591f\u590d\u6742\u7684\u3002\u9996\u5148\uff0c\u5e94\u8be5\u8003\u8651\u5b9a\u6807\u5927\u5c0f\uff08\u5373\u6bd4\u4f8b\u5927\u5c0f\u7684\u95ee\u9898\uff09\uff0c\u4e0d\u91c7\u7528\u5355\u7247\u673a\u5219\u53ea\u80fd\u9009\u62e9\u6807\u51c6\u7535\u963b\u5bf9\u5176\u8fdb\u884c\u5206\u538b\u786e\u5b9a\u6bd4\u4f8b\uff0c\u8fd9\u6837\u8bef\u5dee\u5c06\u6bd4\u8f83\u96be\u4e8e\u63a7\u5236\u3002\u5176\u6b21\uff0c\u7531\u4e8e\u6ca1\u6709\u5355\u7247\u673a\uff0c\u6d4b\u91cf\u4ea4\u6d41\u7535\u538b\u65f6\uff0c\u6709\u6548\u503c\u65e0\u6cd5\u8ba1\u7b97\uff0c\u867d\u7136\u53ef\u91c7\u7528\u6574\u6d41\u5143\u4ef6\u5c06\u7535\u538b\u6574\u6d41\u540e\u518d\u5206\u538b\uff0c\u4f46\u4e5f\u662f\u5f71\u54cd\u7cbe\u5ea6\u7684\u3002\u518d\u6b21\uff0cA/D\u8f6c\u6362\u540e\u5982\u4f55\u5c06\u65b0\u7684\u6570\u636e\u9001\u5230LED\u6570\u7801\u7ba1\u5e76\u5237\u65b0\u663e\u793a\u5185\u5bb9\u548c\u5237\u65b0ADC\u82af\u7247\u7684\u8f93\u5165\u8ba9\u5176\u91cd\u65b0\u8fdb\u884cA/D\u8f6c\u6362\uff0c\u4e5f\u53ea\u80fd\u91c7\u7528\u786c\u4ef6\u7535\u8def\u5b9e\u73b0\uff0c\u5177\u4f53\u7684\u786c\u4ef6\u903b\u8f91\u4e5f\u662f\u76f8\u5f53\u590d\u6742\u7684\u3002 \u4ece\u4ee5\u4e0a\u5206\u6790\u770b\uff0c\u5e76\u4e0d\u662f\u4e0d\u80fd\u5b9e\u73b0\uff0c\u786e\u5b9e\u590d\u6742\u5f88\u591a\uff0c\u4f5c\u4e3a\u4e00\u4e2a\u672c\u79d1\u6bd5\u4e1a\u751f\u7684\u5b66\u4f4d\u8bba\u6587\u90fd\u4f1a\u6709\u8fc7\u96be\u4e4b\u5acc\uff0c\u800c\u4e14\u521d\u6b65\u4f30\u7b97\u5b9e\u73b0\u8d77\u6765\u4ef7\u683c\u80af\u5b9a\u6bd4\u91c7\u7528\u5355\u7247\u673a\u9ad8\u4e0d\u5c11\u3002\u8fd9\u6837\u5f97\u4e0d\u8d4f\u5931\u7684\u8bbe\u8ba1\u6709\u8c01\u53bb\u5b9e\u73b0\u5462\uff1f\u4e5f\u8bb8\u53ea\u6709\u6211\u624d\u4f1a\u8003\u8651\u90a3\u4e48\u591a\u5427\u3002

#include "adc.h" u16 TempADC;void ADC_Config(void) { ADC_CR1 |= 0x01; //\u5f00\u59cb\u542f\u52a8\u521d\u59cb\u5316\u5fc5\u987b\u542f\u52a8\u4e00\u6b21 //\u7b2c\u4e00\u6b21\u51991\uff0cADC\u4ece\u4f4e\u529f\u8017\u5524\u9192\uff0c\u7b2c\u4e8c\u6b21\u51991\uff0c\u542f\u52a8ADC\u8f6c\u6362 //ADC_CR1 |= 0x20; //\u4f7f\u80fd\u8f6c\u6362\u7ed3\u675f\u4e2d\u65ad\uff0c\u672c\u4f8b\u4e2d\u91c7\u7528\u7684\u67e5\u8be2\u65b9\u5f0f\u3002} 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); //\u4f60\u4e5f\u53ef\u4ee5\u7528\u64cd\u4f5c\u5bc4\u5b58\u5668\u7684\u65b9\u5f0f\u4ee3\u7801\u5982\u4e0b\uff0c\u4f46\u672a\u9a8c\u8bc1\u3002#if 0ADC_CR2 = 0x00; // A/D\u7ed3\u679c\u6570\u636e\u5de6\u5bf9\u9f50CLK_PCKENR2 |= 0x08; // \u4f7f\u80fdfMASTER\u4e0eADC\u7684\u8fde\u63a5ADC_CR1 = 0x00;// ADC\u65f6\u949f=\u4e3b\u65f6\u949f/2=8MHz,\u5355\u6b21\u8f6c\u6362\u6a21\u5f0fADC_CSR = 0x01; // \u9009\u62e9\u901a\u90532ADC_TDRL = 0x01; // \u7981\u6b62\u65bd\u5bc6\u7279\u89e6\u53d1\u529f\u80fd ADC_TDRH = 0x01;ADC_CR1 = 0x03; //2\u5206\u9891\uff0c\u8fde\u7eed\u8f6c\u6362\uff0c\u542f\u52a8ADCADC_CR2 = 0x31; //\u5916\u90e8\u4e8b\u4ef6\u4fdd\u7559\uff0c\u6570\u636e\u53f3\u5bf9\u9f50\uff0c\u7981\u6b62\u626b\u63cf\u6a21\u5f0f\uff0cADC_CSR|= 0x01; //\u9009\u62e9\u901a\u90531#endif ADC1_ConversionConfig(ADC1_CONVERSIONMODE_CONTINUOUS, ADC_Channel,ADC1_ALIGN_RIGHT); ADC_CR1 |= 0x01; //\u5f00\u59cb\u542f\u52a8\u8f6c\u6362 while(!(ADC_CSR & 0x80)); //\u7b49\u5f85\u8f6c\u6362\u7ed3\u675f return ADC1_GetConversionValue(); //\u8fd4\u56deADC\u7ed3\u679c}//\u8fd9\u4e2a\u521d\u59cb\u5316\u4ee3\u7801\u5f88\u91cd\u8981\uff0c\u4e0d\u80fd\u7701\uff0c\u6bcf\u6b21\u5207\u6362\u901a\u9053\u90fd\u8981\u521d\u59cb\u5316\u4e00\u6b21\uff01\u5728main\u51fd\u6570\u4e2d\u76f4\u63a5\u8c03\u7528\u5373\u53ef\uff1a TempADC=Get_ADCCH_Value(ADC1_CHANNEL_1); //\u83b7\u53d6AD\u8f6c\u5316\u503c WetADC=Get_ADCCH_Value(ADC1_CHANNEL_3; //\u83b7\u53d6AD\u8f6c\u5316\u503c

我给你个例程,我这是两个通道,一个是采集音频,然后彩灯随音乐节奏闪烁,同时采集电池电量。
void AD2_Config(void)
{

/* Init GPIO for ADC2 */
GPIO_Init(GPIOB, GPIO_PIN_6, GPIO_MODE_IN_FL_NO_IT);

/* De-Init ADC peripheral*/

ADC1_DeInit();
ADC1_ClearITPendingBit(ADC1_IT_EOC);
/* Init ADC1 peripheral */
ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_CHANNEL_6, ADC1_PRESSEL_FCPU_D18, \
ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL6,\
DISABLE);
/* Enable EOC interrupt */
//if(autoFm == 1)
ADC1_ITConfig(ADC1_IT_EOCIE,DISABLE);
//else
// ADC1_ITConfig(ADC1_IT_EOCIE,ENABLE);

/* Enable general interrupts */
/*Start Conversion */
ADC1_StartConversion();
}
void AD_Config(void)
{

/* Init GPIO for ADC2 */
GPIO_Init(GPIOB, GPIO_PIN_7, GPIO_MODE_IN_FL_NO_IT);
// GPIOD->ODR &= 0x8f;
/* De-Init ADC peripheral*/

ADC1_DeInit();
ADC1_ClearITPendingBit(ADC1_IT_EOC);
/* Init ADC1 peripheral */
ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_CHANNEL_7, ADC1_PRESSEL_FCPU_D18, \
ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL7,\
DISABLE);
/* Enable EOC interrupt */
// if(autoFm == 1)
// ADC1_ITConfig(ADC1_IT_EOCIE,DISABLE);
//else
ADC1_ITConfig(ADC1_IT_EOCIE,ENABLE);

/*Start Conversion */
ADC1_StartConversion();

}

main()
{
TIM2_Config();
TIM4_Config();

AD2_Config();
TIM1_Config();

enableInterrupts();
while(1)
{
if(ADChange >= 1)//这是个延时,多久进一次
{
AD2_Config();
while(RESET == ADC1_GetFlagStatus(ADC1_FLAG_EOC));
VoicADLeve = ADC1_GetConversionValue();
AD_Config();
ADChange = 0;
ADChange = 0;
}
}
}
在ADC中断里面
INTERRUPT_HANDLER(ADC2_IRQHandler, 22)
{
ADC1_ClearITPendingBit(ADC2_IT_EOC);
}

INTERRUPT_HANDLER(ADC1_IRQHandler, 22)
{

uint16_t temp;
temp = ADC1_GetConversionValue();//这是采集音频
if(temp < min_ad)
{
min_ad = temp;
}
if(temp > max_ad)
{
max_ad= temp;
}
ADC1_ClearITPendingBit(ADC1_IT_EOC);
}

这程序我只给了你ADC的部分

  • stm8s浣庡姛鑰楃鍙h缃负浠涔堟ā寮
    绛旓細STM8绛夊緟(Wait)妯″紡 鍦ㄨ繍琛屾ā寮忎笅鎵цWFI(绛夊緟涓柇)鎸囦护锛屽彲杩涘叆绛夊緟妯″紡銆傛鏃禖PU鍋滄杩愯锛屼絾澶栬涓庝腑鏂帶鍒跺櫒浠嶄繚鎸佽繍琛岋紝鍥犳鍔熻椾細鏈夋墍闄嶄綆銆傜瓑寰呮ā寮忓彲涓嶱CG(澶栬鏃堕挓闂ㄦ帶)锛岄檷浣嶤PU鏃堕挓棰戠巼锛屼互鍙婇夋嫨浣庡姛鑰楁椂閽熸簮(LSI锛孒SI)鐩哥粨鍚浣跨敤锛屼互杩涗竴姝ラ檷浣庣郴缁熷姛鑰椼傚弬瑙佹椂閽熸帶鍒 (CLK)鐨勮鏄庛傚湪绛夊緟...
  • stm8s绯诲垪鍗曠墖鏈烘湁甯3缁刄ART鎺ュ彛鐨勫悧?
    绛旓細鍗曠墖鏈涓婄殑TX鍜孯X閫氳鍙i氬父浣滀负RS232涓插彛浣跨敤锛屾槸UART鐨勪竴绉嶃
  • 鍗曠墖鏈簊tm8 妯℃嫙8璺崰绌烘瘮鍙皟鐨凱WM杈撳嚭
    绛旓細鐢ㄦ櫘閫氬彛锛屽畾鏃跺櫒妯℃嫙涓璺疨WM灏卞彲浠ヤ簡銆
  • 璇烽棶涓涓STM8鍗曠墖鏈虹殑浣嶇晫璇存槸鑻ヤ綍鎿嶄綔鐨???
    绛旓細閫氳繃瀹氫箟浣嶄簬鍙互鎿嶄綔浣嶅浜庡叿浣撶殑浣嶏紝涔熷彲浠ラ氳繃瀹忓畾涔 濡#define led1 (((Typedef_BitFiled *)((volatile char*)0x500f))->Bits.Bit2)include <iostm8s103.h> define uchar unsigned char typedef union { struct { unsigned Bit0:1;unsigned Bit1:1;unsigned Bit2:1;unsigned Bit3...
  • STM8S鍗曠墖鏈虹殑GPIO绔彛鍦ㄥ垵濮嬪寲鐨勬椂鍊欎负浣曚細鏈夐珮閫熸帹鎸借緭鍑哄拰浣庨熸帹鎸...
    绛旓細杈撳嚭鐨勯鐜囦笉涓鏍凤紝涔熷氨鏄緭鍑虹殑鑳藉姏涓嶅悓锛屽父鐢ㄥ湪閫夐氶珮閫熺數璺
  • 鐢⊿TM8S103F3鍗曠墖鏈,鎴戝彧瑕佺敤浜咥D鍔熻兘,PD5(AIN5)寮曡剼灏变笉鑳界敤浣滆緭鍏ヤ簡...
    绛旓細鐢⊿TM8S 103F3鍗曠墖鏈,鎴戞妸PD5(AIN5)寮曡剼璁句负涓婃媺杈撳叆,鍙互姝e父妫娴嬪閮ㄧ殑鐢靛钩寮曞彿銆備絾鏄彧瑕佹垜浣跨敤浜咥DC鍔熻兘涔嬪悗,涓嶇鎴戠敤鍝竴涓狝D杈撳叆閫氶亾,PD5寮曡剼鐨勮緭鍏ュ姛鑳介兘浼氭湁闂銆傚氨鏄涓嶇PD5寮曡剼澶栨帴鐨勬槸楂樼數骞宠繕鏄綆鐢靛钩,杈撳叆瀵勫瓨鍣ㄩ噷鐨勫奸兘鏄0銆傛崲浜嗗崟鐗... 灞曞紑 271302955...
  • STM8S 鐨勮Е鎽稿簱鏄濡備綍鍦ㄤ富绋嬪簭涓煡璇㈤敭鐨勫憿
    绛旓細Win + TAB锛氬惊鐜垏鎹换鍔℃爮涓婄殑绋嬪簭骞浣跨敤鐨Aero涓夌淮鏁堟灉銆侰trl + Win + TAB锛氫娇鐢ㄦ柟鍚戦敭鏉ュ惊鐜惊鐜垏鎹换鍔℃爮涓婄殑绋嬪簭锛屽苟浣跨敤鐨凙ero涓夌淮鏁堟灉銆傛寜Ctrl + Win + B锛氬垏鎹㈠埌鍦ㄩ氱煡鍖哄煙涓樉绀轰俊鎭殑绋嬪簭 Win + 绌烘牸锛氶瑙堟闈俉in + 鈫戯細鏈澶у寲绐楀彛銆俉in + 鈫擄細鏈灏忓寲绐楀彛銆俉in + 鈫愶細鏈澶у寲...
  • STM8S鎬庝箞鍍51鍗曠墖鏈涓鏍峰瀵勫瓨鍣ㄧ殑浣嶆搷浣
    绛旓細STM8鐨鎸囦护绯荤粺鏈韩涓嶆敮鎸佷綅鎿嶄綔锛屼竴鑸氳繃浠ヤ笅鏂瑰紡杩涜浣嶆搷浣滐細渚嬪锛歅A_ODR |= 0x04;//灏哖A_ODR瀵勫瓨鍣ㄧ殑bit2缃1PB_DDR |= (1 << 5);//灏哖B_DDR瀵勫瓨鍣ㄧ殑bit5缃1TIM1_IER &=~ 0x01;//灏員IM1_IER鐨刡it0缃0ADC_CR3 &=~ (1 << 6);//灏咥DC_CR3鐨刡it6缃0绫讳技鐨勮祴鍊兼柟寮忓鎵鏈...
  • ...鍗曠墖鏈哄啓涓涓緭鍑洪鐜囦负2KHz鐨勬柟娉,C璇█? 娌鐢杩stm8鍗曠墖鏈...
    绛旓細//姝や緥绋嬫槸閫氳繃TIM2 CH1锛圥D4鑴氾級閫氶亾鏉ヨ緭鍑轰竴涓鐜2K 鍗犵┖姣斿彲璋冪殑鏂规尝锛屽崰绌烘瘮鍙氳繃PD7鑴氱殑鎸夐敭璋 include "STM8S105K.h"typedef unsigned char u8;typedef unsigned int u16;u16 value;void SystemInit(void){ CLK_CKDIVR = 0x08; // 16M鍐呴儴RC缁2鍒嗛鍚庣郴缁熸椂閽熶负8M CLK_PCKENR1 |=...
  • stm8s鍗曠墖鏈nrst鑴氳兘浣滆緭鍑哄悧
    绛旓細涓嶈兘锛宯rst鏄鍗曠墖鏈虹殑涓涓浣嶈剼銆傚浣嶈剼鐨勬帴娉曚笌搴旂敤锛1锛岄氬父涓巒rst鑴氱浉杩炵殑鏈塺c闃诲澶嶄綅锛屽彲鍦ㄤ笂鐢电殑涓鐬棿锛屽浣嶅崟鐗囨満锛屼粠0鍦板潃寮濮嬫墽琛屼唬鐮併2锛岄氬父涓庝豢鐪熷櫒鐩歌繛锛岃皟璇曚豢鐪熷櫒鏈変豢鐪熷崟鐗囨満杞欢鐨勫姛鑳斤紝涔熸湁澶嶄綅鍗曠墖鏈虹殑鍔熻兘锛屽叾澶嶄綅鍔熻兘灏辨槸閫氳繃姝ゆ帴鍙e疄鐜般3锛屾帴鐗规湁鐨勫浣岻C锛屽浜庝竴浜涘簲鐢ㄨ姹...
  • 扩展阅读:佳能最实用的三个镜头 ... 精工打造stm8s003 ... 佳能18-135镜头介绍 ... stm32为什么不建议学 ... stm手机版官方下载 ... usm和stm哪个更实用 ... 自学stm32单片机入门 ... stm8s003参数 ... 镜头usm和stm选哪个 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网