STM32F10X Çalışmalarım

Başlatan Mucit23, 12 Mart 2012, 11:17:48

Mucit23

#105
Merhaba Arkadaşlar.

STM32F107 de usart2 pinleri dışarıda iki adet görünüyor. Mesela 1. Usart2 in RX ve TX pinleri hem porta nın 2 ve 3 nolu bitlerinde çıkarılmış Hemde portD nin 5 ve 6. bitlerinden çıkarılmış.

Aynı Durum Usart1 ve Usart2 içinde geçerli. Neden böyle yapıyorlar?

Usartı ayarlamak için aşağıdaki kodları kullanıyorum.

void initRS232(int baud){
	
				USART_InitTypeDef USART_InitStructure;

				RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,  ENABLE);
	      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

      // Configure USART2 Tx (PA.2) as alternate function push-pull
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

        // Configure USART2 Rx (PA.3) as input floating
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);

        USART_InitStructure.USART_BaudRate = baud;
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  	  	USART_InitStructure.USART_StopBits = USART_StopBits_1;
  	  	USART_InitStructure.USART_Parity = USART_Parity_No;
  	  	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  	  	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

  	  	USART_Init(USART2, &USART_InitStructure);

  	  	/*USART2 alim-gönderim kesmeleri aktif*/
  	  	 USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
  	  	 USART_ITConfig(USART2, USART_IT_TXE, ENABLE);

  	  	/*  USART2 Aktif*/
  	  	USART_Cmd(USART2, ENABLE);
}


Bu şekilde Usart2 nin A portundan data çıkışı alıyorum. Ama pinleri oraya yönlendirmeme rağmen D portundan data alamadım.

Bunun Sebebi Nedir?

muhittin_kaplan

#106
Mucit alternate function olarak kullanmışsın. buda usart2 yi PA ya yönlendiriyor. onun yerine remap yapman gerekir.
        GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);


Mucit23

Muhittin Hocam Sağolun. Öğrendiğim iyi oldu  8)

muhittin_kaplan


Mucit23

Evet hocam sağolun. Dediğiniz gibi yapınca PortD den almaya başladım. Sıkıntı yok şuanda..

Mucit23

Bu işlemci max kaç Mhz hızda çalışır?

Elimdeki boardda işlemciye 25Mhz Xtal OSC bağlanmış(Kare olanlardan) Normade datasheette 4 ile 16Mhz arası takılır demiş.

Neyse Ben HSE osilatör Ön bölücüsünü 1 yapıp ardından PLLMul çarpanını 4 yaptığımda işlemci teoride 100Mhz ile çalışır. 4 Sınır bir değer. Bu çarpanı 5 yaptığımda bu sefer çevre donanımları sapıtıyor(TFT ekran gibi)

Datasheette max 72 Mhz diyorlar. Bu kriter neye göre ayarlanıyor.

Ayrıca sürekli bu hızda çalıştırırsam ne olur.

Mucit23

Arkadaşlar Merhaba

Keil bugün çok saçmalamaya başladı. Benle dalga geçiyor resmen

Çözümünü bildiğim bir uyarıyı ısararla bana vermeye devam ediyor

Graphic_Data\Size1_Selected.c(54): warning:  #1-D: last line of file ends without a newline

Burada dosyanın son satırında 1 satır boşluk olması gerektiğini söylüyor. Daha önceleri bu şekilde dosyanın son satırına boşluk ekleyerek bu uyarıdan kurtuluyordum. Şimdi kurtulamıyorum. Acaba bana başka birşeymi söylüyor.

Birde şunu sorayım.

TFT ye resim basmak için elimdeki BMP resmi c koduna çevirip işlemciye gömüyorum.

Yahu bendemi problem var anlamıyorum. Resmi bir program ile c koduna çevirdikten sonra, const unsigned short Resim[]{.......} şeklinde dizide saklıyorum. Resimde Renkli şekiller var. TFT resmi bastığımda bu şekillerin Yerleri farklı oluyor.

Resimleri dönüştürmek için kullandığım programdamı sorun var yahu deli olacam.

Acaba elimdeki Resim datalarını bilgisayar ortamında tekrar resime çevirip doğruluğunu sağlayabilirmiyim.

Mucit23

Bu uyarılar Canımı sıkıyor.

Neden bu tip uyarılar alıyorum. Çözümü nedir.

Uyarı aldığım örnek bir C Resim Dosyası

