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!!
}
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 ?
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
anladım teşekkür ederim deneyelim o zaman :)
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?
Tüm page i silmek gerekli hocam