 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
simeon Član


Pridružen-a: Pon 21 Maj 2007 21:55 Prispevkov: 118 Aktiv.: 0.54 Kraj: Šentjernej
|
Objavljeno: Ned Dec 21, 2014 5:51 pm Naslov sporočila: |
|
|
To je bilo pa hitro.
Hvala tilz0R je odpravilo napako.
Ko berem tvojo stran, ki mi je v pomoč sem zasledil, da raje uporabljaš standardno knjižnico. Je še vedno tako ali si presedlal na HAL driverje?
Sam sem kar zbegan glede tega kaj uporabljat. Še posebej pa, ker se pogled STMa učim še C jezik. S tem pa me heca interpretacija funkcij (knjižnice) in pravilna uporaba le-teh. _________________ Sej bo bolš! |
|
Nazaj na vrh |
|
 |
tilz0R Član


Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 5.70 Kraj: Črnomelj
|
Objavljeno: Ned Dec 21, 2014 5:55 pm Naslov sporočila: |
|
|
Ja, drži, raje standardno knjižnico, in bom tam tudi ostal, če le ne bo nujna potreba po HAL driverjih. Namreč "smrdi" mi Cube zaenkrat še.
Nepregledna koda, slaba berljivost, verjetno še zelo bugasta zadeva.
Raje imam STD driverji, ki so samo nekakšen višji nivo, da ni treba pisat registrov, ampak to funkcije delajo zate. Še vedno pa moraš sam točno vedet kaj bi rad (vklopi USART, vklopi uro, preglej če je bit aktiven, etc etc)
HAL driverji so pa še višje, pa sploh ne veš več kaj se dogaja spodaj. _________________ Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net |
|
Nazaj na vrh |
|
 |
aly Član



Pridružen-a: Tor 28 Sep 2004 14:51 Prispevkov: 9407 Aktiv.: 39.90 Kraj: Kranj - struževo
|
Objavljeno: Pon Dec 22, 2014 2:44 pm Naslov sporočila: |
|
|
Za CubeMX imamo že ločeno temo. http://www.elektronik.si/phpBB2/viewtopic.php?t=38922
Jaz sem en sorazmerno enostaven projekt (usb, enkoder, par timerjev in interruptov) v parih dneh času gor postavil iz nič v CubeMX. Z zadnjo posodobitvijo zadeva že kar dobro špila.
Pri STD-Lib sem za nov projekt vedno vzel enega starega in ga predelal, s tem pa vlekel s sabo vse (neposodobljene) knjižnice in buge v kodi Ampak tole pisanje je za v drugo temo.. _________________ I'm going to stand outside, so if anyone asks, I'm outstanding  |
|
Nazaj na vrh |
|
 |
damo Član


Pridružen-a: Čet 31 Jul 2003 13:45 Prispevkov: 2008 Aktiv.: 8.52 Kraj: Krško
|
Objavljeno: Čet Dec 25, 2014 2:02 pm Naslov sporočila: |
|
|
Bom dal kar v to temo, sicer pa je bolj vprašanje iz Cja:
v projektu sem si definiral IO pine po svojih imenih, da mi je zadeva bolj pregledna.
definiral sem jih kot (primer za output in input):
#define LED1 GPIOE,GPIO_Pin_13 //PE13
#define KEY1 GPIOA,GPIO_Pin_8 // PA8
kličem jih na ta način:
GPIO_ReadInputDataBit(KEY1)
in pa GPIO_SetBits(LED1) oz. GPIO_ResetBits(LED1)
Do tu mi vse deluje ok. Compiler pač zamenja string "LED1" s stringom "GPIOE,GPIO_Pin_13" in tako naprej za vse ostale.
Rad opravil začetno inicializacijo v stilu Pin_Output_Init(LED1) oz. Pin_Input_Init(KEY1), zato sem napisal funkcijo (bom dal samo za output, da ne dolgovezim):
Koda: |
void DL_Pin_Init_Output(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
GPIO_InitTypeDef GPIO_InitDef;
GPIO_InitDef.GPIO_Pin = GPIO_Pin;
GPIO_InitDef.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitDef.GPIO_OType = GPIO_OType_PP;
GPIO_InitDef.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitDef.GPIO_Speed = GPIO_Speed_100MHz;
//Initialize pins
GPIO_Init(GPIOx, &GPIO_InitDef);
// enable GPIO port clock
if (GPIOx == GPIOA) RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOA, ENABLE);
if (GPIOx == GPIOB) RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOB, ENABLE);
if (GPIOx == GPIOC) RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOC, ENABLE);
if (GPIOx == GPIOD) RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOD, ENABLE);
if (GPIOx == GPIOE) RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOE, ENABLE);
} |
Ta zadeva pa mi ne dela.... _________________ Dobrga štromarja samo slab šnops strese! |
|
Nazaj na vrh |
|
 |
