STM32F407 Cortex M4 şamataları

Başlatan bunalmis, 16 Ekim 2011, 17:14:50

muhittin_kaplan

#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address               */

bu nasıl bir tanımlamadır UL neki ?
Bu arada hocam hala stytem tick adresinin ne olduğunu

fryrmnd

hocam o "unsigned long" olmasın?

mozkan87

Alıntı yapılan: fryrmnd - 01 Ocak 2012, 21:01:13
hocam o "unsigned long" olmasın?
Aynen öyle. Derleyici optimizasyon ile tanımlanan değeri silip atmasın diye, daha doğrusu bize o değer int olarak lazım olduğu halde derleyici bunu char yada daha düşük boyutlu bir değere çevirmemesi için UL ekleniyor. Aynı şekillde ULL Unsigned Long Long içinde kullanım var.

muhittin_kaplan

Core_Cm4.h dosyasının içerisinde geçiyor bunlar. Ssytem tick (st nin verdiği sample) incelerken neredeyse tümünü CMSIS ile yaptıklarını gördüm. karmaşık geldi.

muhittin_kaplan

/** \ingroup  CMSIS_core_register
    \defgroup CMSIS_SysTick CMSIS SysTick
  Type definitions for the Cortex-M System Timer Registers
  @{
 */

/** \brief  Structure type to access the System Timer (SysTick).
 */
typedef struct
{
  __IO uint32_t CTRL;                    /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */
  __IO uint32_t LOAD;                    /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register       */
  __IO uint32_t VAL;                     /*!< Offset: 0x008 (R/W)  SysTick Current Value Register      */
  __I  uint32_t CALIB;                   /*!< Offset: 0x00C (R/ )  SysTick Calibration Register        */
} SysTick_Type;

/* SysTick Control / Status Register Definitions */
#define SysTick_CTRL_COUNTFLAG_Pos         16                                             /*!< SysTick CTRL: COUNTFLAG Position */
#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */

#define SysTick_CTRL_CLKSOURCE_Pos          2                                             /*!< SysTick CTRL: CLKSOURCE Position */
#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */

#define SysTick_CTRL_TICKINT_Pos            1                                             /*!< SysTick CTRL: TICKINT Position */
#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */

#define SysTick_CTRL_ENABLE_Pos             0                                             /*!< SysTick CTRL: ENABLE Position */
#define SysTick_CTRL_ENABLE_Msk            (1UL << SysTick_CTRL_ENABLE_Pos)               /*!< SysTick CTRL: ENABLE Mask */

/* SysTick Reload Register Definitions */
#define SysTick_LOAD_RELOAD_Pos             0                                             /*!< SysTick LOAD: RELOAD Position */
#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos)        /*!< SysTick LOAD: RELOAD Mask */

/* SysTick Current Register Definitions */
#define SysTick_VAL_CURRENT_Pos             0                                             /*!< SysTick VAL: CURRENT Position */
#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos)        /*!< SysTick VAL: CURRENT Mask */

/* SysTick Calibration Register Definitions */
#define SysTick_CALIB_NOREF_Pos            31                                             /*!< SysTick CALIB: NOREF Position */
#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */

#define SysTick_CALIB_SKEW_Pos             30                                             /*!< SysTick CALIB: SKEW Position */
#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */

#define SysTick_CALIB_TENMS_Pos             0                                             /*!< SysTick CALIB: TENMS Position */
#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos)        /*!< SysTick CALIB: TENMS Mask */

/*@} end of group CMSIS_SysTick */


fryrmnd

10 dakikayı geçti bakınıyorum ama bunalmış hocamın 32 bit hesaplayıcı hangi başlıktaydı bulamadım. bilen varsa bir zahmet linki verebilir mi?

muhittin_kaplan

calc.exe yi bende aradım bulamadım.


fryrmnd

hocam teşekkür ederim . masaüstünü toplarken kaybetmişim. bakınıp duruyom yok. görmeyince görmüyor ya. 

muhittin_kaplan


zakbay

#641
Evet forumda aradım bende bulamadım google yine buldu alternatif link aşağıda :)

www.cncdesigner.com/STM/Calc.rar

----------------------------------------------------------------------------------
Arkadaşlar
Keil in 4.21 versiyonunda STM32F407VG bulamadım bu ilaçlı olandı  yenilerin ilaçlı olanı var mı?
Tek dostum çalışmak...

Klein

Nihayet biraz boş zaman buldum. Karta örnek program yüklemek istedim. @bunalmıs hocamın son eklediği accelerometer kullanan örneği aldım.
@ bunalmıs Programın aşağıdaki bölümünde dikkatsizlik kaynaklı bir hata var sanırım.

void Write(char Adr,unsigned char Data)
{
      GPIOE->BSRRH=0x0008;            // LIS302DL CS=0
      SPI1->DR=((Adr&0x3F)<<|Data;
      while(!(SPI1->SR&2));
      GPIOE->BSRRL=0x0008;            // LIS302DL CS=1
}   


Şu şekilde düzelttim.  Derleme hatası almadım ama program çalışmadı.
SPI1->DR registerinin 16 bit olduğunu varsayarak bu değişikliği yaptım.
Datasheet i incelemedim. 

void Write(char Adr,unsigned char Data)
{
      GPIOE->BSRRH=0x0008;            // LIS302DL CS=0
      SPI1->DR=((Adr&0x3F)<<8)|Data;
      while(!(SPI1->SR&2));
      GPIOE->BSRRL=0x0008;            // LIS302DL CS=1
}   



SERRO EFE

zakbay cortexm4 sayfalarının (hangisi olduğnu hatırlamıyorum) birinde winamp adında bi ilaç var versiyon 4 . 2 2 için kullandım problem yok aratabilirsin. 

Klein