Fórum témák

» Több friss téma
Fórum » STM32 Discovery Kit programozása
Lapozás: OK   5 / 7
(#) simib hozzászólása Feb 18, 2015 /
 
Sziasztok!

STM32F401C-DISCO board-al kapcsolatban lenne egy kérdésem. A lapon ugye találhatóak periféria ic-k (gyorsulásérzékelő, kodek, stb.). Ezek az ic-k a mikrokontroller valamelyik lábán csücsülnek értelem szerűen. Olyan problémába futottam bele, hogy sajnos ezen perifériák miatt néhány kivezetett láb nem igazán használható más célra, mivel azokat az ic-k magas vagy alacsony szintre húznak.
Jelen esetben ezt például a kártya E 0,2,4 portjára és lábára vonatkozik, ahova az LSM303DLHC és az L3GD20 ic csatlakozik.
Valaki tud erről bővebb információt, megerősítést, esetleg megoldást adni?

Köszönöm!
(#) elektros90 hozzászólása Máj 12, 2015 /
 
Sziasztok!
Hozzájutottam egy STM32F429I Discovery boardhoz. Ezen próbálnák tanulgatni, de valahogy elindulni sem tudok. Néztem tutorialokat, meg videókat is, de mind más processzorhoz vannak. A fájlok is mások amik kellenek a Keil 5-nek, meg a Keil is más (HAL fájlokat rak be). Néztem a példákat is, de azokból nemlátom át miket kell includolni a mainban. A példákban nincs semmi, a videókban meg van. Esetleg ismertek valami jó tutorialt ehez?
(#) elektros90 válasza elektros90 hozzászólására (») Máj 12, 2015 /
 
Az az érdekes, hogy az examplera is hibát dob a fordító...
(#) kapu48 válasza elektros90 hozzászólására (») Máj 12, 2015 /
 
Nem tudom Te mivel próbálkozol?

De nekem uV4-en minden lefordul a gyári ajánlásból: STM32F429 discovery firmware package
Sample & Buy Download!

Megjegyzem ehhez már nem jó a Lite verzió, mert nagy a kód méret
(#) elektros90 válasza kapu48 hozzászólására (») Máj 12, 2015 /
 
Akkor az is lehet a gond...
De egyébként az volt a hiba, hogy egy cmcore4 fájlt nem talált. Vagy valami ilyesmit, már kiinstaláltam az 5ös Keil-t, most próbálom majd a 4est.
(#) vzoole válasza elektros90 hozzászólására (») Máj 12, 2015 /
 
Keil 5 pack intaller-ben letöltötted az STM32F4xx csomagot?
(#) elektros90 válasza vzoole hozzászólására (») Máj 12, 2015 /
 
Igen. Most a uV4-el lefut szépen. Csak hát a 32KB...
(#) vzoole válasza elektros90 hozzászólására (») Máj 12, 2015 /
 
32kB nagyon sok mindenre elég, még egy grafikus menüre is.
(#) kapu48 válasza elektros90 hozzászólására (») Máj 12, 2015 /
 
(#) elektros90 válasza kapu48 hozzászólására (») Máj 14, 2015 /
 
Köszi!
Azt szeretném kérdezni, hogy a regiszter tartalmakat, hogyan tudom megnézni?
Kinyitottam a system viewerben a kellő regisztert, de nem mutatja, hogy kipipálná.
(#) kapu48 válasza elektros90 hozzászólására (») Máj 14, 2015 /
 
Ebből a képből semmi nem derül ki!

Tanulmányoztad?
4. oldaltól: ST-LINK ...
(#) kapu48 válasza elektros90 hozzászólására (») Máj 14, 2015 /
 
Elindítod a debugert > View fül > registers Window > Core le nyit, dupla klik a regiszter értékekre és akár módosíthatod is debug közben.
(#) elektros90 válasza kapu48 hozzászólására (») Máj 14, 2015 /
 
Már megvan. De az csak HW debug esetén működik? Szimulátor módban nem megy?
(#) kapu48 válasza elektros90 hozzászólására (») Máj 15, 2015 /
 
Nem tudom, én még nem próbáltam!

Azt írtad van HW-d. Mit akarsz szimulálni?
Esetleg MCU-t lehet? A köré épített HW-t már biztosan nem!

Debugoljál! Biztosabb és gyorsabb is, mint a szimulálás!
(#) elektros90 válasza kapu48 hozzászólására (») Máj 15, 2015 /
 
Szia! Van boardom. Csak hát én megírok egy sor kódot és debuggolnám is (tanulási fázis). Na most ha csak mindennap 10 alkalommal fogom írni a flasht, egy idő után beadja az unalmast, ezért az alapokat szimulátorban nézném meg. Ha abban azt csinálja amit akarok, akkor mehet HW-re. Most csak az egyszerű regiszteres programozásnál tartok. (Nem vagyok gyakorlott programozó. Amit tudtam elfelejtettem.) Tegnap megcsináltam önálló villogtató programom. Ma tovább lépek. uVisionben ADSP processzort programoztunk, FIR, IIR, FFT meg hasonló dolgokat, azokkal működött jól a szim. is. Aztán tettük HW-ra (az volt a vizsga). Elötte meg 8051eseket.
(#) icserny válasza elektros90 hozzászólására (») Máj 15, 2015 / 1
 
Idézet:
„Na most ha csak mindennap 10 alkalommal fogom írni a flasht, egy idő után beadja az unalmast...”
Ehhez azért évek kellenének... Egyébként sem fogod minden nap 10-szer átprogramozni (legfeljebb az elején), mert programozás közben néha gondolkodni is kell, ráadásul az adatlapot is tanulmányozni kell, s elmegy vele az idő.
(#) elektros90 válasza icserny hozzászólására (») Máj 15, 2015 /
 
Ez így igaz. Tegnap, ahogy írtam a villogót a datasheetből ill. a példaprogramból indultam ki. Főleg a DS ből, de kellett idő mire felfogtam, hogy miért 3UL << (2 * 13) van a programban. Végül magamtól rájöttem, így már értem. Kicsit más, mint a 8bitesek, de tetszik.
(#) mdemcsik válasza Suncorgo hozzászólására (») Máj 31, 2015 /
 
szia, kijött a protectedből? nem halt az meg, nekem is csinált ilyet, de Keil alól meggyógyult.
(#) elektros90 hozzászólása Jún 10, 2015 /
 
Sziasztok!
Adjatok légyszi ötleteket, egyszerű feladatokat, amit eltudok végezni egy magányos boardon. Sajnos jelenleg nincs semmim amivel kiegészíthetném, csak a board és usb kábel. De tanulhatnékom van
(#) elektros90 válasza elektros90 hozzászólására (») Jún 12, 2015 /
 
Sziasztok!
Van kérdésem.
  1. void LED1_Init()
  2. {
  3.         GPIO_InitTypeDef GPIO_InitStructure;
  4.         GPIO_InitStructure.GPIO_Pin = LED1_Pin;
  5.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  6.         GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  7.         GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  8.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  9.         GPIO_Init(GPIOG, &GPIO_InitStructure);
  10. }
  11.  
  12. void LED2_Init()
  13. {
  14.         GPIO_InitTypeDef GPIO_InitStructure;
  15.         GPIO_InitStructure.GPIO_Pin = LED2_Pin;
  16.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  17.         GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  18.         GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  19.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  20.         GPIO_Init(GPIOG, &GPIO_InitStructure);
  21. }


A 2 port inicializálását nemlehet elvégezni egyszerre?
(#) kapu48 válasza elektros90 hozzászólására (») Jún 12, 2015 /
 
Valahogy igy:
  1. /* GPIOD Periph clock enable */
  2.   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
  3.  
  4.   /* Configure PD12, PD13, PD14 and PD15 in output pushpull mode */
  5.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15;
  6.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  7.   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  8.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  9.   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  10.   GPIO_Init(GPIOD, &GPIO_InitStructure);


Ja, és mi a board pontos tipusa?
És az IDE amit használsz?
A hozzászólás módosítva: Jún 12, 2015
(#) elektros90 válasza kapu48 hozzászólására (») Jún 12, 2015 /
 
Köszönöm szépen!
Mi a különbség a GPIO_SetBits() és a GPIO_WriteBit() között azonkívül, hogy a másodikkal resetelni is lehet?
(#) kapu48 válasza elektros90 hozzászólására (») Jún 12, 2015 /
 
Szerintem ott van a magyarázat a forráskódban:
  1. /**
  2.   * @brief  Sets the selected data port bits.
  3.   * @note   This functions uses GPIOx_BSRR register to allow atomic read/modify
  4.   *         accesses. In this way, there is no risk of an IRQ occurring between
  5.   *         the read and the modify access.
  6.   * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  7.   * @param  GPIO_Pin: specifies the port bits to be written.
  8.   *          This parameter can be any combination of GPIO_Pin_x where x can be (0..15).
  9.   * @retval None
  10.   */
  11. void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
  12. {
  13.   /* Check the parameters */
  14.   assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  15.   assert_param(IS_GPIO_PIN(GPIO_Pin));
  16.  
  17.   GPIOx->BSRRL = GPIO_Pin;
  18. }
  19.  
  20. /**
  21.   * @brief  Clears the selected data port bits.
  22.   * @note   This functions uses GPIOx_BSRR register to allow atomic read/modify
  23.   *         accesses. In this way, there is no risk of an IRQ occurring between
  24.   *         the read and the modify access.
  25.   * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  26.   * @param  GPIO_Pin: specifies the port bits to be written.
  27.   *          This parameter can be any combination of GPIO_Pin_x where x can be (0..15).
  28.   * @retval None
  29.   */
  30. void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
  31. {
  32.   /* Check the parameters */
  33.   assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  34.   assert_param(IS_GPIO_PIN(GPIO_Pin));
  35.  
  36.   GPIOx->BSRRH = GPIO_Pin;
  37. }
  38.  
  39. /**
  40.   * @brief  Sets or clears the selected data port bit.
  41.   * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  42.   * @param  GPIO_Pin: specifies the port bit to be written.
  43.   *          This parameter can be one of GPIO_Pin_x where x can be (0..15).
  44.   * @param  BitVal: specifies the value to be written to the selected bit.
  45.   *          This parameter can be one of the BitAction enum values:
  46.   *            @arg Bit_RESET: to clear the port pin
  47.   *            @arg Bit_SET: to set the port pin
  48.   * @retval None
  49.   */
  50. void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal)
  51. {
  52.   /* Check the parameters */
  53.   assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  54.   assert_param(IS_GET_GPIO_PIN(GPIO_Pin));
  55.   assert_param(IS_GPIO_BIT_ACTION(BitVal));
  56.  
  57.   if (BitVal != Bit_RESET)
  58.   {
  59.     GPIOx->BSRRL = GPIO_Pin;
  60.   }
  61.   else
  62.   {
  63.     GPIOx->BSRRH = GPIO_Pin ;
  64.   }
  65. }
  66.  
  67. /**
  68.   * @brief  Writes data to the specified GPIO data port.
  69.   * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  70.   * @param  PortVal: specifies the value to be written to the port output data register.
  71.   * @retval None
  72.   */
  73. void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal)
  74. {
  75.   /* Check the parameters */
  76.   assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  77.  
  78.   GPIOx->ODR = PortVal;
  79. }
  80.  
  81. /**
  82.   * @brief  Toggles the specified GPIO pins..
  83.   * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  84.   * @param  GPIO_Pin: Specifies the pins to be toggled.
  85.   * @retval None
  86.   */
  87. void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
  88. {
  89.   /* Check the parameters */
  90.   assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  91.  
  92.   GPIOx->ODR ^= GPIO_Pin;
  93. }
(#) kapu48 válasza elektros90 hozzászólására (») Jún 12, 2015 /
 
Találtam neked játékszert!:
STM32CubeF4 demonstration platform

STM32CubeF4

Szerintem:
(#) elektros90 válasza kapu48 hozzászólására (») Jún 13, 2015 /
 
Szia.
Nem igazán esett le tegnap, hogy mire is gondoltál. Valóban írja ott, hogy a SetBits alacsony szinten fér hozzá és nincs kockázat, hogy megszakítás lépne fel az olvasás/módosítás között. De nem esett le miért, hisz a másik is ugyanilyen, csak if ben vizsgálja mit kell csinálnia. (Ezáltal akkor lassabb) Közben bármi megtörténhet.

Még tegnap letöltöttem ezeket, érdekes. Majd eljátszadozok vele.
Úgy érzem nagy fába vágtam a fejszém. A reference manualban sem igazán igazodok még el, de tegnap sikerült még egy EXTI-s LED kapcsolgatást megcsinálnom. Akartam ADC vel a hőmérsékletet kiolvasni, de már az elején lefagytam.
(#) Suncorgo hozzászólása Feb 5, 2016 /
 
Sziasztok!

A téma igaz nem konkrétan idevág, de ST mikrovezérlőről van szó.

Egy STM32F103-ason nem tudom GPIO módba használni PB3-at és PB4-et. Ezek alapból ha jól tudom JTAG lábak. Ezeket ki lehet úgy kapcsolni, vagy remappolni a kivezetéseket, hogy az SWD megmaradjon?

Üdv: Suncorgo
(#) cimopata hozzászólása Feb 11, 2016 /
 
Halihó.

Szeretnék segítséget kérni tanulgatom az SMT32 procik programozását.
Vettem is egy F030-as nucleot nagyon jó kis cuccnak tűnik.

Jelenleg ott tartok, hogy ADC-t szeretnék beolvasni. 3 mód létezik ugye:
-polling, interrupttal és DMA-val. Nekem most a polling jó is lenne viszont nem igazán világos, hogy hogyan alakul a kód. STM Cube-al szépen konfiguráltam is mindent de elakadtam.

ebben a videóban a következők szerint csinálja:
  1. HAL_ADC_Start(&hadc1);
  2.                 HAL_ADC_PollForConversion(&hadc1,100);
  3.                 adcvalue = HAL_ADC_GetValue(&hadc1);
  4.                 HAL_ADC_Stop(&hadc1);


Kérdéseim:
-Nekem 2db bemenetem lenne, hol tudom beállítani hogy most az IN1-ről mintavételezzen vagy az IN2-ről?
-A videóban a srác F4-es procit használ aminek 3 ADC-je van. Nekem F0-van 1db ADC-vel akkor én &hadc tagot használjak? Az & jel itt mit jelent?
- A 100 timeout érték mit jelent?

Hirtelen ennyi lenne. Köszi a segítséget.
A hozzászólás módosítva: Feb 11, 2016
(#) vzoole válasza cimopata hozzászólására (») Feb 12, 2016 /
 
  1. void init_adc(void)
  2. {
  3. //Port Enable
  4.   RCC->AHBENR   |= (1<<17);    //Enable PortA
  5.   RCC->APB2ENR  |= (1<<9);     //Enable ADC periphery
  6.  
  7.   gpio_mode(GPIOA, 0, ANALOG); //GPIO A-0: ADC
  8.   gpio_mode(GPIOA, 1, ANALOG); //GPIO A-1: ADC
  9.   gpio_mode(GPIOA, 2, ANALOG); //GPIO A-2: ADC
  10.  
  11.   ADC1->CR      |= (1<<0);     //Enable ADC1
  12.   ADC1->CFGR2   |= (2UL<<30);  //PCLK/4
  13. }
  14.  
  15. uint16_t read_adc(uint8_t adc_channel)
  16. {
  17.   ADC1->CHSELR  = (1<<adc_channel);     //ADC channel
  18.  
  19.   ADC1->CR  |= (1<<2);    //Start conversion
  20.   while( !(ADC1->ISR & (1<<2)) );
  21.   return ADC1->DR;
  22. }
A hozzászólás módosítva: Feb 12, 2016
(#) cimopata válasza vzoole hozzászólására (») Feb 12, 2016 /
 
Köszi.
Ez jó tömör lett át fogom nézni mert hasznos ha csak 1-2 betűvel el van intézve az egész.

Közben sikerült megoldanom találtam egy referencia programot ehhez és az alapján ez jött ki:
  1. while (1)
  2.   {
  3.  
  4.                 uint16_t cucc= 0;
  5.                         sConfig.Channel = ADC_CHANNEL_0;
  6.                                         HAL_ADC_ConfigChannel(&hadc, &sConfig);
  7.                                         HAL_ADC_Start(&hadc);
  8.                                         HAL_ADC_PollForConversion(&hadc,1);
  9.                                         cucc = HAL_ADC_GetValue(&hadc);
  10.                                         HAL_ADC_Stop(&hadc);
  11.                 cucc= cucc/4;


Amit viszont nem értek, hogy a cuccot szépen 4 el leosztva kiírom egy 7 szegmenses kijelzőre mutatja is jól de ha stm studióban ránézek a regiszterre akkor ezt látom:

És ez már máskor is előfordult hogy akartam nézni egy számláló értékét értékét pl hol tart és lehetetlen adatokat írt ki közben valójában 1-től számolt szépen felfelé. Valami rosszul van beállítva az SMT studióban?
A hozzászólás módosítva: Feb 12, 2016
(#) vzoole válasza cimopata hozzászólására (») Feb 12, 2016 /
 
Gyanús a memória címe. Az SRAM 0x20000000-nál kezdődik.
Következő: »»   5 / 7
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