Witam
Mam takie problem, nie działa mi warunek if gdy używam zmiennych rzeczywistych nawet jeżeli ta sama operacja jest po if i po else to nie wykona się żadna. Warunek działa normalnie na liczbach rzeczywistych wpisanych bezpośrednio w warunku
Mały Młot napisał(a):
...nie działa mi warunek if gdy używam zmiennych rzeczywistych...Warunek działa normalnie na liczbach rzeczywistych
Pokaż kod, bo nie idzie tego zrozumieć.
if ledOn(GPIOA, GPIO_Pin_5);
else ledOn(GPIOA, GPIO_Pin_5);
void measureLeds(float min, float max, float weight, float range){
if(weight < max)(GPIOA, GPIO_Pin_5);
else ledOn(GPIOA, GPIO_Pin_5);
asm("nop");
}
Mały Młot napisał(a):
if ledOn(GPIOA, GPIO_Pin_5);
else ledOn(GPIOA, GPIO_Pin_5);
To się nie zbuduje. Brak nawiasów, albo warunku.
A gdzie jest warunek if
a?
I wklej kod pomiędzy <code class="c"></code>
Edit:
if(weight < max)(GPIOA, GPIO_Pin_5);
zjadłeś ledOn
po warunku.
Mały Młot napisał(a):
void measureLeds(float min, float max, float weight, float range){
if(weight < max)(GPIOA, GPIO_Pin_5);
else ledOn(GPIOA, GPIO_Pin_5);
asm("nop");
}
to (GPIOA, GPIO_Pin_5);
nic nie robi!
Błędu nie ma bo tu jest takie niedociągnięcie języka z operatorem ,
.
eh za dużo razy cofnąłem, tam jest funkcja dam zaraz kod
void ledOn(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin){
GPIO_WriteBit(GPIOx, GPIO_Pin, 0);
}
//------------------------------------------------------------------
void measureLeds(float min, float max, float weight, float range){
if(weight < max) ledOn(GPIOA, GPIO_Pin_5);
else ledOn(GPIOA, GPIO_Pin_5);
Pozostałe parametry pinom nadaję w funkcji init, ledon działa poprawnie bez warunku
Z tym co pokazałeś musi działać. Błąd musi tkwić gdzieś indziej.
Po pierwsze użyj debugera (nie wiem, na jakiej platformie to robisz, ale musi się dać debugować).
CrossWork studio, o to chodzi, że używam, ale wszystko wydaje się być ok, niestety funkcja isę nie wywołuje
void measureLeds(float min, float max, float weight, float range){
if(weight < max) ledOn(GPIOA, GPIO_Pin_5);
else ledOn(GPIOA, GPIO_Pin_5);
czy ja jestem slepy czy mam racje i ten if jest bez sensu? (bo i tak czy siak wywolujesz funkcje z tymi samymi parametrami)
Z tego co kojarzę, masz słabość do makr. Upewnij się, że jakieś makro nie mąci ci w tym kodzie.
Problem leżał po stronie ustawień projektu, pozdrawiam i dziękuje za pomoc
eh niestety mam kolejny problem, po odjęciu 2 liczb float dodaniach, max - min dostaję liczbę ujemną, co nie powinno mieć miejsca
(max - min) == -2
przy max = 6, oraz min 2
(min + (1.0 / 3.0 * (max - min))
(min + (1.0 / 3.0 * (max - min)))