Добрый день! я вот подумал, может Вам поможет мой кусок кода с опросом 3 какналов ацп в инжектированной последовательности преобразований
:
// âûâîäû ÀÖÏ íà âõîä ADC_in9 ìîíèòîð ïèòàíèÿ
GPIOB-›CRL &= ~GPIO_CRL_MODE1;
GPIOB-›CRL &= ~GPIO_CRL_CNF1;
// âûâîäû ÀÖÏ íà âõîä ADC_in14 15 íà àêñåëåðîìåòð
GPIOC-›CRL &= ~GPIO_CRL_MODE4;
GPIOC-›CRL &= ~GPIO_CRL_CNF4;
GPIOC-›CRL &= ~GPIO_CRL_MODE5;
GPIOC-›CRL &= ~GPIO_CRL_CNF5;
RCC-›CFGR |= RCC_CFGR_ADCPRE; // òàêòîâàÿ ÀÖÏ = PCLK/8
RCC-›CFGR |= RCC_CFGR_ADCPRE_DIV8;
RCC-›APB2ENR |= RCC_APB2ENR_ADC1EN;
// ðåæèì èíæåêòèðîâàííîãî ïðåîáðàçîâàòåëÿ
// ADC1-›JSQR|= ADC_JSQR_JL_1; // 3 ïðåîáðàçîâàíèÿ â ïîñëåäîâàòåëüíîñòè
// ADC1-›JSQR |= ADC_JSQR_JSQ1_0 | ADC_JSQR_JSQ1_1 |ADC_JSQR_JSQ1_2 |ADC_JSQR_JSQ1_3; // ïåðâîå ïðåîáðàçîâàíèå êàíàë 15
// ADC1-›JSQR |= ADC_JSQR_JSQ2_1 |ADC_JSQR_JSQ2_2 |ADC_JSQR_JSQ2_3; // âòîðîå ïðåîáðàçîâàíèå êàíàë 14
ADC1-›JSQR=0x27a5c0;
//Çàäàíèå íîìåðîâ êàíàëîâ â êàæäîì ïðåîáðàçîâàíèè
ADC1-›JSQR = 2‹‹20; //â ãðóïïå èíæåêòèðîâàííûõ êàíàëîâ 3 ïðåîáðàçîâàíèÿ
ADC1-›JSQR |= 15‹‹15; //ïðåîáðàçîâàíèå 1 - êàíàë 15
ADC1-›JSQR |= 14‹‹5; //ïðåîáðàçîâàíèå 2 - êàíàë 9
ADC1-›JSQR |= 9‹‹10; //ïðåîáðàçîâàíèå 3 - êàíàë 14
ADC1-›CR1 |= ADC_CR1_SCAN; // ðåæèì ñêàíèðîâàíèÿ ïèíîâ
// ïðîãðàììíûé çàïóñê
ADC1-›CR2 = ADC_CR2_JEXTSEL_0 | ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTTRIG;
// âêëþ÷åíèå
ADC1-›CR2 |= ADC_CR2_ADON;
// êàëèáðîâêà
ADC1-›CR2 |= ADC_CR2_RSTCAL;
while ((ADC1-›CR2 & ADC_CR2_RSTCAL) == ADC_CR2_RSTCAL){}
ADC1-›CR2 |= ADC_CR2_CAL;
while ((ADC1-›CR2 & ADC_CR2_RSTCAL) == ADC_CR2_CAL){}
return;
}
и еще, часть кода можно генерить любительским визардом:
http://mycontroller.ru/stm32-generat...koda/#more-211