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