} /* * ADC conversion group. * Mode: Continuous, 16 samples of 2 channels, HS triggered by * GPT4-TRGO. * Channels: Sensor, VRef. */ static const ADCConversionGroup adcgrpcfg1 = { true, ADC_GRP1_NUM_CHANNELS, adccallback, adcerrorcallback, 0, /* CR1 */ ADC_CR2_EXTEN_RISING | ADC_CR2_EXTSEL_SRC(12), /* CR2 */ ADC_SMPR1_SMP_SENSOR(ADC_SAMPLE_144) | ADC_SMPR1_SMP_VREF(ADC_SAMPLE_144), 0, /* SMPR2 */ ADC_SQR1_NUM_CH(ADC_GRP1_NUM_CHANNELS), /* SQR1 */ 0, /* SQR1 */ ADC_SQR3_SQ2_N(ADC_CHANNEL_SENSOR) | ADC_SQR3_SQ1_N(ADC_CHANNEL_VREFINT) }; /*===========================================================================*/ /* Application code. */ /*===========================================================================*/ /* * This is a periodic thread that does absolutely nothing except flashing * a LED attached to TP1. */ static THD_WORKING_AREA(waThread1, 128);
ADC_SQR3_SQ1_N(ADC_CHANNEL_IN10) }; /* * ADC conversion group. * Mode: Continuous, 16 samples of 8 channels, SW triggered. * Channels: IN10, IN11, IN10, IN11, IN10, IN11, Sensor, VRef. */ static const ADCConversionGroup adcgrpcfg2 = { TRUE, ADC_GRP2_NUM_CHANNELS, adccallback, adcerrorcallback, 0, ADC_CR2_TSVREFE, /* CR1, CR2 */ ADC_SMPR1_SMP_AN11(ADC_SAMPLE_41P5) | ADC_SMPR1_SMP_AN10(ADC_SAMPLE_41P5) | ADC_SMPR1_SMP_SENSOR(ADC_SAMPLE_239P5) | ADC_SMPR1_SMP_VREF(ADC_SAMPLE_239P5), 0, /* SMPR2 */ ADC_SQR1_NUM_CH(ADC_GRP2_NUM_CHANNELS), ADC_SQR2_SQ8_N(ADC_CHANNEL_SENSOR) | ADC_SQR2_SQ7_N(ADC_CHANNEL_VREFINT), ADC_SQR3_SQ6_N(ADC_CHANNEL_IN11) | ADC_SQR3_SQ5_N(ADC_CHANNEL_IN10) | ADC_SQR3_SQ4_N(ADC_CHANNEL_IN11) | ADC_SQR3_SQ3_N(ADC_CHANNEL_IN10) | ADC_SQR3_SQ2_N(ADC_CHANNEL_IN11) | ADC_SQR3_SQ1_N(ADC_CHANNEL_IN10) }; /* * Red LEDs blinker thread, times are in milliseconds. */ static THD_WORKING_AREA(waThread1, 128); static THD_FUNCTION(Thread1, arg) { (void)arg;
ADC_CR2_SWSTART, /* CR2 */ ADC_SMPR1_SMP_AN11(ADC_SAMPLE_3), //sample times ch10-18 0, //sample times ch0-9 ADC_SQR1_NUM_CH(ADC_GRP1_NUM_CHANNELS), //SQR1: Conversion group sequence 13...16 + sequence length 0, //SQR2: Conversion group sequence 7...12 ADC_SQR3_SQ1_N(ADC_CHANNEL_IN11) //SQR3: Conversion group sequence 1...6 }; static const ADCConversionGroup adcgrpcfg2 = { FALSE, //circular buffer mode ADC_GRP2_NUM_CHANNELS, //Number of the analog channels NULL, //Callback function adcerrorcallback, //Error callback 0, /* CR1 */ ADC_CR2_SWSTART, /* CR2 */ ADC_SMPR1_SMP_SENSOR(ADC_SAMPLE_480) | ADC_SMPR1_SMP_VREF(ADC_SAMPLE_480), //sample times ch10-18 0, //sample times ch0-9 ADC_SQR1_NUM_CH(ADC_GRP2_NUM_CHANNELS), //SQR1: Conversion group sequence 13...16 + sequence length 0, //SQR2 ADC_SQR2_SQ10_N(ADC_CHANNEL_SENSOR) | ADC_SQR2_SQ9_N(ADC_CHANNEL_VREFINT) //SQR3 }; void myADCinit(void){ palSetGroupMode(GPIOC, PAL_PORT_BIT(1), 0, PAL_MODE_INPUT_ANALOG); adcStart(&ADCD1, NULL); //enable temperature sensor and Vref adcSTM32EnableTSVREFE(); } int uitoa(unsigned int value, char * buf, int max) { int n = 0;