Archive for the ‘LM3s8962’ Tag

Lm3s8962 float To Char*

  • Lm38962 altında float sayıları char dizisi haline getirmek için;

Kütüphane eklenmesi;

#include "IQmath/IQmathLib.h"

Gerekli kod işlemleri;

float sonuc;
char dizi[15];
_iq X;
X = _IQ(sonuc);
_IQtoa(dizi, "%5.10f", X);

çevrilen dizi uart ile gönderilebilir veya ekrana yazdırılabilir.

Kaynaklar

  1. Stellaris® IQmath Library
  2. indirme : http://www.ti.com/tool/sprc087
Reklamlar

CCS 4 LM3S8962 Proje Oluşturma

 Mevcut Projeyi Dahil Etmek 

  • Project > Import Existing CCS/CCE Eclipse Project >

 Yeni Proje Oluşturmak 

  •  ”’File > New > CCS Project”’
  • “Project Name ” Kısmında projenin ismi belirlenir.
  •  “Project Type” kısmında ”’ARM”’ Seçilir.
  •  “Referenced Projects” kısımdan ”’driverlib”’ projeye dahil edilir.
  •  “CCS Project Settings” penceresinde “Device Variant” bölümünden gerekli mikrodenetleyici seçilir. Ben LM3S8962 seçiyorum.
  •  Projeyi oluşturduk ancak herhangi bir kaynak dosya koymadık. Ayar işlemlerini yapacak olan ”’startup”’ dosyasını oluştururuz. StellarisWare örneklerinden herhangi birinden kopyalanır.
  •  Projeye kaynak dosyası ekleriz. ”’File > New > Source File >”’ Kaynak Dosyanın ismi belirtilir.
  • ”’File > New > Target Configuration File”’ dosyası ile ayar dosyası projeye eklenir. General Setup bölümünde Board kısmından hedef board seçilir.
  •  Projenin özellikleri içinde ”’Properties > C/C++ Build > Build Steps > Post Build Step”’ altındaki Command kısmına altaki satır kopyalanır.
"${CCE_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin.bat" "${BuildArtifactFileName}" 
"${BuildArtifactFileBaseName}.bin" "${CG_TOOL_ROOT}/bin/ofd470.exe" "${CG_TOOL_ROOT}/bin/hex470.exe" 
"${CCE_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin.exe"
  •  driverlib.lib dosyası ekleniyor. ”’C/C++ Build > Tool Settings > Basic Settings: > TMS470 Linker > File Search Path > Include library~”’ altına eklenir.
"${workspace_loc:/driverlib/Debug/driverlib.lib}"
  •  ”’C/C++ Build > Tool Settings > Basic Settings: > TMS470 Compiler > Include Options”’ buraya derleyicinin bakacağı yolları ekliyoruz. Aşağıdaki iki yol ekleniyor:
C:\StellarisWare
C:\StellarisWare\boards\ek-lm3s8962
  •  Eğer LWIP bir proje yapılıyorsa şunlarda path eklenmesi gerekiyor:
"C:\StellarisWare\third_party\lwip-1.3.2\src\include"
"C:\StellarisWare\third_party\lwip-1.3.2\src\include\ipv4"
"C:\StellarisWare\third_party\lwip-1.3.2\apps"
"C:\StellarisWare\third_party\lwip-1.3.2\ports\stellaris\include"
"C:\StellarisWare\third_party"

 Kaynaklar
[1] Quickstart-Eval-Kit-CCS.pdf

LM3S8962 Buton Kullanım Örneği

Buton.c dosyası içeriği

  • Kütüphaneler dahil edililiyor
#include "inc/hw_gpio.h"
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/debug.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/sysctl.h"
#include "drivers/rit128x96x4.h"
  •  Kartın üzerindeki Select butonu için kesme tanımlanıyor
void
GPIOFIntHandler(void)
{
    // Clear the GPIO interrupt.
    GPIOPinIntClear(GPIO_PORTF_BASE, GPIO_PIN_1);
    RIT128x96x4StringDraw("SELECT", 48, 32, 15);
}
  • Diğer butonlar(up,down,right,left) için kesme tanımlanıyor
void
GPIOEIntHandler(void)
{
    // Clear the GPIO interrupt.
   GPIOPinIntClear(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3);

   if(GPIOPinRead(GPIO_PORTE_BASE, GPIO_PIN_0) == 0)
		RIT128x96x4StringDraw("UP     ", 48, 32, 15);
   if(GPIOPinRead(GPIO_PORTE_BASE, GPIO_PIN_1) == 0)
		RIT128x96x4StringDraw("DOWN     ", 48, 32, 15);
   if(GPIOPinRead(GPIO_PORTE_BASE, GPIO_PIN_2) == 0)
		RIT128x96x4StringDraw("LEFT     ", 48, 32, 15);
   if(GPIOPinRead(GPIO_PORTE_BASE, GPIO_PIN_3) == 0)
		RIT128x96x4StringDraw("RIGHT     ", 48, 32, 15);
}
  • Ana Fonksiyon saat ayarlamaları yapılıyor
int
main(void)
{
    // Set the clocking to run directly from the crystal.
    SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
                   SYSCTL_XTAL_8MHZ);
  • Kullanılacak portlar aktif hale getiriliyor
    // Enable the peripherals used by this application.
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
  •  Butonlar giriş olarak ayarlanıyor. Butonların kesmelerinin düşen kenara göre ayarlanıyor.  Kesme aktif hale getiriliyor.
    GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_1);
    GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_1, GPIO_STRENGTH_2MA,
                     GPIO_PIN_TYPE_STD_WPU);
    GPIOIntTypeSet(GPIO_PORTF_BASE, GPIO_PIN_1, GPIO_FALLING_EDGE);
    GPIOPinIntEnable(GPIO_PORTF_BASE, GPIO_PIN_1);
    IntEnable(INT_GPIOF);

	// E portu ayarlanıyor.
    GPIOPinTypeGPIOInput(GPIO_PORTE_BASE, GPIO_PIN_0);
    GPIOPadConfigSet(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2
    				| GPIO_PIN_3, GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU);
    GPIOIntTypeSet(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2
    				| GPIO_PIN_3, GPIO_FALLING_EDGE);
    GPIOPinIntEnable(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3);
    IntEnable(INT_GPIOE);
  •  OLED ayarlanıyor
    RIT128x96x4Init(1000000);
    RIT128x96x4StringDraw("But. Int Ex.", 30, 16, 15);
  •  Sonsuz Döngü
    while(1)
    {
    }
}

startup_ccs.c

  • startup_ccs.c dosyası içerisinde kesmeler tanımlanır.
extern void GPIOFIntHandler(void);
extern void GPIOEIntHandler(void);
  • Vektor tablosuna gerekli yerlere eklemeler yapılır. Burada ilgili kesmelere fonksiyonlar tanımlanır.
    GPIOEIntHandler,                       // GPIO Port E
    GPIOFIntHandler,                        // GPIO Port F

= Kaynaklar =
[1] Texas Instruments, gpio_jtag.c, GPIO JTAG Recovery Örneği

[2] http://www.ti.com/tool/ek-lm3s8962

[3] http://www.ti.com/tool/ccstudio?DCMP=dsp_ccs_v4&HQS=Other%252BOT%252Bccs