const unsigned short Resim5[] = 
{
	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
	0x0000,0x0000,0x0000,0x0000,0x0000,0xC618,0xC618,0xC618,
	0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,
	0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xFFFF,
	0x0000,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,
	0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,
	0xC618,0xC618,0xC618,0xFFFF,0x0000,0xC618,0xC618,0xC618,
	0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,
	0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xFFFF,
	0x0000,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,
	0xC618,0xC618,0x430C,0x830C,0x830C,0x830C,0x830C,0x830C,
	0x830C,0x830C,0xC618,0xFFFF,0x0000,0xC618,0xC618,0xC618,
	0xC618,0xC618,0xC618,0xC618,0xC618,0x4208,0xF7DF,0xF7DF,
	0xF7DF,0xC618,0xC618,0xC618,0x830C,0x830C,0xC618,0xFFFF,
	0x0000,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,
	0x4208,0xF7DF,0xF7DF,0xF7DF,0xC618,0xC618,0xC618,0x8410,
	0xA514,0x430C,0xC618,0xFFFF,0x0000,0xC618,0xC618,0xC618,
	0xC618,0xC618,0xC618,0x4208,0xF7DF,0xF7DF,0xF7DF,0xC618,
	0xC618,0xC618,0x8410,0xA514,0x830C,0xA514,0xC618,0xFFFF,
	0x0000,0xC618,0xC618,0xC618,0xC618,0xC618,0x4208,0xF7DF,
	0xF7DF,0xF7DF,0xF7DF,0xC618,0xC618,0x8410,0xA514,0x8410,
	0x830C,0xC618,0xC618,0xFFFF,0x0000,0xC618,0xC618,0xC618,
	0xC618,0x4208,0xF7DF,0xF7DF,0xF7DF,0xF7DF,0xC618,0xC618,
	0x430C,0xA514,0xA514,0x4208,0xC618,0xC618,0xC618,0xFFFF,
	0x0000,0xC618,0xC618,0xC618,0x830C,0xA514,0x8410,0x8410,
	0x8410,0x830C,0x430C,0x4208,0x8410,0xA514,0x4104,0xA514,
	0xC618,0xC618,0xC618,0xFFFF,0x0000,0xC618,0xC618,0x830C,
	0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0x830C,
	0x8410,0x4104,0xA514,0xC618,0xC618,0xC618,0xC618,0xFFFF,
	0x0000,0xC618,0xC618,0xA514,0xF7DF,0xF7DF,0xF7DF,0xF7DF,
	0xF7DF,0xF7DF,0xA514,0x8410,0x4104,0xA514,0xC618,0xC618,
	0xC618,0xC618,0xC618,0xFFFF,0x0000,0xC618,0x8410,0xF7DF,
	0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DF,0x830C,0x4104,
	0xA514,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xFFFF,
	0x0000,0xC618,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,
	0x4208,0x4208,0x0000,0xA514,0xC618,0xC618,0xC618,0xC618,
	0xC618,0xC618,0xC618,0xFFFF,0x0000,0xC618,0xC618,0xC618,
	0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,
	0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xFFFF,
	0x0000,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,
	0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,
	0xC618,0xC618,0xC618,0xFFFF,0x0000,0xC618,0xC618,0xC618,
	0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,
	0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xFFFF,
	0x0000,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,
	0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,0xC618,
	0xC618,0xC618,0xC618,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
	0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
	0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF
};

camby

Hocam alıyordum ben de bu uyarıdan , son süslü parantezden sonra birkaç kez enter'a basıp yeni satır ekler misin , Keil dosya sonunda boş satır görmek istiyor sanırım.

Mucit23

Hocam Var hocam En sonki parantezden sonra en az 10 Tane boşluk koydum. Başka birşey diyor sanki..

Dün bana kafayı yedirtti keil. Ekrana Resim basıyorum. Basım resimdeki Butonların Renkleri Farklı çıkıyor. İstediğim Renkler çıkıyor Ama Diyelim 1. Buton kırmızı olması gerekirken 5. Buton Kırmızı olup 1. Butonada 5. Butonun Rengi Basılıyor. Başka Düz bir Manzara Resmi Basıyorum Sıkıntı yok..

Varmı böyle bir Saçmalık Gönderdiğim Resim Elimde 

camby

Alıntı yapılan: Mucit23 - 26 Mart 2013, 09:47:56
Hocam Var hocam En sonki parantezden sonra en az 10 Tane boşluk koydum. Başka birşey diyor sanki..

