5 years, 10 months ago.

How to use AnalogIn on PA_2,PA_3 with NUCLEO F446RE

Hi. I need to use AnalogIn on PA_2 and PA_3 with Nucleo F446RE. I wrote the code for use AnalogIn on PA_2 and PA_3 but it doesn't move.

Could you tell me how to use PA_2 and PA_3 with AnalogIn?

This is the code.

AnalogIn F446RE PA_2 PA_3

#include "mbed.h"

// FROM DATA SHEET(STM32F446XX)
// ADC123_IN0 PA_0
// ADC123_IN1 PA_1
// ADC123_IN2 PA_2
// ADC123_IN3 PA_3
// ADC123_IN4 PA_4
// ADC123_IN5 PA_5
// ADC123_IN6 PA_6
// ADC123_IN7 PA_7
// ADC123_IN8 PB_0
// ADC123_IN9 PB_1
// ADC123_IN10 PC_0
// ADC123_IN11 PC_1
// ADC123_IN12 PC_2
// ADC123_IN13 PC_3
// ADC123_IN14 PC_4
// ADC123_IN15 PC_5

AnalogIn AnalogINPUT00(PA_0);
AnalogIn AnalogINPUT01(PA_1);
AnalogIn AnalogINPUT02(PA_2);//#
AnalogIn AnalogINPUT03(PA_3);//#
AnalogIn AnalogINPUT04(PA_4);
AnalogIn AnalogINPUT05(PA_5);
AnalogIn AnalogINPUT06(PA_6);
AnalogIn AnalogINPUT07(PA_7);
AnalogIn AnalogINPUT08(PB_0);
AnalogIn AnalogINPUT09(PB_1);
AnalogIn AnalogINPUT10(PC_0);
AnalogIn AnalogINPUT11(PC_1);
AnalogIn AnalogINPUT12(PC_2);
AnalogIn AnalogINPUT13(PC_3);
AnalogIn AnalogINPUT14(PC_4);
AnalogIn AnalogINPUT15(PC_5);

PwmOut LEDS(D13);//led

uint16_t AnalogValue[16];

void ReadAnalog(){
        AnalogValue[0] = AnalogINPUT00.read_u16();
        AnalogValue[1] = AnalogINPUT02.read_u16();
        AnalogValue[2] = AnalogINPUT02.read_u16();
        AnalogValue[3] = AnalogINPUT03.read_u16();
        AnalogValue[4] = AnalogINPUT04.read_u16();
        AnalogValue[5] = AnalogINPUT05.read_u16();
        AnalogValue[6] = AnalogINPUT06.read_u16();
        AnalogValue[7] = AnalogINPUT07.read_u16();
        AnalogValue[8] = AnalogINPUT08.read_u16();
        AnalogValue[9] = AnalogINPUT09.read_u16();
        AnalogValue[10] = AnalogINPUT10.read_u16();
        AnalogValue[11] = AnalogINPUT11.read_u16();
        AnalogValue[12] = AnalogINPUT12.read_u16();
        AnalogValue[13] = AnalogINPUT13.read_u16();
        AnalogValue[14] = AnalogINPUT14.read_u16();
        AnalogValue[15] = AnalogINPUT15.read_u16();
}

void setup(){
        LEDS.period_us(15);//LED
        for (float i = 0; i < 1; i = i + 0.025) {
                LEDS = i; wait_ms(10);
        }
        for (uint8_t i = 0; i < 2; i++) {
                LEDS = 1.0; wait_ms(100);
                LEDS = 0.0; wait_ms(100);
        }
}
/**************************************************************************************************/
int main() {
        setup();
        while(1) {
                ReadAnalog();
                LEDS = ! LEDS;
        }
}

1 Answer

5 years, 10 months ago.

Hi Daiki,

The PA_2 and PA_3 pins are used for stdio messages which are enabled by default, please see:

You should be able to change the definitions on lines 181 and 186 and then observe valid values on those pins.

Regards,

Ralph, Team Mbed