Fórum témák

» Több friss téma
Fórum » ARM - Miértek hogyanok
 
Témaindító: gtk, idő: Jún 26, 2007
Lapozás: OK   127 / 177
(#) oxygen válasza don_peter hozzászólására (») Júl 17, 2018 / 1
 
Szia

Itt a lap alja felé egy lehetséges megoldás, ugyan 32f401-re, de hátha... a két értéket kell átírni:
-usbd_def.h : USB_HS_MAX_PACKET_SIZE from 512 to 256
-usbd_cdc.h : CDC_DATA_HS_MAX_PACKET_SIZE from 512 to 256
Viszont ha újragenerálod a CubeMX-szel a projektet újra a rossz érték kerül bele. 407-esem van, de CubeMX-et nem használok, nem tetszett. Ha más megoldás is jó (cmsis, egyebek) kutatok még.
(#) don_peter válasza don_peter hozzászólására (») Júl 17, 2018 /
 
A teljes USB CDC projekt innen tölthető.. Köszi előre is, aki megnézi..
(#) don_peter válasza oxygen hozzászólására (») Júl 17, 2018 /
 
CMSIS lenne a legjobb, gondolom az SPL-t használja... Elvileg.
Ha van ilyen működő projektet, szívesen venném, mert egyelőre nem működik a dolog.
Kipróbálom amit írtál..

..., amúgy ez nem csak a HIGH SPEED, USB-hez kell?
Mert én FS-t használok.

Egy isten vagy..
Nem hiszem el, hogy ez volt a baja, most simán csont nélkül megy.. Hihetetlen, soha nem jöttem volna rá.
Köszi az időt amit rám áldoztál. Hihetetlen..
A hozzászólás módosítva: Júl 17, 2018
(#) oxygen válasza don_peter hozzászólására (») Júl 17, 2018 /
 
Örülök, hogy működik Nem vagyok egy nagy stm32 szakértő, CMSIS-t használok (SPL-t használja), illetve próbálkozom leginkább, általában githubról, meg innen-onnan összeollózom ami kell, aztán módosítom az igényeimhez. Amit meg nem találok azt megírom.
(#) don_peter válasza oxygen hozzászólására (») Júl 17, 2018 /
 
Ha van ilyen CDC-t 407-esre, ami az SPL-t használja és működik is, annak nagyon örülnék.
Könnyebb lenne felhasználnom..
(#) oxygen válasza don_peter hozzászólására (») Júl 18, 2018 /
 
Nincs ilyenem, nem USB-zek, de hétvégén lesz egy kis időm összedobok egyet. Illetve f103-ra van valami példaprogramom coocox-hoz, ha megfelel.
(#) don_peter válasza oxygen hozzászólására (») Júl 18, 2018 /
 
32F103-ra nekem is van működő kódom, már évek óta használom, ez a 407-es ami próbára teszi az idegeimet. Ha erre lenne, az jó lenne. Köszi előre is..
(#) devilke3000 válasza don_peter hozzászólására (») Júl 18, 2018 /
 
Ez mire jó még ARMnál debbugolásra is vagy csak felprogramozáshoz?
(#) don_peter válasza devilke3000 hozzászólására (») Júl 18, 2018 /
 
Az épülő projektemhez, kell mint kétoldalú kommunikáció, egyedi protokoll szerint.
(#) kapu48 válasza don_peter hozzászólására (») Júl 18, 2018 /
 
Szia!
Talán ez jó neked: Bővebben: Link
(#) oxygen válasza don_peter hozzászólására (») Júl 21, 2018 /
 
Egy ilyet is találtam, EmBitz-hez Discovery modulra.
(#) ces98 hozzászólása Aug 2, 2018 /
 
Sziasztok!

Van egy Arduinos projektem AtMega2560-ra írva. Át szeretném rakni Blue Pill alapra (STM32F103C8T6) STM32duino-val. A problémám az, hogy figyelnem kell az hogy mikor fut ki az UART kimeneti bufferéből az összes adat. Ezt AtMega-nál így csináltam:

  1. if ((UCSR1A & (1 << TXC1))) { //tx buffer empty
  2. ...
  3. }

Az említett MCU-nál hogy tudom ezt figyelni?

Előre is köszönöm a válaszokat!
(#) vargham válasza ces98 hozzászólására (») Aug 2, 2018 /
 
Aszinkron módon: Figyeled az UART tx interruptot.
Pollozva: Ugyanúgy, mint AVR-en, figyelet az USART status registert.

STM32F103 reference manual 814. oldaltól
(#) ces98 válasza vargham hozzászólására (») Aug 2, 2018 /
 
Köszönöm a segítséget!
Ezek szerint, csak a TC bitet kell figyelnem, ha nem megszakítással operálok?
(#) vargham válasza ces98 hozzászólására (») Aug 3, 2018 /
 
Én HAL hívásokkal szoktam beállítani a megszakításkezelést, illetve lekérdezni a ready állapotot. Úgyhogy olvasd át alaposan a linkelt részét a dokumentációnak, és próbáld ki, hogy tényleg elég-e azt a bitet figyelni.
(#) rolandgw hozzászólása Aug 3, 2018 /
 
Üdv!
C nyelvi kérdésem lenne, valahol elkószál az órajel konfiguráció. Egy ROM API függvényt is hívok frekvencia beállításra. Jó ez a sor szemantikailag? Hibaüzenetet nem kapok.
  1. (*((void (*)(uint32_t freq))(0x0F0026F5U)))(freq);
(#) ces98 válasza vargham hozzászólására (») Aug 4, 2018 /
 
Még nem jöttem rá, hogy a USART_SR regiszter TC bitjét, hogyan érem el Arduinoból. Erre esetleg van ötlet?
(#) ces98 válasza ces98 hozzászólására (») Aug 4, 2018 /
 
Megtaláltam, működik! Köszönöm a segítséget még egyszer.

  1. #include <libmaple/usart.h>
  2. usart_reg_map *regs = USART1->regs;
  3. ...
  4. while ( !(regs->SR & USART_SR_TC) ); // Wait for Transmission Complete to set
  5. ...
(#) don_peter hozzászólása Aug 8, 2018 /
 
Srácok nincs valakinek elfekvőben egy "HY-STM32F2xxCore144 core board" teljes sematikus rajza?
Sehol nem lelem az interneten. Előre is köszi a segítséget.
(#) don_peter válasza don_peter hozzászólására (») Aug 8, 2018 /
 
Annyi még, hogy nem 32F2xx hanem 32Fxxx, az MCU ami rajta van az egy 32F103ZE.
(#) don_peter válasza don_peter hozzászólására (») Aug 8, 2018 /
 
Bővebben: Link
Közben megtaláltam.. Köszi..
Hátha még valaki keresné...
A hozzászólás módosítva: Aug 8, 2018
(#) Ivan93 hozzászólása Aug 11, 2018 /
 
Sziasztok!
Változók és függvények deklarálásával kapcsolatban kérdeznék. Eddigi AVR-es programjaimban a változókat és függvényeket mindig a main-ban hoztam létre, #include-al csak kész könyvtárakat hívtam meg néha. Most ARM-nél az eddigieknél nagyobb programot kell létrehoznom, így az átláthatóság miatt osztanám szét a dolgokat .h és .c fájlokra. TrueStudio-t használok CubeMX-el.
Első kérdésem a változókra vonatkozik. Ha egy változót interruptban is szeretnék használni, akkor nem elég a main-ben deklarálni extern-ként, de az interrupt fájlban is deklarálni kellett. Nem tudom ez szabályos-e egyáltalán? Ezt szeretném kiváltani. Az működne, hogy létrehozok egy változók.h fájlt, ott deklarálom a változóimat, majd ezt "meghívom" (#include) a main és interrupt fájlok elején is?
Másik kérdés a függvény deklaráció. Itt ha jól tudom, akkor egy .h fájlban létrehozom a függvényt, egy .c-ben megírom a teljes függvényt és meghívom benne a .h-t. Végül a main és interrupt fájlokban meghívom a függvény.h-t. Ezt így jól tudom?
Illetve a függvény.h és .c fájlokban meg kell hívni a változók.h-t?
Előre is köszönöm!
(#) kapu48 válasza Ivan93 hozzászólására (») Aug 11, 2018 /
 
Nagyjából működőképes az elképzelésed.
De a CubeMX elkészíti neked ha kéred a Header-eket, csak használnod kel.
Bővebben: Link 4. FEJEZET: Függvények és a program szerkezete
(#) Ivan93 válasza kapu48 hozzászólására (») Aug 11, 2018 /
 
CubeMX-ben hol lehet ilyet kérni? Próbáltam keresni interneten, de nem találtam róla semmit.
Köszönöm a könyvet!
(#) kapu48 válasza Ivan93 hozzászólására (») Aug 11, 2018 /
 
Menü: Poroject > Seting > Code Generator > Generated files > Generate …

A headerek megnyitása jobb gombal:

Bővebben: Link
A hozzászólás módosítva: Aug 11, 2018
(#) Ivan93 válasza kapu48 hozzászólására (») Aug 11, 2018 /
 
Kipróbáltam. Azt hittem, majd kapok pár "userFunction.h/.c" és hasonló fájlokat amiket kitölthetek, de így perifériánként hozott létre egy .h/.c párost. Végülis ez is valami, mert így nem a main-ben foglalják a helyet. Illetve ennek mintájára létrehozhatom a sajátjaimat is.
Köszönöm a segítséget!
(#) kapu48 válasza Ivan93 hozzászólására (») Aug 11, 2018 /
 
Ha a szabályokat betartod, jobban jársz!
A későbbi project bővítés esetén CubeMX meghagyja a saját fejlesztéseidet.
Ha a definiált USER CODE BEGIN … - USER CODE END … páros között szerkesztetted:
  1. /* USER CODE BEGIN PFP */
  2. /* Private function prototypes -----------------------------------------------*/
  3.  
  4. /* USER CODE END PFP */
  5.  
  6. /* USER CODE BEGIN 0 */
  7. // Ide jön a saját fejlesztésed!!!
  8.  
  9. /* USER CODE END 0 */
(#) Ivan93 válasza kapu48 hozzászólására (») Aug 11, 2018 /
 
Ezt már korábban tapasztaltam, hogy újrageneráláskor eltűntek a dolgaim, azóta figyelek a user code helyére.
Létrehoztam a saját .h és.c fájljaimat, ezeket nem bántja a CubeMX, működnek is amiket eddig bele írtam. Interruptot még nem próbáltam, de előtte elolvasom majd a könyv linkelt fejezetét.
(#) rascal válasza Ivan93 hozzászólására (») Aug 11, 2018 /
 
A mellékletbe raktam példát, hogy én hogyan csinálom (gondolom sokan mások is, de most hadd ne kutassak ). A lényeg, hogy nem csak a .h fájlok kapnak egy #define-t, amiből látszik, hogy már egyszer lefordult, hanem a .c-be is rakok egy rá jellemzőt, de azt csak arra az időre definiálom, amíg a hozzá tartozó .h fájl(oka)t include-olom. Így a .h file tudja, hogy extern-ként, vagy simán kell egy globálisan elérhető függvényt vagy változót definiálnia. Egy fájlba mind a két verzió belekerülhet, máshol meg nem kell nyilvántartani.
Ha van egy közös.h-d amiben #include hivatkozásokkal hivatkozol minden más .h-ra amiknél nem gond, hogy olyan helyen is látszanak a definícióik ahol azokra nincs szükség, akkor minden .c-ből csak a közös és saját.h-t kell csak #include-olni, nem egyedi listákat. Munkahelyen ezt nem biztos, hogy jó szemmel nézik, de otthon szerintem belefér.
(#) Ivan93 válasza rascal hozzászólására (») Aug 11, 2018 /
 
Köszi. Őszintén szólva nem teljesen értem, amit írtál. Ez persze nem a Te hibád, az én programozói tudásom elég hiányos. Régebben tanítottak programozni, az egy gyenge alapnak volt jó, azon felül minden tudásomat internet segítségével szedtem össze. Nem munkahelyre lesz, diplomamunkához kell. Általánosságban elboldogulok a programjaimmal, de sok alapvető dolog hiányzik.
Ha jól értem amit írtál, akkor minden .h file elejére kell egy ilyen:
  1. /* Define to prevent recursive inclusion -------------------------------------*/
  2. #ifndef __gpio_H
  3. #define __gpio_H
  4. #ifdef __cplusplus
  5.  extern "C" {
  6. #endif
a végére ezzel:
  1. #ifdef __cplusplus
  2. }
  3. #endif
Itt a __gpio_H biztosítja az egyszeri include-ot, jól gondolom? És az extern rész mire való?
Következő: »»   127 / 177
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem