Hallo! leider funktioniert mein ADC interrupt nicht. deshalb hab ich mal alles bis auf den ADC und den interupt handler gelöscht ... aber trotzdem gehts nicht. der interupt ist enabled und aktiv, aber trotzdem springt er nicht in die interrupt routine! kann mir jemand helfen?
1 | #include "stm32f10x.h" |
2 | int value; |
3 | |
4 | int main(void) |
5 | {
|
6 | RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // GPIOC clock |
7 | RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; // ADC clock |
8 | |
9 | /* Input @ PC0 */
|
10 | GPIOC->CRL &= ~GPIO_CRL_MODE0; // Input |
11 | GPIOC->CRL &= ~GPIO_CRL_CNF0; // Analog |
12 | ADC1->CR2 |= ADC_CR2_ADON | ADC_CR2_CONT; // ADC wakeup , continous |
13 | ADC1->SMPR1 &= ~ADC_SMPR1_SMP10; // set sample time for channel 10 to 1.5 |
14 | ADC1->SQR1 &= ~ADC_SQR1_L; // 1 conversions |
15 | ADC1->SQR3 |= ADC_SQR3_SQ1_1 | ADC_SQR3_SQ1_3; // channel 10 is first |
16 | ADC1->CR1 |= ADC_CR1_EOCIE;// enable interrupt at EOC |
17 | ADC1->CR2|= ADC_CR2_CAL;// start ADC calibration |
18 | while(ADC1->CR2 & ADC_CR2_CAL){} // wait during calibration |
19 | NVIC_EnableIRQ(ADC1_IRQn); // enable ADC interrupt |
20 | ADC1->CR2 |= ADC_CR2_ADON; |
21 | |
22 | while(1){} |
23 | }
|
24 | |
25 | void ADC1_IRQHandler(void) |
26 | {
|
27 | if(ADC1->SR & ADC_SR_EOC) |
28 | {
|
29 | value = ADC1->DR; |
30 | }
|
31 | }
|