Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => C/C++ => Konuyu başlatan: skara1214 - 25 Şubat 2017, 10:08:19

Başlık: STM32F103C8T6 CUBE MX VE KEIL5 DERS3 TEK KANAL ADC ve FLASHI EEPROM OLARAK KULL
Gönderen: skara1214 - 25 Şubat 2017, 10:08:19
3. ders hayırlı olsun
https://youtu.be/YZUs9sRoRTg

//////FLASH EEPROM PROGRALAMA /////
#define x_zorlama_sivi_seviye    epprom_sabitleri[0]
#define x_zorlama_pozisyon     epprom_sabitleri[1]
#define y_zorlama_sivi_seviye    epprom_sabitleri[2]
#define y_zorlama_pozisyon     epprom_sabitleri[3]
uint16_t epprom_sabitleri[500],i=0;
#define EEPROM_START_ADDRESS ((uint32_t)0x0801F800) //126. page

uint16_t Read_Flash(uint32_t  adr)
{
  uint16_t * Pntr = (uint16_t *)adr;
  return(*Pntr); 
}
///////////////// FLASH KILIDI AÇMA ALT PROGRAMI /////////////////////   
void Unlock_Flash (void)
{
  FLASH->KEYR=0x45670123;  //Flash kilidini açmak için FLASH->KEYR registerine KEY1 ve KEY2 sirayla yazilmalidir
  FLASH->KEYR=0xCDEF89AB;
}
///////////////// FLASH KILITLEME ALT PROGRAMI /////////////////////
void Lock_Flash (void)
{
  FLASH->CR=0x00000080;  //FLASH_CR registeri resetlendiginde FLASH kiltlenmis olur
}
//////////////// ISTENILEN ADRESTEKI VERIYI FLASHTAN SILME ALT PROGRAMI //////
void Erase_Flash (uint32_t adr)
{
  FLASH->CR|=0x00000002;            //PER enable
  FLASH->AR=adr;                    //FLASH->AR registerine silinmek istenen adres yazilir
  FLASH->CR|=0x00000040;            //STRT anable
  while((FLASH->SR&0x00000001));    //Islem bitene kadar bekle(BUSY kontrol ediliyor)
  FLASH->CR &= ~0x00000042;         //FLASH->CR ilk durumuna aliniyor (kilit hala açik!)
}
///////////////// ISTENILEN ADRESE VERI YAZMA ALT PROGRAMI /////////////////////
void Write_Flash (uint32_t adr, uint16_t data)
{
  FLASH->CR|=0x00000001;           //PG enable
  *(__IO uint16_t*)adr = data;     //istenen adrese istenen data yaziliyor
  while((FLASH->SR&0x00000001));   //Islem bitene kadar bekle(BUSY kontrol ediliyor)
}
void epprom_yaz()
{
    Unlock_Flash();
    Erase_Flash(EEPROM_START_ADDRESS);
    for(i=0;i<=499;i++)
    Write_Flash(EEPROM_START_ADDRESS+(uint32_t)(i*2),epprom_sabitleri[i]);
    Lock_Flash();
}

void eeprom_oku()
{
for(i=0;i<=499;i++)
epprom_sabitleri[i]= Read_Flash(EEPROM_START_ADDRESS+(i*2));
}



uint16_t sonuc_adc;
void ADC_CALIBRATION()

ADC1->CR2|=0x00000001;//adc yi  baslat
ADC1->CR2|=0x00000008;//adc reset calibration yap
while(ADC1->CR2&0x00000008);//reset calibration olana kadar bekle
ADC1->CR2|=0x00000004;//adc calibrationi baslat
while(ADC1->CR2&0x00000004);//adc calibre olana kadar bekle
ADC1->CR2|=0x00000001;//adc yi aktif et !!!burada bir daha start verilmesse dma aktif olmuyor!!
}
Başlık: Ynt: STM32F103C8T6 CUBE MX VE KEIL5 DERS3 TEK KANAL ADC ve FLASHI EEPROM OLARAK KULL
Gönderen: mr.selim - 25 Şubat 2017, 17:07:04
Hocam elinize sağlık. Videolarınızı takip edicem ama kime hitap ediyor? Bilene mi bilmeyene mi yoksa yeni öğrenenlere mi. Ben daha yeni stm e geçmeyi düşünüyorum da ne dersiniz bu konuda ?
Başlık: Ynt: STM32F103C8T6 CUBE MX VE KEIL5 DERS3 TEK KANAL ADC ve FLASHI EEPROM OLARAK KULL
Gönderen: skara1214 - 25 Şubat 2017, 18:36:14
hocam eğer hiç progralama yapmadıysanız videolarım size çok hitap etmez. Ama arduino ,pic v.s. ile uğraşıp , uart , adc ,spi ile ilgili bilginiz varsa ve arm kullanmak istiyorsanız o zaman faydası dokunur
Başlık: Ynt: STM32F103C8T6 CUBE MX VE KEIL5 DERS3 TEK KANAL ADC ve FLASHI EEPROM OLARAK KULL
Gönderen: mr.selim - 26 Şubat 2017, 01:07:39
anladım teşekkür ederim deneyelim o zaman :)
Başlık: Ynt: STM32F103C8T6 CUBE MX VE KEIL5 DERS3 TEK KANAL ADC ve FLASHI EEPROM OLARAK KULL
Gönderen: yldzelektronik - 26 Şubat 2017, 12:53:22
Emeğinize sağlık.

Bir sorum var.FLASH programlar iken bir word (32bit alana) alana yazmak istediğimde yalnızca o alanı silip tekrar yazmam yeterli midir?Yoksa o adresin bütün page ini silip tamamını tekrar yazmam mı gerekir?
Başlık: Ynt: STM32F103C8T6 CUBE MX VE KEIL5 DERS3 TEK KANAL ADC ve FLASHI EEPROM OLARAK KULL
Gönderen: skara1214 - 26 Şubat 2017, 14:39:44
Tüm page i silmek gerekli hocam