Re: Programování STM32 - přerušení
Jaroslav Buchta
jaroslav.buchta na hascomp.cz
Čtvrtek Říjen 3 04:17:05 CEST 2019
Funguje to tak, ze ty callback funkce jsou v HAL knihovnach definovany
jako weak a nic nedelaji - takto treba
__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
/* Prevent unused argument(s) compilation warning */
UNUSED(GPIO_Pin);
/* NOTE: This function should not be modified, when the callback is
needed,
the HAL_GPIO_EXTI_Callback could be implemented in the user file
*/
}
Pokud si nadefinujete svoji callback funkci, tak linker pouzije
prednostne tu uzivatelskou.
Je dobre se na tyto featury podivat do zdrojaku knihoven, hledanim v
souborech se da ve zdrojacich celkem rychle zorientovat.
A je to jak pisete, o flagy se postara HAL, je dobre si zprovoznit to
ladeni a ty obsluhy preruseni si treba prokrokovat, je pak vsechno jasnejsi.
Dne 03.10.2019 v 3:11 cizek.milan na seznam.cz napsal(a):
>
> Ahoj, rozchodil jsem i tlačítko přes přerušení… nicméně nechápu jak to
> funguje a prosím o objasnění.
>
> Jde o tento návod: https://www.youtube.com/watch?v=UtkszckecV8&t=193s
>
> Na pinu s tlačítkem jsem v MX zapl přerušení, přegeneroval kód…
>
> Měl jsem za to, že budu muset editovat kód v souboru _it.c, třeba ve
> funkci *EXTI0_IRQHandler*nebo v *HAL_GPIO_EXTI_IRQHandler*.
>
> **
>
> Ale zkusil jsem jako v návodu pouze dopsat tu funkci
> *HAL_GPIO_EXTI_Callback*(uint16_tGPIO_Pin)do main.c. A dát si do ní
> zapnutí ledky a hle, funguje to. Nechápu ale jak.
>
> Přijde mi, že tato funkce nemůže mít žádnou vazbu na zbytek kódu…
> kdyby to bylo v Cpp, řekl bych, že je to nějaké override/přepsání
> někde existující funkce v parentovi, ale tady nějak nechápu.
>
> Jak je to tedy provázané? V této funkci se mi sejdou všechna
> pozapínaná přerušení bez ohledu na pin (PA/PB…)? Tj. stačí jen udělat
> podmínky podle pinů? Předpokládám, že už není třeba řešit nějaké
> čištění flagů přerušení (to si děje v IRQHandleru -
> __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);)
>
> Díky
>
> M.
>
> **
>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20191003/18ec1c16/attachment.html>
Další informace o konferenci Hw-list