Skocz do zawartości

STM32F103 edycja własnej biblioteki do współpracy z HAL


henryxxl

Pomocna odpowiedź

Cześć.

aktualnie pobawiłem się trochę stm32 na rejestrach ale wiem że trzeba iść z czasem i zainteresowałem się hal. Mam pierwszy problem otóż wcześniej napisałem bibliotekę do hd44780 bez pinu zajętości i czas (delay) zrobiłem na systick ale że biblioteka hal korzysta z systicka muszę przejść na delay przy wykorzystaniu timera ale mam problem jak to zrobić w hal.

Może koledzy jakaś porada? 😉

Link do komentarza
Share on other sites

@henryxxl, witam na forum 😉 Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start:

  • Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników.
  • Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć?
  • Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości.

18 godzin temu, henryxxl napisał:

Mam pierwszy problem otóż wcześniej napisałem bibliotekę do hd44780 bez pinu zajętości i czas (delay) zrobiłem na systick ale że biblioteka hal korzysta z systicka muszę przejść na delay przy wykorzystaniu timera ale mam problem jak to zrobić w hal.

Możesz napisać z czym dokładnie masz problem? Interesowałeś się funkcją od opóźnień, która jest wbudowana w HAL? Więcej informacji na jej temat znajdziesz tutaj: Kurs STM32 F1 HAL – #4 – sterowanie GPIO w praktyce

Link do komentarza
Share on other sites

void delayms2(uint32_t czasUS)
{	
	uint32_t czas2;
	czas2 = czasUS;
	czas2 = czas2 * 1000;
	licznik = 0;
	HAL_NVIC_EnableIRQ(TIM2_IRQn);
	while (licznik != czas2) ; 
	
	HAL_NVIC_DisableIRQ(TIM2_IRQn);		
}
void delayus2(uint32_t czasUS)
{	
	uint32_t czas2;
	czas2 = czasUS;
	licznik = 0;
	HAL_NVIC_EnableIRQ(TIM2_IRQn);
	while (licznik != czas2) ; 
	
	HAL_NVIC_DisableIRQ(TIM2_IRQn);		
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	licznik++;
	
}

Wymyśliłem taki sposób delay na timer lecz nie do końca mi działa otóż diodą led pomigam ale hd44780 nie przechodzi inicjalizacji.

Ustawiania timer:

tim2.Instance = TIM2;
	tim2.Init.Period = 7199;
	tim2.Init.Prescaler = 0;
	tim2.Init.ClockDivision = 0;
	tim2.Init.CounterMode = TIM_COUNTERMODE_UP;
	tim2.Init.RepetitionCounter = 0;
	tim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
	HAL_TIM_Base_Init(&tim2);
 
	//HAL_NVIC_EnableIRQ(TIM2_IRQn);
	HAL_TIM_Base_Start_IT(&tim2);

 

Link do komentarza
Share on other sites

A dlaczego tworzysz własne funkcje do opóźnień? To nie jest złośliwe/podchwytliwe pytanie - może ja czegoś nie rozumiem, bo już się pogubiłem. Dlaczego nie chcesz wykorzystać gotowej funkcji HAL_Delay, która działa w oparciu o SysTick? Jest ona opisana w linkowanym przeze mnie artykule.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.