STM32F4xx Std_Lib USART (Örnek)

Başlatan Klein, 02 Kasım 2012, 15:28:29

M_B

Alıntı yapılan: meftun - 13 Ocak 2014, 16:15:24
Hocam , kütüphane dosyaları projemde bulunmadığı için, KEIL aşağıdaki satırlarda hata veriyor, bu dosyaları nerden bulabiliriz?
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_usart.h"
#include "stm32f4xx_tim.h"
#include "misc.h"
stm32f4discovery_fw\Libraries\STM32F4xx_StdPeriph_Driver\ klasoru icinde inc ve source klasorlerinde.

stm32f4discovery_fw dosyasını st den indirmeniz gerek
http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252419
linkinde STSW-STM32068 isimli dosyayı indiriniz.

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

Gökhan BEKEN

Teşekkür ederim hocam.
İndirdikten sonra, include edeceğimiz dosyaları proje klasörüne kopyaladım, derledim birşey değişmedi,
sonra "Source Group 1" kısmına "c" uzantılı dosyaları ekledim,
bir ton uyarı verdi, 2 adet error verdi.
Nerde yalnış yaptım acaba?
Özel mesaj okumuyorum, lütfen göndermeyin.

Klein

Verdiği hata nedir?
stm32f4xx_conf.h içerisinde,   kullanılacak kütüphanelerin  header dosyalarının include edildiği bir bölüm var.
buradaki include satırları comment durumundadır.  kullanacaklarını uncomment yapman gerek.

Gökhan BEKEN

Derleme sonucu gelen uyarı ve hatalar şöyle:
Rebuild target 'Target 1'
assembling startup_stm32f40xx.s...
compiling main.c...
compiling misc.c...
misc.c(115): warning:  #223-D: function "assert_param" declared implicitly
misc.c(135): warning:  #223-D: function "assert_param" declared implicitly
misc.c(177): warning:  #223-D: function "assert_param" declared implicitly
misc.c(196): warning:  #223-D: function "assert_param" declared implicitly
misc.c(220): warning:  #223-D: function "assert_param" declared implicitly
compiling stm32f4xx_gpio.c...
stm32f4xx_gpio.c(123): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_gpio.c(187): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_gpio.c(260): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_gpio.c(304): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_gpio.c(326): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_gpio.c(343): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_gpio.c(365): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_gpio.c(383): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_gpio.c(402): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_gpio.c(422): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_gpio.c(445): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_gpio.c(459): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_gpio.c(535): warning:  #223-D: function "assert_param" declared implicitly
compiling stm32f4xx_rcc.c...
stm32f4xx_rcc.c(240): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(296): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(331): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(356): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(396): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(439): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(462): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(488): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(503): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(521): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(548): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(586): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(692): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(745): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(777): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(808): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(985): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(1015): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(1032): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(1049): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(1088): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(1120): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(1147): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(1197): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(1237): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(1276): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(1305): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(1329): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(1376): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(1412): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(1458): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(1490): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(1517): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(1567): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(1607): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(1652): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(1692): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(1754): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_rcc.c(1785): warning:  #223-D: function "assert_param" declared implicitly
compiling stm32f4xx_tim.c...
stm32f4xx_tim.c(197): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(287): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(357): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(382): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(406): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(421): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(435): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(449): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(465): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(494): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(519): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(546): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(569): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(589): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(670): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(751): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(832): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(912): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1012): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1055): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1071): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1086): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1101): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1121): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1150): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1178): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1207): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1235): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1265): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1294): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1323): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1352): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1383): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1413): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1443): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1473): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1503): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1532): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1561): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1590): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1616): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1644): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1671): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1698): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1725): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1752): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1783): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1813): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1893): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(1971): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2025): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2040): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2054): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2068): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2088): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2113): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2137): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2161): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2214): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2258): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2283): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2308): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2365): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2403): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2437): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2478): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2508): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2547): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2584): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2611): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2637): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2676): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2697): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2728): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2770): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2815): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2884): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2925): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2949): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(2972): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(3005): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(3065): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(3112): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_tim.c(3163): warning:  #223-D: function "assert_param" declared implicitly
compiling stm32f4xx_usart.c...
stm32f4xx_usart.c(181): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(235): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(364): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(411): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(437): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(458): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(484): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(541): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(557): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(608): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(628): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(655): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(724): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(742): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(766): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(819): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(904): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(923): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(948): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(1019): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(1037): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(1083): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(1213): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(1276): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(1324): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(1360): warning:  #223-D: function "assert_param" declared implicitly
stm32f4xx_usart.c(1433): warning:  #223-D: function "assert_param" declared implicitly
linking...
.\seriport.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f40xx.o).
.\seriport.axf: Error: L6218E: Undefined symbol assert_param (referred from misc.o).
".\seriport.axf" - 2 Errors, 168 Warning(s).
Target not created



stm32f4xx_conf.h dosyası bende yok, keil içinde arama yaptım orda da yok, indirdiğim kütüphanelerde arattım yok.
Proje dosyası burda: http://www.4shared.com/rar/CK0hoykdce/keilStmSeriport.html
Rica etsem çalışan keil projesini paylaşabilir misiniz?
Özel mesaj okumuyorum, lütfen göndermeyin.

Klein

Başka bir başlıkta, keil ile ST_LIB kullanma konusuna bir giriş yaptım. Konu oradan devam ederse iyi olur.

Gökhan BEKEN

Teşekkür ederim hocam. Derleme başarılı oldu, yazdığınız dosya stm32f4xx_conf.h ve stm32f4xx_conf.c sayesinde
ayrıca target özelliklerinde c/c++ kısmında define bölümüne "USE_STDPERIPH_DRIVER" yazmamışım, onu da ekledim.
Özel mesaj okumuyorum, lütfen göndermeyin.

fthsev

[/code]
Alıntı yapılan: Klein - 02 Kasım 2012, 15:28:29
Bu örneğimiz Usart3 RX kesmesi ile ile alınan veriyi aynen geri gönderen ECHO örneği.
Programı test etmek için hyper terminal kullanılabilir.  Hyper terminalde ne yazarsanız aynen size geri döner.
Daha önceki örneklerde , kütüphane ekleme , init vs.. konular anlatıldığı için, burada o konulara girmiyorum.


Kod:
#include "stm32f4xx.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_usart.h"
#include "stm32f4xx_tim.h"
#include "misc.h"

/********* Function prototypes *************************************/
void SendChar(char Tx);
void SendTxt(char *Txt);

GPIO_InitTypeDef GPIO_InitStruct;
NVIC_InitTypeDef NVIC_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TBInitStruct;
USART_InitTypeDef USART_InitStructure;

uint8_t timer_update=0;
uint32_t ledtime=0;



/*****************  Interrupt handlers  ***********************************/
void TIM7_IRQHandler(void)
{
	TIM7->SR=0;
	timer_update=1;
}

void USART3_IRQHandler(void)
{
char temp;
	temp=USART_ReceiveData(USART3);
	SendChar(temp);
}

/***************************************************************************/


void init_tim7(void){

	RCC_APB1PeriphClockCmd(RCC_APB1ENR_TIM7EN,ENABLE); // Timer saat kaynağını aç
	TIM_TBInitStruct.TIM_Prescaler = 4199; // ÖnBölücü (PSC) değeri 4199
	TIM_TBInitStruct.TIM_Period =1; // Otomatik geri yükleme (ARR) eşiği 1
	TIM_TimeBaseInit(TIM7,&TIM_TBInitStruct); // Timeri init et

	TIM_ITConfig(TIM7, TIM_IT_Update, ENABLE); // Timer Update olayında interrupt istesin.
    NVIC_InitStructure.NVIC_IRQChannel = TIM7_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);


    TIM_Cmd(TIM7, ENABLE);// Timeri başlat
}


void init_gpio(void){
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,ENABLE);
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);

  // Ledlere bağlı pinlerin başlatma ayarları
  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStruct.GPIO_OType= GPIO_OType_PP;
  GPIO_InitStruct.GPIO_Speed= GPIO_Speed_100MHz;
  GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOD,&GPIO_InitStruct);

	// Usart 3'e  bağlı pinlarin başlatma ayarları
	  GPIO_PinAFConfig(GPIOB,10,GPIO_AF_USART3);
	  GPIO_PinAFConfig(GPIOB,11,GPIO_AF_USART3);
	  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11;
	  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
	  GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
	  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz;
	  GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
	  GPIO_Init(GPIOB, &GPIO_InitStruct);
}

void init_usart(void){

// usart başlatma ayarları
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
  USART_InitStructure.USART_BaudRate = 9600;
  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(USART3, &USART_InitStructure);
  NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

  USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);
  USART_Cmd(USART3,ENABLE);

}


void SendChar(char Tx)
{
      while(!(USART3->SR&0x80));  // TX Buffer dolu ise bekle (Rehber Sayfa 646)
      USART_SendData(USART3,Tx);
}

void SendTxt(char *Txt)
{
      while(*Txt)
        {
          SendChar(*Txt);
          Txt++;
        }
}


int main(void)
{

  SystemInit();
  init_gpio();
  init_usart();
  init_tim7();

	while(1)
    {
  	  	if(timer_update){
            timer_update=0;

            if(++ledtime > 5000){
      			ledtime =0;
                GPIO_ToggleBits(GPIOD,GPIO_Pin_12);
            }
        }

    }
}


Klein hocam usart1 ile c# arayüzüne data göndermeye çalışıyorum ama mesela 'a' gönderince ? işareti alıyorum. bu durum neden kaynaklanabilir?
Kod kısmı
char temp;
  temp='a';
  SendChar(temp);

void SendChar(char Tx)
{
      while( !(USART1->SR & 0x00000040) );
      USART_SendData(USART1,Tx);
}

kimlenbu

baud rate'ler farklıdır, stop bit sayısı farklıdır, parity tipi farklıdır. İlk aşamada bunların STM32'de de C#'da yazdığın programda da aynı olduğuna emin ol.

fthsev

Alıntı yapılan: kimlenbu - 17 Temmuz 2014, 20:04:37
baud rate'ler farklıdır, stop bit sayısı farklıdır, parity tipi farklıdır. İlk aşamada bunların STM32'de de C#'da yazdığın programda da aynı olduğuna emin ol.
Kontrol ettim hepsi aynı. Sadece soru işareti değil mesala c# a  gonderdigim'a' karakterini byte degiskenin içine alınca 225 değerini veriyor  Aklıma şöyle bir şey geliyor. Acaba char karakterler gönderilirken byte a çevrilip mi gönderiliyor. C# da char degiskenin içine aliyorum. Buradan kaynaklaniyor olabilir mi? Bilgisayarım su an yanımda olmadığı için kontrol edemiyorum.

yldzelektronik

Alıntı yapılan: fthsev - 17 Temmuz 2014, 21:40:39
...  Aklıma şöyle bir şey geliyor. Acaba char karakterler gönderilirken byte a çevrilip mi gönderiliyor. C# da char degiskenin içine aliyorum. Buradan kaynaklaniyor olabilir mi?...

Seri porta yazmak için nasıl bir metod izliyorsunuz bilmiyorum.Ancak zaten çok farklı çeşitler de yok.Örneğin; serialport1.Write(....); parametre olarak çok çeşitli şeyleri kabul edebiliyor. O yüzden siz oraya string de girseniz yine giden veri ascii koduyla gidecektir.Ancak soru işareti vs alıyor olmanız;

Alıntı yapılan: kimlenbu - 17 Temmuz 2014, 20:04:37
baud rate'ler farklıdır, stop bit sayısı farklıdır, parity tipi farklıdır. İlk aşamada bunların STM32'de de C#'da yazdığın programda da aynı olduğuna emin ol.

İhtimallerinden olabilir.Belki gnd hattı ile ilgili problem de olabilir. Ben gnd hattı olmadan aynı prizden beslenen devremi ve bilgisayar haberleştirebiliyorum.Fakat sizin sorununuz bu da olabilir.

Eğer mümkünse kodları paylaşın inceleyelim.Ona göre cevap verelim.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

fthsev

Alıntı yapılan: yldzelektronik - 18 Temmuz 2014, 07:54:44

Eğer mümkünse kodları paylaşın inceleyelim.Ona göre cevap verelim.

Kodları paylaşıyorum. Ayrıca bağlantılar da şu şekilde;

stm32f4 kitinin b6 ve b7 pinlerini(USART1) FTDI Uart click kartının rx ve tx pinlerine bağlıyorum. kitte buluna bir gnd pinini
FTDI in gnd pinine bağlıyorum. En sonda iki usb kablosu ile hem uart click i hemde kiti bilgisayara bağlıyorum.
Kodlar şu şekilde

Arm:
void init_usart()
{
	GPIO_InitTypeDef GPIO_InitStruct;
	USART_InitTypeDef USART_InitStruct;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
	GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz;
	GPIO_Init(GPIOB, &GPIO_InitStruct);

	GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_USART1);
	GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_USART1);

	USART_InitStruct.USART_BaudRate = 9600;
	USART_InitStruct.USART_WordLength = USART_WordLength_8b;
	USART_InitStruct.USART_StopBits = USART_StopBits_1;
	USART_InitStruct.USART_Parity = USART_Parity_No;
	USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
	USART_InitStruct.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
	USART_Init(USART1, &USART_InitStruct);
	USART_Cmd(USART1, ENABLE);
}

void SendChar(char Tx)
{
	  while( !(USART1->SR & 0x00000040) );
          USART_SendData(USART1,Tx);
      //Delay(0x3fffff);
}
int main(void)
{

  SystemInit();
  clockayar();
  init_gpio();
  init_usart();
  init_tim7();
  //Delay(0x3fffff);
   char temp;
   temp='a';
   SendChar(temp);
  //Delay(0x2fffff);
 

    while(1)
    {
    	
    	if(TIM_GetCounter(TIM7)>1999){
    			  GPIO_SetBits(GPIOD,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
    		  }else
    			  GPIO_ResetBits(GPIOD,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
     }
}


c#:

   

 char[] veri = new char[1];

 private void Form1_Load(object sender, EventArgs e)

  {
        CheckForIllegalCrossThreadCalls = false;

        serialPort1.PortName = "COM4";
    
        serialPort1.BaudRate = int.Parse("9600"); 

        serialPort1.DataBits = int.Parse("8"); 

        serialPort1.StopBits = System.IO.Ports.StopBits.One; 

        serialPort1.Parity = Parity.None; 

        serialPort1.Open(); 

        serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(serialPort1_DataRecived);

}

private void button2_Click(object sender, EventArgs e)
        {
            
            
          
            textBox3.Text = Convert.ToString(veri[0]);
            
            
           
        
        }

public void serialPort1_DataRecived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {

            MessageBox.Show("Gelen veri");
            serialPort1.Read(veri, 0, 1);
        }

fthsev

#26
Sorunumu çözdüm. Aynı problemle karşılaşan başka arkadaşlara da yardımcı olur umarım. Sorun system_stm32f4xx.c dosyasında görünen HSE kristal degeri ile board üzerinde yer alan kristalin farklı olmasından kaynaklanıyor. Bu dosyada yer alan PLL_M değerini 25 yerine 8 ile ve system_stm32f4xx.h yada stm32f4xx.h dosyadında yer alan

#if !defined  (HSE_VALUE)
  #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
#endif /* HSE_VALUE */

bölümü 8000000 ile değiştirmemiz gerekiyor. Tabi board üzerindeki kristal 8 Mhz ise..



mesaj birleştirme:: 19 Temmuz 2014, 18:04:10

Bir problemle daha karşılaştım:) Bilmiyorum belkide problem değildir. Bilen arkadaşlardan yardımcı olmasını bekliyorum. Bilgisayara Tx interrupt ile ftdı üzerinden veri gönderiyorum. Her data send komutundan sonra delay komutunu yazmazsam datanın sadece ilk bytenı karşıda görebiliyorum. Bu normal bir durum mudur?

Kodlar Klein hocamın paylaştığı bir konudan:

void Usart_SendBuf(USART_TypeDef *USART,  uint16_t length, char *buff){

     send_ok=0;
    tx_len = length; // göndereceğimiz bayt sayısı.
                                       // eğer string gönderiyor olsaydık, bu sayıya ihtiyacımız olmayacaktı.
    tx_ptr = buff;  // kullanacağımız dizinin adresini pointerimize atıyoruz.
    USART_ITConfig(USART1,USART_IT_TXE,ENABLE); // TX tamponu (DR) boşaldığında kesme üret.

}
void USART1_IRQHandler(void)
{


    if(USART_GetITStatus(USART1,USART_IT_TXE)){
        if(--tx_len == 0){ // Dizimizdeki tüm elemanlar bitti mi?
            USART_ITConfig(USART1,USART_IT_TXE,DISABLE); // artık TXE bayrağı işimize yaramaz.
            USART_ITConfig(USART1,USART_IT_TC,ENABLE); // Gönderme tamamlandığında kesme üret.
        }

        USART_SendData(USART1,(uint16_t) *tx_ptr);
        //Delay(0xf4240);
        tx_ptr++;
        USART_ClearITPendingBit(USART1,USART_IT_TXE);

    }

    if(USART_GetITStatus(USART1,USART_IT_TC)){ // Son bit de yerine ulaştı mı?

        USART_ITConfig(USART1,USART_IT_TC,DISABLE); // Verimizin tümü gitti Artık TC bayrağına da ihtiyaç yok.
        USART_ClearITPendingBit(USART1,USART_IT_TC);
                             send_ok=1;
    }

}


int main(void)
{
	SystemInit();
	init_gpio();
	init_usart();
	init_tim7();

	               Usart_SendBuf(USART1,1,"*");
	               while(!send_ok);
	               Usart_SendBuf(USART1,8,"picproje");
	               while(!send_ok);
    while(1)
    {
    	if(TIM_GetCounter(TIM7)>1999){
    	    			  GPIO_SetBits(GPIOD,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
    	    		  }else
    	    			  GPIO_ResetBits(GPIOD,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
    }
}


C# kodları:

private void button2_Click(object sender, EventArgs e)
        {
            
            
            textBox3.Text = "";
            textBox3.Text = Convert.ToString(voltaj[0]) + Convert.ToString(voltaj[1]) + Convert.ToString(voltaj[2]) + Convert.ToString(voltaj[3])+ "  V";
            
            
        }

        
            

        public void serialPort1_DataRecived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {

            
            serialPort1.Read(veri, 0, 1);
          
            if (al)
            {
                voltaj[i] = veri[0];
                i++;
                if (i == 8)
                {
                    al = false;
                }
            }
            if (ala)
            {
                sicaklik[x] = veri[0];
                x++;
                if (x == 8)
                {
                    ala = false;
                }
            }
            if (veri[0] == '!')
            {

                al = true;
                i = 0;
            }
            if (veri[0] == '*')
            {
                ala = true;
                x = 0;
            }



Klein

Normal.
Örnek Interrupt kullanarak veri gönderme örneği.  Veri gönder dediğinizde , veri bir tampona yazılıyor ve işlem başlatılıyor. Verinin tümü gönderilene kadar herhangi bir noktada bekleme yapılmıyor.
Önceki paketin  gönderilmesi bitmeden yeni bir paket göndermek isterseniz sadece 1 byte göndermeniz normal.
Ancak bu sorunu delay kullanrak çözmek doğru değil. Bu örneğin ruhuna da uygun değil zaten. Kesme kullanmanın amacı , programı bir yerde bekletmemek.
Sorunu çözmek için örnekte olduğu gibi  "send_ok" bayrağını kontrol etmelisiniz. fakat bunu örnekteki gibi while döngüsü içinde yaparsanız yine olmaz.

sendok bayrağını kontrol edeceksiniz. eğer bayrak 1 ise veriyi göndereceksiniz. eğer bayrak 0 ise veriyi göndermeyecek , diğer işlerinize devam edeceksiniz. Arada bir kontrol edip 1 olduğunda tekrar göndereceksiniz.

Gökhan BEKEN

Merhaba
USART init yapılınca, anlamsız bir karakter yolluyor, bunun sebebini ve nasıl önleyeceğimizi bilen var mı?
Daha önce forumda gördüm diye hatırlıyorum ama bulamadım.
Özel mesaj okumuyorum, lütfen göndermeyin.