Сожалею, но этот путь устарел. Он был больше ориентирован на ядро от Clark Rogers (STM32-master) - но он перестал его активно поддерживать после того, как пару лет назад фирма STMicroelectronics плотно занялась своим ядром STM32duino.
Как-то сложно Вы объяснили - у меня все просто получается. За пять минут с переделкой проекта в FLProg три раза в STM32F407 грузил тест UART(0-6);
Этого делать не надо. Arduino IDE самостоятельно компилирует и грузит через ST-Link.
Да, проще. Но это только UNO.... У STM другие возможности.
АЦП 12-разрядный, но настраиваемый. Нужна команда analogWriteResolution(12).
Код: Выделить всё
#include "flprogUtilites.h"
bool out_92228919_1;
unsigned long timing_92228919_1;
bool en_220345184_1;
int in_220345184_1;
int out_220345184_1;
byte N_220345184_1;
byte M_220345184_1;
byte S1_220345184_1;
byte S2_220345184_1;
int array_220345184_1[20];
bool en_98796029_1;
int in_98796029_1;
int out_98796029_1;
int temp1_98796029_1;
int temp2_98796029_1;
int temp3_98796029_1;
int temp4_98796029_1;
int temp5_98796029_1;
int temp6_98796029_1;
int temp7_98796029_1;
int temp8_98796029_1;
bool _stou1 = 0;
void setup()
{
_startUart1();
}
void loop()
{
//Плата:1
if (millis() - timing_92228919_1 >= 25)
{
timing_92228919_1 = millis();
out_92228919_1 = 1;
}
else out_92228919_1 = 0;
en_220345184_1 = out_92228919_1;
in_220345184_1 = (analogRead (192));
// Filtr_median_20
if (en_220345184_1)
{
array_220345184_1[19] = in_220345184_1;
for (N_220345184_1=0; N_220345184_1<20; N_220345184_1++) // 0 до 19
{
out_220345184_1 = array_220345184_1[N_220345184_1];
S1_220345184_1 = 0;
S2_220345184_1 = 0;
for (M_220345184_1=0; M_220345184_1<20; M_220345184_1++) // 0 до 19
{
if (out_220345184_1 < array_220345184_1[M_220345184_1])
{
S1_220345184_1++;
if(S1_220345184_1>10)
{
break;
}
}
if (out_220345184_1 > array_220345184_1[M_220345184_1])
{
S2_220345184_1++;
if(S2_220345184_1>10)
{
break;
}
}
}
if (M_220345184_1>=20)
{
break;
}
}
for (N_220345184_1=0; N_220345184_1<19; N_220345184_1++)
{
array_220345184_1[N_220345184_1] = array_220345184_1[(N_220345184_1+1)];
}
}
en_98796029_1 = out_92228919_1;
in_98796029_1 = out_220345184_1;
// Filtr_wind_int
if (en_98796029_1)
{
temp8_98796029_1 = temp7_98796029_1;
temp7_98796029_1 = temp6_98796029_1;
temp6_98796029_1 = temp5_98796029_1;
temp5_98796029_1 = temp4_98796029_1;
temp4_98796029_1 = temp3_98796029_1;
temp3_98796029_1 = temp2_98796029_1;
temp2_98796029_1 = temp1_98796029_1;
temp1_98796029_1 = in_98796029_1;
out_98796029_1 = int ((temp1_98796029_1+temp2_98796029_1+temp3_98796029_1+temp4_98796029_1+temp5_98796029_1+temp6_98796029_1+temp7_98796029_1+temp8_98796029_1) / 8);
}
if (out_92228919_1)
{
if (!_stou1)
{
Serial1.println((out_98796029_1)*(3.23));
_stou1=1;
}
}
else
{
_stou1=0;
}
}
void _startUart1()
{
int code= 6;
Serial1.begin(9600, (flprog::serialModeFromInt(code)));
}
Измерения не проводил, но все PWM STM32 вроде привязаны к одному таймеру.
Наверное записываем. Думаю не более 50mcs( предположение).