Dün bana kafayı yedirtti keil. Ekrana Resim basıyorum. Basım resimdeki Butonların Renkleri Farklı çıkıyor. İstediğim Renkler çıkıyor Ama Diyelim 1. Buton kırmızı olması gerekirken 5. Buton Kırmızı olup 1. Butonada 5. Butonun Rengi Basılıyor. Başka Düz bir Manzara Resmi Basıyorum Sıkıntı yok..

Varmı böyle bir Saçmalık Gönderdiğim Resim Elimde

o uyarıyı önemseme hocam şimdilik. Sanırım dememin sebebi de oydu , oluyordu bende de , nasıl çözüldü hatırlamıyorum. Sen butonların yazılımına odaklan.

Mucit23

Pes ettim. Dün akşam Tam 2 Saat bunu çözmek için oyalandım. Butonların Yerleri Değişmiyor. Sadece Renklerini değiştiriyor.

Bu yüzden Resim Kodlarını Tekrar Resime çevirmek için bir program bulsam iyi olacak. Belki Resimleri çevirdiğim programda sıkıntı vardır. Başka ne olaki? 

Mucit23

#117
Arkadaşlar Merhaba,

Aynen Çeviri yaptığım programda problem varmış. Başka bir tane buldum düzeldi. Önceki Resim programı neye göre bunu yapıyor anlamadım.

Kullandığım program budur.
http://www.fujitsu.com/emea/services/microelectronics/gdc/swtools/bitmap-converter.html

Neyse

Bir problem var.

320X240 çözünürlüğe sahip iki tane resim var. Resmin Boyutu bayağı yüksek. Bu resimleri işlemcinin hafızasına gömmekte sıkıntı yaşamıyorum.Kullandığım veri tipi şöyle

const unsigned short Giris[76800] = { 
0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
0xFFFF,0xFFFF,0xFFFF,....................}


Gibi.

Bu Resimleri ekrana basmak için GLCD_Bitmap Şeklinde fonksiyonum var. X,Y kordinatları ve Resim ile birlikte resmin boyutunu belirtmek yetiyor.

Söyle bir sorun var.

İki adet Resim ard arda basmak istersem Aşağıdaki gibi bir hata alıyorum.

linking...
New_Proje.axf: Error: L6406E: No space in execution regions with .ANY selector matching giris.o(.constdata).
New_Proje.axf: Error: L6407E: Sections of aggregate size 0x25800 bytes could not fit into .ANY selector(s).
Target not created


İki Resim arasında bir while döngüsü kurarak programın akışını engellesem hata almıyorum. Ama mesela koşullu olarak break deyimi ile while içerisinden kurtulayım diyorum yine aynı hatayı alıyorum.

Keil Bana ne demek istiyor bu hata ile. Nasıl çözerim?

Sanırım Resim Datalarını yalnış şekilde saklıyorum. C de Const array sınırları neler acaba?

buzkırıcı

Hocam kusura bakma öncelikle galiba resimleri çevirme programında sıkıntı olmuş? sıkıntının tam olarak neden kaynaklandığını öğrenmek isterim. (Şimdiden teşekkürler)

Keil de aynı hatayı bende aldıydım.. Ram alanı yetersiz geliyor anlamında yorumlamıştık biz. Çevirdiğin resimlerin size ne kadar lık? ram alanını aşıyr olabilir. İyi çalışmalar.
İmza Atmayı bilmem Parnak Bassam olur mu?

Mucit23

#119
Hocam bu sorunu hemen çözmem lazım

Diğer bitmap çevirici program saçma sapan çalışıyordu.

Renklerin yerlerini değiştiriyor. Kırmızı yapılacak yere mavi, mavi yapılacak yere kırmızı çiziyordu.

Programı değiştirince bu sorun düzeldi.

Şimdide dediğinize göre renk sıkıntım var.

Ben bu kodları ram'e değilde program hafızasına yazıp oradan çekmek istiyorum. Aslında mantıkende öyle olması gerekir çünkü ben const unsigned short diye diziyi oluşturuyorum. Normalde const arraylar program hafızasına yazılmazmı?

Edit:

Resimlerin birini kullanmıyorum hiç
derleme sonucu program boyutu şöyle

Program Size: Code=12860 RO-data=172228 RW-data=88 ZI-data=2144 

Bence Resimle ilgili bir sıkıntı yok çünkü tüm resimler programla birlikte derleniyor.

Sorun Resimleri bir yerde, mesela ekrana basmak için kullanmak istersem başlıyor

GLCD_Bitmap(0,0,320,240,image_1);

Bundan iki tane kullandığım zaman hata alıyorum