Showing posts with label Tutorial. Show all posts
Showing posts with label Tutorial. Show all posts

Sunday, October 6, 2013

Setting Clock Pada STM32F4 Discovery

Setting Clock Pada STM32F4 Discovery

Menurut ST32 Reference manual (RM0090) terdapat tiga sumber clock untuk system clock (SYSCLK), yaitu:
1.      High Speed Internal (HSI) oscillator.
HSI pada STM32F4 mempunyai nilai 16MHz. Keuntungan menggunakan HSI rangaian tidak perlu menambahkan external clock. Tetapi HIS ini mempunyai frekuensi dengan akurasi yang lebih rendah.
2.      High Speed External (HSE) oscillator.
Dengan memasang external clock dimungkinkan meningkatkan akurasi dari frekuensi clock pada STM32. Pemasangan external clock bisa bermacam-macam antara 4-16MHz. Pada STM32F4 Discovery bernilai 8MHz.
3.      Phase Locked Loop (PLL).
PLL digunakan untuk mengalikan (multiply) input dari sumber clock HIS atau HSE.
Dan dua sumber clock sekunder, yaitu:
1.      Low Speed Internal (LSI) oscillator.
32kHz internal clock yang digunakan pada watchdog dan RTC untuk Auto Wake Up dari Stop/Standbye mode (optional).
2.      Low Speed External (LSE) oscillator.
32.768kHz external crystal clock yang digunakan untuk RTC clock.

Konfigurasi clock
1.      Download clock configuration tool dari ST,
2.      Buka file excelnya (enable macros diperlukan).
Pada HSE OSC atur menjadi 8MHz. Pada HCLK atur menjadi 168MHz. Klik RUN dan pilih sumber clock yang akan digunakan. Pada kasus ini dpilih HSE. Kemudian klik Generate sehingga muncul file system_stm32f4xx.c.

3.      Gunakan file ini pada project.
4.      Pada stm32f4xx.c pastikan HSE bernilai 8MHz.
#if !defined  (HSE_VALUE)
  #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
#endif /* HSE_VALUE */
5.      Pada startup_stm32f4xx.c lepaskan komen pada fungsi SystemInit().
6.      Pada file yang sama terdapat fungsi
void Default_Reset_Handler(void)
tambahkan SystemInit() sebelum main().
7.      Sehingga pada program utama bias ditambahkan
            RCC_HSEConfig(RCC_HSE_ON);
            while(!RCC_WaitForHSEStartUp()){}




Berikut contoh program membuat led berkedip
#include "stm32f4xx.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_gpio.h"

void kedip (void);
void delay(__IO uint32_t count);
void tunda(unsigned int isi);

void RCC_inisialisasi(void)
{
                RCC_HSEConfig(RCC_HSE_ON);
                while(!RCC_WaitForHSEStartUp()){}
                RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
}

void GPIO_inisialisasi(void)
{
                GPIO_InitTypeDef  GPIO_InitStruct;
                GPIO_InitStruct.GPIO_Pin = GPIO_Pin_15 | GPIO_Pin_14 | GPIO_Pin_13 | GPIO_Pin_12;
                GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
                GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
                GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
                GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
                GPIO_Init(GPIOD, &GPIO_InitStruct);
}

int main(void)
{
                RCC_inisialisasi();
                GPIO_inisialisasi();
    while(1)
    {
                kedip();
    }
}

void kedip (void){
                GPIO_SetBits(GPIOD, GPIO_Pin_15 | GPIO_Pin_14 | GPIO_Pin_13 | GPIO_Pin_12);
                tunda(10);
                GPIO_ResetBits(GPIOD, GPIO_Pin_15 | GPIO_Pin_14 | GPIO_Pin_13 | GPIO_Pin_12);
                tunda(10);
}

void tunda(unsigned int isi)
{
                unsigned int i;
                for(i=0;i<isi;i++)
                                delay(0xFFFF);

}
void delay(__IO uint32_t count)
{
                while(count--){}
}


Tuesday, September 24, 2013

Tutorial Install CooCox CoIDE untuk STM32F4 Discovery



Tutorial Install CooCox CoIDE untuk STM32F4 Discovery

Coocox CoIDE merupakan salah satu IDE yang open source untuk membuat project, melakukan editing, debugging, dan compiling untuk ARM Cortex M series. Keuntungan menggunakan CoIDE adalah sangat mudah melakukan setting dan menambahkan file-file library ke dalam project dan terhubung pada forum Coocox sehingga bisa melihat contoh-contoh program yang sudah dibuat oleh orang lain. Kerugiannya adalah CoIDE hanya tersedia untuk operating system Windows (untuk saat ini).

Beberapa file yang dibutuhkan:
1.      Coocox CoIDE bisa di download di
2.      Toolchain ARM GCC untuk windows di download di
3.      ST-Link or ST-Link/V2 Driver karena pada tutorial ini menggunakan board STM32F4 Discovery.

Langkah-langkahnya seperti berikut:

1.      Pastikan driver ST-Link telah terinstal dan modul STM32F4 Discovery siap digunakan (bisa dicheck menggunakan ST-Link Utility dengan memilih Target -> Connect).




2.      Install atau ekstrak GCC ARM

3.      Install Coocox CoIDE

Kemudian sambungkan Coocox CoIDE dengan ARM GCC dengan cara Pilih Project -> Select Toolchain Path
Dan pilih tempat file yang tadi telah diinstall/diekstrak kemudian pilih OK.




Untuk membuat Project baru pilih Project -> New Project.
Isikan nama project, kemudian pilih chip atau board (karena pada CooCox CoIDE belum terdapat board STM32F4 Discovery maka pilih chip STM32F4VG)


Kemudian pada repository centanglah beberapa library yang dibutuhkan (missal M4 CMSIS Core, CMIS Boot, RCC, GPIO, dll) sehingga pada sebelah kanan library yang dicentang akan muncul dan membuat file tersebut pada folder tempat anda membuat project sebelumnya.
Program utama bisa ditulis pada main.c
Untuk mengenerate file .hex pilih Build dan untuk mendownloadnya pada modul pilih Download Code to Flash.
Berikut contoh project membuat led pada modul STM32F4 Discovery berkedip https://student.eepis-its.edu/~robobip/%5b00%5d%20gpio.rar