tilz0R Član


Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 5.70 Kraj: Črnomelj
|
Objavljeno: Čet Dec 25, 2014 2:07 pm Naslov sporočila: |
|
|
Najprej ura, potem ostalo.
Brez ure so registri mrtvi za GPIO.
Klical si "Reset" funkcije, moraš pa "Clock" funkcije.
Klicanje je potrebno pred inicializacijo.
Koda: |
void DL_Pin_Init_Output(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
GPIO_InitTypeDef GPIO_InitDef;
// enable GPIO port clock
if (GPIOx == GPIOA) RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
if (GPIOx == GPIOB) RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
if (GPIOx == GPIOC) RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
if (GPIOx == GPIOD) RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
if (GPIOx == GPIOE) RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);
GPIO_InitDef.GPIO_Pin = GPIO_Pin;
GPIO_InitDef.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitDef.GPIO_OType = GPIO_OType_PP;
GPIO_InitDef.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitDef.GPIO_Speed = GPIO_Speed_100MHz;
//Initialize pins
GPIO_Init(GPIOx, &GPIO_InitDef);
}
|
_________________ Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net
Nazadnje urejal/a tilz0R Čet Dec 25, 2014 2:42 pm; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
 |
damo Član


Pridružen-a: Čet 31 Jul 2003 13:45 Prispevkov: 2008 Aktiv.: 8.52 Kraj: Krško
|
Objavljeno: Čet Dec 25, 2014 2:22 pm Naslov sporočila: |
|
|
tilz0R je napisal/a: |
Najprej ura, potem ostalo. |
ahaaa
A lahko compiler tudi "sestavi" argumente, da bi lahko npr. klical takole:
original:
GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)
moja želja:
GPIO_PinAFConfig(Q1_A,GPIO_AF_TIM2);
(pri tem je Q1_A definiran na isti način kot pini v prejšnjem postu)
Hvala za ekspresno hitro pomoč! _________________ Dobrga štromarja samo slab šnops strese! |
|
Nazaj na vrh |
|
 |
tilz0R Član


Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 5.70 Kraj: Črnomelj
|
Objavljeno: Čet Dec 25, 2014 2:41 pm Naslov sporočila: |
|
|
Moralo bi it tako kot je tvoja želja, compiler bo zamenjal prva dva parametra z "A,B" in boš na koncu dobil
func(A,B, C); _________________ Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net |
|
Nazaj na vrh |
|
 |
Sigi Član

Pridružen-a: Čet 31 Jul 2014 11:42 Prispevkov: 207 Aktiv.: 1.58 Kraj: Kamnik
|
Objavljeno: Čet Dec 25, 2014 3:31 pm Naslov sporočila: |
|
|
Če se dobro spomnim, se mi je en compiler usajal, če sem na koncu #define bla,bla definicije v isti vrstici imel še // komentar, saj ga je skupaj z definirano vrednostjo vstavil npr. v klic funkcije, in je zato javil syntax err. Tako sem se navadil komentirati vrstico nad #define makrojem .
Samo toliko, če komu izkušnja pride prav.
lp |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 458 dni
Powered by phpBB © 2001, 2005 phpBB Group
|