[elektro] keil mdk rejtelmek
uprogc
uprogc at gmail.com
Sat Feb 8 17:49:45 CET 2020
Kicsit meg kell ismerni az egesznek a logikajat es csak azutan nekiallni.
Nem egy profi dolog, de segithet inicializalos, stb primitiv dolgokban.
A HAL egyszru dolgokat nagyon bonyolultan, folosleges eroforrast
felhasznalva valosit meg, de legalabb azzal nem kell dolgozni.
En ki szoktam szedni az adott irq-hoz tartozo callbackbol ami folosleges a
projekt szempontjabol, pl ha 10 feltetel van es csak egy kell mindig, a
tobbit a vegen letorlom, Persze ehhez at kell latni. Van amit meg kell
irni, mert nem jol irtak meg es vagy nem ugy megy ahogy kellene, vagy
sehogy sem megy, errol irtam korabban. Most csinaltunk egy IoT projektet
32F0-ra es a Keil nagyon bemutatkozott ( egyszeruen nem masolt at a memcpy
bizonyos adatokat, se warning se semmi es tok egyszeru dolgokrol van szo,
semmi extra ), ugy hogy attertunk gcc-re ( vagyis cube ide ) es megy minden
mint az ora.
""
az IT-ket weak prefixel még a starup fileban definiálják ami egy B . asm
utasítást hajt végre ami egy végtelen ciklus. Így a nem definiált de
véletlenűl becsapó IT végtelen ciklusra fut, más hibát nem csinál és majd a
program felépítésétől függően valami történik.
Nem neztem utanna, de nalam a weak nem okoz vegtelen ciklust, csak annyi az
egesz hogy felul definialhato.
On Sat, Feb 8, 2020 at 10:07 AM Skandar Graun <sgraun at gmail.com> wrote:
> Megcsináltam az alap IT kezelő filében az extern bool formátumú
> deklarációt.
> Megcsináltam a main filében a normál bool deklarációt.
> Mellette mindkét filében ott vigyorgott a gyári deklaráció...
>
> It kezelő file:
>
>
> /* External variables
> --------------------------------------------------------*/
> extern DMA_HandleTypeDef hdma_adc1;
> extern TIM_HandleTypeDef htim1;
> /* USER CODE BEGIN EV */
> extern bool tim_1_it;
>
> /* USER CODE END EV */
>
>
> main.c:
>
> /* Private variables
> ---------------------------------------------------------*/
> unsigned int cnt;
> bool tim_1_it;
>
>
>
> ADC_HandleTypeDef hadc1;
> DMA_HandleTypeDef hdma_adc1;
>
> TIM_HandleTypeDef htim1;
>
> UART_HandleTypeDef huart1;
> UART_HandleTypeDef huart3;
>
> /* USER CODE BEGIN PV */
>
>
> Az általam létrehozott változó a tim_1_it boolean típus.
>
> Egyrészt nem működik, tehát hiába setelem be a megszakításban, a main-ban
> nem látom.
> Másrészt ha átállítottam a megszakítás filében char-ra, nem dobott rá
> hibát, de még warningot sem.
>
> hg12345 <hg12345 at freemail.hu> ezt írta (időpont: 2020. febr. 7., P, 9:13):
>
> > Szia
> >
> > szerintem ennek nem sok köze van a KEIL-hez.
> >
> > Elvileg ha függvényt vagy változót akarsz máshol használni mint az adott
> > fordítási egységben, akkor #include kell elő definicióval függvény
> > esetében, vagy változó esetén external ezt a az include-t befordított
> abba
> > a fordítási egységbe ahol szeretnéd használni és elérhető válik.
> >
> > A keil fordító azért nem ennyire finnyás, mert enélkül is kezeli, de dob
> > warning-t.
> >
> > A másik, a HAL-ban előszeretettel #define helyettesítik az IT nevét
> másra
> > és így írják meg az IT függvényt. A keil és legtöbb keret programram az
> > IT-ket weak prefixel még a starup fileban definiálják ami egy B . asm
> > utasítást hajt végre ami egy végtelen ciklus. Így a nem definiált de
> > véletlenűl becsapó IT végtelen ciklusra fut, más hibát nem csinál és
> majd a
> > program felépítésétől függően valami történik.
> >
> > (((Amúgy a HAL jó is meg rossz is, sajnos rettentő lassú és amit nem
> > tudott megírni a HAL programozó azt már csak kínszenvedés... ugyan a HAL
> > kezelés saját kézbe vehető, mert a HAL konfigban ez meghatározható, de
> > sajnos globálisan... Vagyis ha elfogadod és használnád az egyis pl.:
> > USART-ban de a másikhoz nem jó, akkor bizony borul a bili mert vagy mindk
> > kettőben használod, vagy egyikbe se.... A másik baja, nem igaz hogy HW
> > elkell fedni a programozó elől, ha tényleg jót szeretnél csinálni, akkor
> HW
> > is ismerni kell meg HAL gondolkodás módját, ez min. 2x annyi meló....)))
> >
> > Ha valamit nem találsz a keil-ben, akkor teljes fordítási egységre
> > kereséssel kidobja hol van ilyen, persze ehhez az kell kell, hogy jól
> > legyen beállítva a könyvtár struktura.
> >
> > üdv
> >
> > -------- Eredeti levél --------
> > Feladó: Skandar Graun < sgraun at gmail.com (Link -> mailto:
> sgraun at gmail.com)
> > >
> > Dátum: 2020 február 6 21:02:08
> > Tárgy: [elektro] keil mdk rejtelmek
> > Címzett: elektro at centralnet.hu (Link -> mailto:elektro at centralnet.hu)
> > Sziasztok!
> > Beleakadtam egy problémába, szerintme a hozzáértőknek két perc, én meg
> > keresgélek fél napja.
> > Keil ARM SDK
> > Létrehoztam egy projectet, STM32CUBE segítségével.
> > Led már villog, szóval valami történik. :D
> > Valahol egy eldugott filében van az IRQ kezelés, ahol lehet beírni user
> > kódokat, meg minden finomságot.
> > Viszont én szeretném az ott levő változókat a main.c-ben is használni.
> > Na, itt akadtam el, mert nem jövök rá, milyen attribútumok kellenének.
> > Ha jól sejtem, az extern kéne, de nem látják egymást. A keresések meg
> mind
> > ezt ajálnják.
> > Le is fordul vele, csak nem megy.
> > Amúgy van egy HAL_TIM_IRQhandler nevű cucc is, ami megintcsak ilyesmi
> > lenne, de annak meg nem találom a deklarációját... szóval ott sem tudok
> > csinálni értelmes dolgot.
> > Tudtok ajánlani valami használható ötletet?
> > -----------------------------------------
> > elektro[-flame|-etc]
> > -----------------------------------------
> > elektro[-flame|-etc]
> -----------------------------------------
> elektro[-flame|-etc]
More information about the Elektro
mailing list