ST nin Firmware kutuphanesi ve FSMC pinleri kullanılarak 3.2 TFT Lcd resim basma ornegi resimleri.
(http://d1207.hizliresim.com/z/p/9xt9k.jpg) (http://bit.ly/c25MCx)
(http://b1207.hizliresim.com/z/p/9xtck.jpg) (http://bit.ly/c25MCx)
/**
******************************************************************************
* @file main.c / Ekrana Resim Basma.
* @author M_B
* @version V1.0.0
* @date 21-Tem-2012
* @brief Sorunsuz calisiyor
******************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
* TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
* DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
* FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
* CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*
* <h2><center>© COPYRIGHT 2011 STMicroelectronics</center></h2>
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#define MESSAGE1 " M_B 2012 "
#define MESSAGE2 " STM32F4 Discovery "
#define MESSAGE3 " [url=https://www.picproje.org]www.picproje.org[/url] "
GPIO_InitTypeDef GPIO_InitStructure;
static __IO uint32_t TimingDelay;
extern u8 gImage_01[];
/**
* @brief Main program.
* @param None
* @retval None
*/
int main (void)
{
STM_EVAL_LEDInit(LED4);
STM_EVAL_LEDInit(LED3);
if (SysTick_Config(SystemCoreClock / 1000))
{
/* Capture error */
while (1);
}
STM322xG_LCD_Init();
LCD_Clear(LCD_COLOR_BLACK);
LCD_SetTextColor(LCD_COLOR_GREEN);
LCD_SetBackColor(LCD_COLOR_BLACK);
LCD_SetFont(&LCD_DEFAULT_FONT);
LCD_DisplayStringLine(LINE(1), (uint8_t *)MESSAGE1);
LCD_DisplayStringLine(LINE(2), (uint8_t *)MESSAGE2);
LCD_DisplayStringLine(LINE(15), (uint8_t *)MESSAGE3);
Delay(2000); Delay(2000); Delay(2000);
LCD_Clear(LCD_COLOR_BLACK);
LCD_WriteBMP2(239, 319, 240, 320,gImage_01); // Resim
while(1)
{
}
}
/**
* @brief Inserts a delay time.
* @param nTime: specifies the delay time length, in milliseconds.
* @retval None
*/
void Delay(__IO uint32_t nTime)
{
TimingDelay = nTime;
while(TimingDelay != 0);
}
/**
* @brief Decrements the TimingDelay variable.
* @param None
* @retval None
*/
void TimingDelay_Decrement(void)
{
if (TimingDelay != 0x00)
{
TimingDelay--;
}
}
#ifdef USE_FULL_ASSERT
/**
* @brief Reports the name of the source file and the source line number
* where the assert_param error has occurred.
* @param file: pointer to the source file name
* @param line: assert_param error line source number
* @retval None
*/
void assert_failed(uint8_t* file, uint32_t line)
{
/* User can add his own implementation to report the file name and line number,
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
/* Infinite loop */
while (1)
{
}
}
#endif
/**
* @}
*/
/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/
Ellerinize sağlık Hocam.
Bir sorum olacaktı...TFT ekranı nereden alabiliriz Hocam. Bu örnekte kullanmış olduğunuz Ekranı .
Hocam TFT ekranı ebaydan STM32F107 geliştirme kiti ile beraber aldım.
Alıntı yapılan: M_B - 21 Temmuz 2012, 19:53:31
Hocam TFT ekranı ebaydan STM32F107 geliştirme kiti ile beraber aldım.
Anladım Hocam. Bende kit ile beraber alacaktım . Ekran olduğundan oldukça ucuza gelecek gibi :)
Teşekkür ederim...
Güzel çalışma,
TFT'nin özellikleri ve driver'ı nedir ?
Ekran tarama süresini belirleyebildiniz mi ?
Alıntı yapılan: camby - 21 Temmuz 2012, 20:33:46
Güzel çalışma,
TFT'nin özellikleri ve driver'ı nedir ?
Ekran tarama süresini belirleyebildiniz mi ?
SSD1289 chip setli. HY32D olarak nette bulabilirsiniz.
Ekranı FSMC pin yapısıyla suruyoruz. Oldukca hızlı Ekrana peşi peş sıra resim basınca da duraksama gibi olaylar olmuyor.
http://www.ebay.com/itm/3-2inch-320x240-Touch-LCD-A-Screen-Touch-SPI-ADS7843-LCD-SSD1289-TFT-LED-320-240-/250906574590 (http://www.ebay.com/itm/3-2inch-320x240-Touch-LCD-A-Screen-Touch-SPI-ADS7843-LCD-SSD1289-TFT-LED-320-240-/250906574590)
buysa alalım birtane
Alıntı yapılan: M_B - 22 Temmuz 2012, 03:27:38
SSD1289 chip setli. HY32D olarak nette bulabilirsiniz.
Ekranı FSMC pin yapısıyla suruyoruz. Oldukca hızlı Ekrana peşi peş sıra resim basınca da duraksama gibi olaylar olmuyor.
Sormak istediğim aslında : ilk pikseli koyduğunuz an ile son pikseli tamamladığınız an arasındaki süre. Başka bir deyişle resmin açılma süresi ?
Ardından aradığım soru ise : F4 ile tüm ekranı tek renk diyelim ( kırmızı ) yapmak istediğimizde bu işlem ne kadar sürede tamamlanır.
Bunun teorik hesabını ve pratikte ulaşabildiğimiz değeri ( C ve ASM ile ) bulmaya çalışıyorum.
Örneğin SS1963 ile 120 MHz'e kadar clock ile data yollayabiliyoruz. F4'ün GPIO hattı bile ancak max 50MHz. Bu durumda TFT'yi F4 ile bile tam hızda kullanamadığımızı görüyorum.
Yukarıdaki örnekte de durum benzer midir ?
Alıntı yapılan: camby - 22 Temmuz 2012, 11:38:32
Sormak istediğim aslında : ilk pikseli koyduğunuz an ile son pikseli tamamladığınız an arasındaki süre. Başka bir deyişle resmin açılma süresi ?
Ardından aradığım soru ise : F4 ile tüm ekranı tek renk diyelim ( kırmızı ) yapmak istediğimizde bu işlem ne kadar sürede tamamlanır.
Bunun teorik hesabını ve pratikte ulaşabildiğimiz değeri ( C ve ASM ile ) bulmaya çalışıyorum.
Örneğin SS1963 ile 120 MHz'e kadar clock ile data yollayabiliyoruz. F4'ün GPIO hattı bile ancak max 50MHz. Bu durumda TFT'yi F4 ile bile tam hızda kullanamadığımızı görüyorum.
Yukarıdaki örnekte de durum benzer midir ?
Hocam yukardaki sorularını hiç araştırmadım gerek te duymadım.
Örnek olması acısından iki video var.
Usteki bana ait ( Kosan at ;) )
Video0026.3gp (http://www.youtube.com/watch?v=2juxndjfgco#)
QuickTime Movie on STM32F4-Discovery (http://www.youtube.com/watch?v=mI7VTjuPx_s#)
GPIO hızları 150MHz'e kadar destek vermekte
(http://i.imgur.com/hn0L2.png)
50 MHz ile başka bir model ile karıştırdım heralde.
M_B
Alıntı yapılan: M_B - 22 Temmuz 2012, 03:27:38
Oldukca hızlı Ekrana peşi peş sıra resim basınca da duraksama gibi olaylar olmuyor.
Bu şekilde bir videonuz var mı ? 320 x 240 pix
Alıntı yapılan: camby - 22 Temmuz 2012, 14:37:22
50 MHz ile başka bir model ile karıştırdım heralde.
M_B
Bu şekilde bir videonuz var mı ? 320 x 240 pix
Şu anda yok ama yapmayı dusunuyorum.
SD kart olayını hallettıkten sonra.
Alıntı yapılan: ErsinErce - 22 Temmuz 2012, 12:41:50
GPIO hızları 150MHz'e kadar destek vermekte
(http://i.imgur.com/hn0L2.png)
Datasheet'te Features bölümünde :
Alıntı YapUp to 136 fast I/Os up to 84 MHz
yazıyor.
Gösterdiğiniz blok diyagramda ise : GPIO'ya giden AHB1 veri yolu 168 MHz .
Ayrıca :
Alıntı Yap2.2.33 General-purpose input/outputs (GPIOs)
... Fast I/O handling allowing maximum I/O toggling up to 84 MHz....
150 MHz nerede belirtilmiş ?
(http://i.imgur.com/U7Vzw.png)
rev1 datasheet'te 150 yazan yer rev3 de 168 olarak değiştirilmiş
ve yine rev1 de 2.2.33 bölümü bulunmadığından direk erişim yapıldığı varsayılarak söylenmiş bir varsayımdı :)
ama hâla datasheet'te TBD (to be defined) kısımlarının doldurulmasını dört gözle bekliyorum
electrical characteristic kısmında şüpheli şeyler bulunuyor,
ayrıca reference manual'de FSMC modülünün asenkron çalışan açıklamalarında HCLK ile aynı zamanlamada giden kısımlarda mevcut
Alıntı yapılan: muhittin_kaplan - 22 Temmuz 2012, 04:18:41
http://www.ebay.com/itm/3-2inch-320x240-Touch-LCD-A-Screen-Touch-SPI-ADS7843-LCD-SSD1289-TFT-LED-320-240-/250906574590 (http://www.ebay.com/itm/3-2inch-320x240-Touch-LCD-A-Screen-Touch-SPI-ADS7843-LCD-SSD1289-TFT-LED-320-240-/250906574590)
buysa alalım birtane
evet bu )
XX_CIHAN_XX hocam;
Benim TFT Lcd Ekranım linkteki kit üzerindeki.
Tek TFT Ekran almak yerine Kitle beraber sipariş etmiştim.
http://www.ebay.com/itm/Development-Board-STM32F107VCT6-3-2-TFT-2-4G-wireles-/220925505288?pt=LH_DefaultDomain_0&hash=item33702faf08 (http://www.ebay.com/itm/Development-Board-STM32F107VCT6-3-2-TFT-2-4G-wireles-/220925505288?pt=LH_DefaultDomain_0&hash=item33702faf08)
Evet hocam çalışma yapacaklar için kitle birlikte almak daha hesaplı oluyor.
Ama benim gibi STM32F4 discovery yada benzer kitleri olanlar için yeniden kit almaya gerek yok bence.
Direk lcd siparişi de verilebilir.
Bu linkteki lcd benimkinin aynısı ve SSD1289 çipli. Sizin lcd de çalışan kodlar benimkinde de çalışıyor.
http://www.ebay.com/itm/3-2inch-320x240-Touch-LCD-A-Screen-Touch-SPI-ADS7843-LCD-SSD1289-TFT-LED-320-240-/250906574590 (http://www.ebay.com/itm/3-2inch-320x240-Touch-LCD-A-Screen-Touch-SPI-ADS7843-LCD-SSD1289-TFT-LED-320-240-/250906574590)
chip seti aynı hatta touch entegreside Benimki ADS7843 XPT2046 ile uyumluymuş.
Arti benim ekranın alt kısmında SD kart yuvası da var. Bence guzel bir özellik.
Touch ile ilgili ters yazma işine bakabildiniz mi ?
Şuanda ona bakıyorum hocam sizdeki touch kütüphanesini de denemek isterim
Alıntı yapılan: XX_CİHAN_XX - 22 Temmuz 2012, 18:59:03
Şuanda ona bakıyorum hocam sizdeki touch kütüphanesini de denemek isterim
http://www.dosya.tc/server19/xsfZHt/touch.rar.html (http://www.dosya.tc/server19/xsfZHt/touch.rar.html)
Bu kütüphane "stm322xg_eval_lcd.h" dosyasını istiyor
doğrudur hocam Ben TFT ekranım icin o driveri kullanıyorum. (stm322xg_eval_lcd.h)
isterseniz o dosyaları da vereyim veya kendi driverinıza gore yeniden duzenleyin.
Ben bi düzenleme yapayım o zaman hocam bir sıkıntı olursa tekrar haberleşiriz.
mesaj birleştirme:: 22 Temmuz 2012, 19:56:05
@M_B hocam,
TPReadX fonksiyonundaki
x=2047-x;
Satırını silince sorunum kalmadı neden böyle bir satır eklemişler anlamadım ama şuan güzel çalışıyor :)
@XX_CİHAN_XX
touch la oynamana gerek yok.
ayrıca touch kütüphanesini incelersen kalibrasyon için fonksiyon var. ama daha bunu kullanmadım. ayrıntılı açıklamayı tam olarak fonksiyonu çalıştırınca yapacağım.
böyle bir board mu alayım (link veriniz) yoksa lcd mi alayım sadece (link veriniz)
mesajımda düğün davetiyesi gibi, LCV gibi oldu
Discovery Kit alımındaki gibi bir organizasyon yapılsa LCD modül alacak olanlar için
toplu alımda uygun olabilir diye düşünüyorum
ne düşünüyorsunuz?
@Muhittin . bildiğim kadarıyla sende kit vardı. 2. bir kite negerek var. ebay yada aliexpres de 17-18 USD ye lcdler var.
mesaj birleştirme:: 23 Temmuz 2012, 17:20:07
işte link.
http://www.ebay.com/itm/New-High-Quality-3-2-TFT-LCD-Module-Touch-Panel-Screen-PCB-Adapter-/270955305881?pt=LH_DefaultDomain_0&hash=item3f1631db99 (http://www.ebay.com/itm/New-High-Quality-3-2-TFT-LCD-Module-Touch-Panel-Screen-PCB-Adapter-/270955305881?pt=LH_DefaultDomain_0&hash=item3f1631db99)
fiyat 15.46 usd.
Alıntı yapılan: evreno - 23 Temmuz 2012, 15:41:53
Discovery Kit alımındaki gibi bir organizasyon yapılsa LCD modül alacak olanlar için
toplu alımda uygun olabilir diye düşünüyorum
ne düşünüyorsunuz?
Aynen katılıyorum.
f4lerin altına yapılmış hazır bir kit vardı. LCD internet kamera bir tomar fonksiyon vardı. onun toplu alımı yapılabilir ama gümrük vs. kim uğraşacak?
diskovery kitlerde sonuçta dışardan geldi
konuda deneyimli arkadaşlar daha sağlıklı bilgi verebilir belki
Alıntı yapılan: evreno - 24 Temmuz 2012, 11:50:21
diskovery kitlerde sonuçta dışardan geldi
konuda deneyimli arkadaşlar daha sağlıklı bilgi verebilir belki
Yurt içinde var.
http://www.cizgi-tagem.org/e-market/product.aspx?id=634 (http://www.cizgi-tagem.org/e-market/product.aspx?id=634)
Alıntı yapılan: XX_CİHAN_XX - 24 Temmuz 2012, 13:51:23
Yurt içinde var.
http://www.cizgi-tagem.org/e-market/product.aspx?id=634 (http://www.cizgi-tagem.org/e-market/product.aspx?id=634)
Sanırım yanlış anladınız, alım önerisi stm32 kartı için değil, stm32 de kullanılacak bir TFT dokunmatik ekran için. Kartımız var ama ekran yok,
Sanki monitörsüz pc kullanıyoruz :)
Yok hocam siz yanlış anladınız ben ekran için değil alıntı yaptığım kişiye cevaben yazmıştım kit olayını. :)
dışardan geldi derken türkiyede satışını yapan bir firma getirtmişti ve bizde onlardan topluca almıştık
saolsunlar çok da yardımcı olmuşlardı ve uygun fiyata.
yine öyle bir organizasyon olabilir belki diye fikir sundum
yoksa e-bay dan isteyen alır
türkiyeden tek kalem olarak almak isteyince genelde fahiş fiyatlarla satılmaya çalışılıyor
ya toplu alım yapacaksın yada ebay dan alacaksın
bu çinliler aza tamah eden insanlar biz türkler gibi aç gözlü değiller :)
Aynı ilde birbirlerine yakın oturanlar ebaydan beraber alabilirler. Ama il dışı olunca kargo olayı işin içine girecek ve ebaydan alırken elde ettiğiniz 1-2 dolar kârda kargoda uçup gidecek. zaten 15-18 dolar arası ebay veya aliexpreste bulabilirsiniz. sipariş 75€ yu geçince %20 gümrük vergisi biniyor. Kargo 2000 gramı geçince ptt yerine kargo firması devreye giriyor ozamanda astronomik kargo fiyatları devreye giriyor. Bence yurtdişı siparişlerde hiç toplu alıma gitmeyin. Ekranı 4-5 adet ten fazla da getirtmeyin. eğer 4-5 adetten fazla getirtme durumunuz varsa, örnek olarak 4 er adetlik birer gün arayla sipariş verebilirsiniz. Bu durum da daha hesaplı oluyor.
hocalar bende alırım lcd den toplu alım olsa
Bırakın artık mini mini ekranlarla oynamayı.
Elimde bu lcd den 200 tane var, 60 pin, 24-bit renk, 7" 800x480. Ayrıca 60 pinden 30 pine düşüren üstünde besleme ve backlight çıkışı olan mini kartı da var. PWM ile ışığı dimm edilebiliyor.
Çıkış pinleri belli, ister DE modunda ister H/VSYNC modunda çalışabiliyor.
http://www.njytouch.com/HSD070DLD.htm (http://www.njytouch.com/HSD070DLD.htm)
http://www.njytouch.com/driver/lcdcontroller/HSD070DLD/HSD070DLD.pdf (http://www.njytouch.com/driver/lcdcontroller/HSD070DLD/HSD070DLD.pdf)
Toplu alım yaparsanız bişeyler ayarlayabilirim. ;)
Ebaydan önerılen ekranı aldık diyelim, bu ekranı stm kartına nasıl baglayacagız ? hangı pinlere baglanaca felan? bunun acıklaması varmı ?
Alıntı yapılan: emrahGS - 02 Ağustos 2012, 11:37:00
Ebaydan önerılen ekranı aldık diyelim, bu ekranı stm kartına nasıl baglayacagız ? hangı pinlere baglanaca felan? bunun acıklaması varmı ?
f4 boardun FSMC pinlerine bağlayacaksın olacak. Orası basit örnekler var.
Alıntı yapılan: SpeedyX - 02 Ağustos 2012, 11:26:52
Bırakın artık mini mini ekranlarla oynamayı.
Elimde bu lcd den 200 tane var, 60 pin, 24-bit renk, 7" 800x480. Ayrıca 60 pinden 30 pine düşüren üstünde besleme ve backlight çıkışı olan mini kartı da var. PWM ile ışığı dimm edilebiliyor.
Çıkış pinleri belli, ister DE modunda ister H/VSYNC modunda çalışabiliyor.
Toplu alım yaparsanız bişeyler ayarlayabilirim. ;)
İyi güzelde . stm32f407 de lcd port yok. ssd1289 yada ssd1963 gibi bir kotrolcüye gerek var ayrıca touch panel driver IC si gerekli 2046 gibi Ayrıca fazla büyük. Mesela benim kullandığım kutular anca 3.2 " lcd yi alabiliyor içine 4.3 bile sığmıyor. Mobil kullanılacak bir cihaz için 3.2 gayet yerinde. Çin mallarında $15 touchpanelli olan (2046 lı) ssd1289 lu çipli lcd ler var. Bence amatörler için en uygunu bu. hem fiyat konusuda gayet yerinde.
Herkese günaydın arkadaşlar Bende FSMC ile 3.2" TFT'yi sürüyorum ekrana yazı yazabiliyorum fakat iş resime gelince sadece beyaz bi kısım çıkıyo sınırları fonksiyona gönderdiğim genişlik ve yükseklik kadar. ST'nin driverlarını kullanar yazdım programı sorun bmp formatlı resim kullandığım için olamaz heralde? ST'nin kendi demonstration yazılımında kullandığı image.c dosyasında bulunan dizileride ekrana basmayı denedim ama olmuyor ekranın görüntüsünü ekledim gerekirse kodlarıda eklerim
(http://g1209.hizliresim.com/11/l/d50xq.jpg)
void G_LCD_On_Init (void)
{
GL_LCD_Init();
GL_SetTextColor(0xFFFF);
GL_SetBackColor(0x0000);
GL_Clear(0x0000);
GL_SetFont(GL_FONT_SMALL);
}
arkadaşlar bu LCD ayar fonksiyonum zaten kütüphaneleri kullanıyorum. Daha sonra LCD_DrawColorBMP("untitled", 239, 319, 240, 320); fonksiyonu ile untitled.bmp dosyasını başlangıç koordinatları ve yükseklikle genişliği gönderdiğimde program HardFault_Handler rutinine dallanıyor. sorun nerede olabilir??
Boşu boşuna yeni konu açıp forumu meşgul etmeyeyim diyorum ama burdada kimsse sallamıyo....
daha önce ssd1289 çipli driver paylaşımıtım forumda. tam olarak çalışıyor. şu an senin kullandığın lcd nin sürücü entegresi nedir bilmiyorum ama. Bu vermiş olduğum driverları inceleyebilirsin. ayrıca sürücün 1289 ise buyur kullan.
ILI9325 sürücüsü herşeyi yapabiliyorum ama resim basamıyorum acaba st'nin driver'larındanmı kaynaklı diye düşünmeden edemiyorum.. SSD1289 ile bbenzer heralde ama datasheet'i tam incelemeden bişey sölemek dogru olmaz kafayı yemeden cözmem lazım.. :o
Resim basmadan önce tek renk basmayı dene. Bence resim konusunda büyük ihtimalle pointer ve API kullanım hatası yapıyorsun. Yoksa sırf beyaz renk elde etmezdin. Yani sadece beyaz renk elde etmen anormal bir durum bile denebilir. Bir sebepten dolayı data olarak sürekli 0xFFFFFFh gidiyor olmalı. Datasheet i incele ve hazır libraryden bağımsız olarak veri yollamaya çalış.
Alıntı yapılan: OrkUn® - 24 Eylül 2012, 17:15:42
ILI9325 sürücüsü herşeyi yapabiliyorum ama resim basamıyorum acaba st'nin driver'larındanmı kaynaklı diye düşünmeden edemiyorum.. SSD1289 ile bbenzer heralde ama datasheet'i tam incelemeden bişey sölemek dogru olmaz kafayı yemeden cözmem lazım.. :o
ili93xx serisi ile ssd1289 komut ve adres itibari ile birbirinden çok farklılar tek ortak nokta 16 bit paralel interface olması...
@pisayisi,
http://www.waveshare.net/Left_Column/LCD_Module.htm (http://www.waveshare.net/Left_Column/LCD_Module.htm)
Bu siteden kullandığın lcd nin programını indirebilirsin.
Adamlar tüm lcd kontrolcüleri için üniversal bir program yazmışlar.
Programın içinde tüm çipler tanımlı. Kendi lcd nin çipini seçip kullanıyorsun.
iyiymiş burası
Evet yaa aşağıdaki lcd tipleri için tanımlama yaparak istenilen lcd tipine göre driver kullanılabilir. Baya faydalı olcak başka arkadaşlara da, teşekkürler @XX_CİHAN_XX
/* Private variables ---------------------------------------------------------*/
static uint8_t LCD_Code;
/* Private define ------------------------------------------------------------*/
#define ILI9320 0 /* 0x9320 */
#define ILI9325 1 /* 0x9325 */
#define ILI9328 2 /* 0x9328 */
#define ILI9331 3 /* 0x9331 */
#define SSD1298 4 /* 0x8999 */
#define SSD1289 5 /* 0x8989 */
#define ST7781 6 /* 0x7783 */
#define LGDP4531 7 /* 0x4531 */
#define SPFD5408B 8 /* 0x5408 */
#define R61505U 9 /* 0x1505 0x0505 */
#define HX8347D 10 /* 0x0047 */
#define HX8347A 11 /* 0x0047 */
#define LGDP4535 12 /* 0x4535 */
#define SSD2119 13 /* 3.5 LCD 0x9919 */
@ByteMaster ekrana LCD driver'ı ile veya normal sadece stdperiph sürücüleri ile herhangi bisey yazdırıp cizdirebiliyorum. Bende farklı bi durum söz konusu resmi gösteriyorum başlangıç pixel koordinatlarını ve resmin boyutlarını gönderip bekliyorum resmin uzantısını bmp olarak yazarsam beyaz ekran çıkmadan harfault_handler kesmesine dallanıyor bmp uzantısını silersem beyaz ekran olusuyor. simdi cözmem gereken hardfault handler'da iken register'ların değerleri ve ne anlam ifade ettikleri Joseph Yiu Cortex-M3'ler için bahsetmis M4 içinde bi farklılık olmasa gerek.. Debug modunda cogu register'ı görebiliyoruz zaten ama BFAR, CFSR, HFSR, DFSR, AFSR ve SCB->SHCSR register'larınada bakmak gerekiyo anladığım kadarıyla bu yüzden asm C karışık bi kod yazdım ama hata veriyor ; (Acaba Stack Yüzünden Olabilirmi???)
__asm void HardFault_Handler(void)
{
TST LR, #4
ITE EQ
MRSEQ R0, MSP
MRSNE R0, PSP
B hard_fault_handler_c
}
void hard_fault_handler_c (unsigned int * hardfault_args)
{
unsigned int stacked_r0;
unsigned int stacked_r1;
unsigned int stacked_r2;
unsigned int stacked_r3;
unsigned int stacked_r12;
unsigned int stacked_lr;
unsigned int stacked_pc;
unsigned int stacked_psr;
stacked_r0 = ((unsigned long) hardfault_args[0]);
stacked_r1 = ((unsigned long) hardfault_args[1]);
stacked_r2 = ((unsigned long) hardfault_args[2]);
stacked_r3 = ((unsigned long) hardfault_args[3]);
stacked_r12 = ((unsigned long) hardfault_args[4]);
stacked_lr = ((unsigned long) hardfault_args[5]);
stacked_pc = ((unsigned long) hardfault_args[6]);
stacked_psr = ((unsigned long) hardfault_args[7]);
printf("\n\n[Hard Fault Handler - All Numbers In Hex]\n");
printf("R0 = %x\n", stacked_r0);
printf("R1 = %x\n", stacked_r1);
printf("R2 = %x\n", stacked_r2);
printf("R3 = %x\n", stacked_r3);
printf("R12 = %x\n", stacked_r12);
printf("LR [R14] = %x subroutine call return address\n", stacked_lr);
printf("PC [R15] = %x programm counter\n", stacked_pc);
printf("PSR = %x\n", stacked_psr);
printf("BFAR = %x\n", (*((volatile unsigned long *)(0XE000ED38))));
printf("CFSR = %x\n", (*((volatile unsigned long *)(0XE000ED28))));
printf("HFSR = %x\n", (*((volatile unsigned long *)(0XE000ED2C))));
printf("DFSR = %x\n", (*((volatile unsigned long *)(0XE000ED30))));
printf("AFSR = %x\n", (*((volatile unsigned long *)(0XE000ED3C))));
printf("SCB_SHCSR = %x\n", SCB->SHCSR);
while(1)
;
}
[..\stm32f4xx_it.c(60): error: A1516E: Bad symbol 'hard_fault_handler_c', not defined or external] hatasını alıyorum ama hard_fault_handler_c fonksiyonunu external olarak stm32f4xx_it.h dosyasında tanımladım bu hatayı neden alabilirim?? Simdiden teşekkürler. Kolay gelsin..