Senin, 26 September 2016

STM32F4 Discovery GPIO dengan menggunakan CoIDE dari CooCox

Hari ini saya iseng iseng membuka kenangan lama dari board STM32F4 Discovery yang sudah lama menghuni plastik kresek koleksi komponen komponen jaman dahulu kala. Celakanya, saya nyari nyari Keil di laptop kok g ada, ternyata sudah saya uninstall dan saya g punya backup installer. Akhirnya ya sudah lah, cari alternatif apa yang ada di hardisk, dan akhirnya saya menemukan CoIDE dari CooCox, dan memang bener bener cocox IDE ini. Saya rasa kok g seribet keil dalam add library dan semacamnya. Ok lah, kita langsung ke pembahasan.

CoIDE adalah IDE keluaran CooCox, yang kita tahu coocox ini yang bikin RTOS, yang bisa digunakan untuk develepo berbagai macam chip mulai dari ARM, Atmel, Energy Micro, Freescale, Holtex, TI, NXP, Nuvoton dsb. Dan yang lebih bagus lagi, software ini free. Benar benar free. Lihat saja screenshot dibawah ini. Untuk mendowload installernya, silakan ke www.coocox.org. 


Ok lah, kita langsung saja mencoba CoIDE. Selesai mengisntall, yang cara mengisntal nya juga biasa saja, kita akan membuat project baru yang sederhana, yaitu GPIO. Berikut step by step cara membuat project baru di CoIDE.
  1. Cari Klik Tab Project, dan klik New Project.
  2. Selanjutanya, kita masuk ke nama project. Disini saya memakai nama "gpio" sebagai nama project, dan tick  use default path.
  3.  Disini, kita diberi pilihan kita akan menggunakan chip, atau board jadi. Disini saya menggunakan STM32F4 discovery. Searusnya saya memilih board, tapi ternyata STM32F4 tidak ada pilihan nya di board. Jadi kita masuk chip saja.
  4. Kemudian pilih chip yang kita gunakan, di STM32F4 Discovery menggunakan STM32F407VG sebagai chip utamanya.
  5. Daaaannnn....ini lah hasilnya. Wellcome to new project. Kelihatan cukup menarik bukan. disitu tersedia component, yang berupa library, yang bisa kita gunakan untuk membuat project. Pada awalnya saya pikir, software ini seperti CodevisionAVR yang akan mengenerate script otomatis untuk kita. Tapi ternyata tidak, walaupun kita diberi pilihan library di situ, kita tetap akan menemukan main.c yang kosong. Tapi lumayan lah, kita tidak perlu menambah kan file file library ke folder project kita dengan cara manual. Untuk projcet GPIO ini, saya hanya menggunakan library yang sama butuhkan. Disini saya menggunakan C Library, M4 CMSIS Core, CMSIS BBOT, RCC, GPIO, dan MISC. Bagusnya software ini, dia akan memberi peringatan ketika kita memerlukan untuk menambah library lain yang kurang, jika kita akan memilih suatu library. semoga ente yang baca bakal paham lah apa maksud ane.
  6. Langsung saja kita ke main.c. Saya akan membuat aplikasi GPIO sederhana yang yang terdiri dari led dan button yang sudah ada di board STM32F4 Discovery.Berikut sedikit penjelas wiring dari bosrd discovery ini.
                 Push button biru terhubung ke      Port A0
                 led green(LD4)                               PD12
                 led orange(LD3)                            PD13
                 led red(LD5)                                  PD14
                 led blue (LD6)                               PD15
 Dan berikut script project gpio saya. Disini saya kayaknya tidak perlu saya jelaskan, lihat saja lah
dibawah.

#include "stm32f4xx.h" //library stm32f4
#include "stm32f4xx_gpio.h"//library gpio
#include "stm32f4xx_rcc.h" //library reset dan clok

GPIO_InitTypeDef  GPIO_InitStructure;
void Delay(__IO uint32_t nCount);
uint8_t d;

int main(void)
{

    /*led di board stm32f4 discovery terhubung ke Port D dengan konfigurasi
         * ----led green(LD4)    PD12
         * ----led orange(LD3)   PD13
         * ----led red(LD5)    PD14
         * ----led blue (LD6)    PD15
         *
         * push button di board stm32f4 discovery
         * ---- push button user warna biru PA0
         * */

    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); // enable clock untuk portD
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); // enable clock untuk portA

    /* Configure PD0, PD12, PD13, PD14 and PD15 in output pushpull mode */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOD, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
    GPIO_Init(GPIOA,&GPIO_InitStructure);
    while(1)
    {
        //jika Button ditekan, maka LED biru dan merah akan ON. jika tidak ditekan,
        // LED hijau dan orange    akan menyala.
 
        if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)!=Bit_SET)
        {
            GPIO_SetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13);
            GPIO_ResetBits(GPIOD, GPIO_Pin_14|GPIO_Pin_15);
        }
        else
        {
            GPIO_ResetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13);
            GPIO_SetBits(GPIOD, GPIO_Pin_14|GPIO_Pin_15);
        }
        //Delay(0x0FFFFF);
    }
}
void Delay(__IO uint32_t nCount)
{
  while(nCount--)
  {
 }
}


Setelah itu, bisa di compile dan di download. Sebelum kita download file ke chip. ada sedikit yag perlu di
setting. SIlakan klik tab "View"  --->>> Configuration.Ada sedikit perubahan yang saya lakukan. Yaitu di
tab Link, saya akan menggunkan "Use Base C Library". Dan di tab "Debugger", saya menggunakan "STLink" port "SWD" yang merupakan fitur bawaan STM32F4 Discovery. Lebih jelasnya, silakan melihat gambar dibawah ini:


                                                               Tampilan tab "Link"


                                                             Tampilan tab "Debugger"

Hasilnya, monggo cek video berikut. Ketika puh button biru ditekan LED btu dan merah akan menyala. Simple bukan. hehehe...


Cukup lah, g usah banyak banyak. Capek ngetiknya.







Tidak ada komentar: