Anda di halaman 1dari 20

[2015]

PENS

Fairuzy Qonitah
2210131016

[Pemrograman STM32F4-Discovery]
General Purpose Input Output STM32F4-Discovery
General Purpose Input Output (GPIO)

Tujuan
Setelah menyelesaikan modul ini peserta mampu:
 Memahami fungsi register-register yang berhubungan dengan pin
Input/Output
 Meng-inisialisai pin Input/Output
 Membuat program sedehana dengan memanfaatkan pin Input/Output

Dasar Teori
Semua pin di STM32F4xx adaah GPIO (General Purpuse Input/Output) yang
berfungsi untuk berkomunikasi dengan perangkat yang lainnya. Untuk meningkatkan
fungsinya, pin tersebut mempunyai tidak hanya satu fungsi dan dapat dipilih dari
pengaturan yang diinginkan. Misalnya selain I/O, pin tersebut juga berfungsi sebagai pin
TX/RX dari USART, Analog Input dan lain-lain. Sumber clock yang digunakan untuk
mengaktifkannya tergantung pada fungsinya.
Dalam STM32F4 kita perlu menginisialisasi clock untuk setiap periperal sebelum
menggunakannya. Hal ini dapat dilakukan dengan menggunakan RCC – Reset and Clock
Control. stm32f4xx memiliki dua jenis bus : AHB (Advance High Performance Bus) dan
APB (Advance Peripheral Bus). Beberapa periperal terhubung dengan AHB seperti
GPIO, sementara yang lainnya terhubung dengan APB, seperti I2C. Ketika port digunakan
untuk logika 0 atau 1, maka sumber clock berasal dari AHB1 (Advance High
Performance Bus 1).
AHB1 harus diaktifkan atau di enable sebelum port GPIO akan digunakan.
Terdapat 2 langkah untuk mengaktifkannya, yaitu
 Tentukan port mana yang akan digunakan.
 Enable clock dari port yang digunakan.
Berikut adalah contoh perintah untuk mengaktifkan clock periperal GPIO pada port D dan
USART1, dengan menggunakan standart periperal library:
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);

Seluruh perintah terkait dengan aktivasi clock dapat dilihat dalam standart
peripheral library file driver – stm32f4xx_rcc.c. Ketika ingin mengaktifkan port yang
lainnya maka perintah untuk meng-enable hanya cukup dengan mengganti “D” pada
GPIOD, tergantung pada port yang akan digunakan. Pada STM32F4 Discovery
mempunyai enam buah port yaitu:

Pemrograman dan aplikasi mikrokontroller ARM STM33F407VG | 1


 GPIOA
 GPIOB
 GPIOC
 GPIOD
 GPIOE
 GPIOH

GPIOA sampai GPIOE mempunyai 16 pin dan GPIOH hanya mempunyai 2 pin.
Penomoran pin dimulai dari 0 sampai dengan 15, dengan nomor 0 adalah LSB (Least
significant Bit) dan nomor 15 adalah MSB (Most Significant Bit). Pada STM32F4-
Discovery terdapat 4 buah pin output yang terhubung dengan LED, yaitu di PORTD pin
15, pin 14, pin 13 dan pin 12. Hampir semua pin input digital dari chip stm32f4xx adalah
5v tolerant, artinya pin input dapat menerima tegangan 5v walaupun chip bekerja pada
tegangan 3v. berikut adalah stuktur dasar dai pin port I/O 5v tolerant.

Gambar 2. 1. Stuktur dasar bit I/O port 5 volt tolerant

Inisialisasi
Langkah pertama untuk inisialisasi adalah mendefinisikan data struktur dari GPIO yang
disebut GPIO_InitStruct. Perintah yang digunakan adalah:
GPIO_InitTypeDef GPIO_InitStruct;

Terdapat lima data di dalam struktur tersebut, yaitu:


 GPIO_Pin_xx : menentukan pin port yang digunakan
 GPIO_mode_xx : Mode yang akan digunakan
 GPIO_Speed_xx : Berapa kecepatan clock yang akan dioperasikan
 GPIO_Otype_xx : Tipe output
 GPIO_Pupd_xx : configurasi pin output

Pemrograman dan aplikasi mikrokontroller ARM STM33F407VG | 2


GPIO_Pin_xx : menentukan pin-pin yang ingin digunakan. Masing-masing pin pin yang
digunakan didefinisikan pada struktur ini. Jika semua pin dalam satu port dikonfigurasi
yang sama dapat menggunakan perintah GPIO_Pin_All. Berikut perintah jika tidak
menggunakan semua pin, contoh pada kasus ini hanya di pin PORTD 12 sampai 15 yang
didefinisikan.
GPIO_InitStruct.GPIO_Pin =
GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;

GPIO_Mode_xx : mendefinisikan fungsi pin. Terdapat empat mode, yaitu:


 IN : input
 OUT : output
 AF : Alternate Function
 AN : Analog
Untuk perintah yang digunakan adalah:
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;

GPIO_Otype_xx : mendefinikan bagaimana output transistor. Terdapat dua tipe, yaitu:


 PP : Konfigurasi push/pull (TTL)
 OD : Open Drain
Pada kasus ini yang menggunakan ouput LED dengan aktif high. Perintah yang digunakan
adalah
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;

GPIO_Pupd_xx : mendefinisikan bagaimana resistor terpasang di pin output. Terdapat


dua konfigurasi, yaitu:
 UP : menambahkan resistor pul-up di pin output, dengan demikian kondisi
normal adalah high.
 DOWN : menambahkan resistor pul-up di pin output, dengan demikian
kondisi normal adalah low.
 NOPULL : tidak terhubung dengan internal resistor.
Contoh jika GPIO pin sebagai input dan tidak terhubung dengan internal resistor,
perintahnya adalah:
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;

GPIO_Speed_xx : mendefinisikan kecepatan transisi dari GPIO. Semua konfigurasi


kecepatan pada port tersebut akan dibuat sama, terdapat empat kecepatan yaitu:
 2 MHz
 25 MHz

Pemrograman dan aplikasi mikrokontroller ARM STM33F407VG | 3


 50 MHz
 100 MHz
Sehingga perintahnya adalah:
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;

Selanjutnya semua parameter dari struktur GPIO di copykan ke dalam konfigurasi


register GPIO, perintah yang digunakan adalah:
GPIO_Init(GPIOD, &GPIO_InitStruct);

Pada perintah diatas tanda “&” menngidentifikasikan alamat data (struktur GPIO).
Contoh konfigurasi GPIO secara lengkap, seperti berikut ini:
void initGPIO (void){
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
GPIO_InitTypeDef(GPIO_InitStruct);
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_15 | GPIO_Pin_14 |
GPIO_Pin_13 | GPIO_Pin_12;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStruct);
}

Pada file stm32f4xx_gpio.h terdapat method untuk memudahkan mengakses I/O seperti
dibawah ini.
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin,
BitAction BitVal);
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

Contoh:
Program menyalakan LED di PORTD 12-15:
GPIO_SetBits(GPIOD,GPIO_Pin_12| GPIO_Pin_13| GPIO_Pin_14|
GPIO_Pin_15);
GPIO_SetBits(GPIOD, 0xF000);
GPIO_WriteBit(GPIOD, 0xF000, 1);
GPIO_Write(GPIOD, 0xF000);

Pemrograman dan aplikasi mikrokontroller ARM STM33F407VG | 4


program mematikan LED di PORT 12-15:
GPIO_ResetBits(GPIOD,GPIO_Pin_12| GPIO_Pin_13| GPIO_Pin_14|
GPIO_Pin_15);
GPIO_ResetBits(GPIOD, 0xF000);
GPIO_WriteBit(GPIOD, 0xF000, 0);
GPIO_Write(GPIOD, 0x0000);

Percobaan
Peralatan.
1. IDE Keil uVision MDK v5
2. Board STM32F4-Discovery
3. ST-Link debugger

Prosedur Praktikum
1. Pada modul ini akan menggunakan port GPIO, sehingga pastikan file libary
dari GPIO yaitu “stm32f4xx_gpio.h” sudah masuk dalam satu project yang
dibuat. Atau jika belum ada, dapat anda tambahkan di “Manage Run-Time

Environmet” atau klik .


2. Pada menu Device | StdPeriph Driver pilih GPIO. Dan pastikan tidak ada
komentar pada jendela “Validasi output”, jika ada komentar maka cukup klik
botton resolve.

Project 1 Menyalakan LED pada PORT PD12-15


#include “stm32f4xx.h”
#include “stm32f4xx_rcc.h”
#include “stm32f4xx_gpio.h”

void GPIO_Initialize(void) {
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Otype = GPIO_Otype_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13
|GPIO_Pin_14 |GPIO_Pin_15;
GPIO_Init(GPIOD, &GPIO_InitStructure);
}
int main(void){
GPIO_Initialize();
for(;;){
GPIO_SetBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14
| GPIO_Pin_15 );
}
}

Pemrograman dan aplikasi mikrokontroller ARM STM33F407VG | 5


Project 2 Menampilkan LED kedip
#include “stm32f4xx.h”
#include “stm32f4xx_rcc.h”
#include “stm32f4xx_gpio.h”

void delay(uint32_t i){


while(i--){
}
}

void GPIO_Initialize(void) {
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13
|GPIO_Pin_14 |GPIO_Pin_15;
GPIO_Init(GPIOD, &GPIO_InitStructure);
}

int main(void){
GPIO_Initialize();
for(;;){
GPIO_SetBits(GPIOD, GPIO_Pin_12| GPIO_Pin_13 |GPIO_Pin_14
|GPIO_Pin_15);
delay(10000000);
GPIO_ResetBits(GPIOD, GPIO_Pin_12| GPIO_Pin_13 |GPIO_Pin_14
|GPIO_Pin_15);
delay(10000000);
}
}

Project 3 Membaca masukan push botton dan ditampilkan di LED


#include "stm32f4xx.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_gpio.h"

void GPIO_Initialize(void) {
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13
|GPIO_Pin_14 |GPIO_Pin_15;
GPIO_Init(GPIOD, &GPIO_InitStructure);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}

Pemrograman dan aplikasi mikrokontroller ARM STM33F407VG | 6


int main(void){
uint8_t A;
GPIO_Initialize();
for(;;){
A=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);
if(A) GPIO_SetBits(GPIOD, GPIO_Pin_12);
else GPIO_ResetBits(GPIOD, GPIO_Pin_12);

}
}

Project 4 Blink Led dengan delay systick


Fungsi penting dalam aplikasi berbasis MCU adalah fungsi delay. Waktu sangat
penting dalam aplikasi tersebut, sehinga aplikasi tidak dapat menyala tanpa fungsi
penundaan yang baik. Sebagian besar waktu dapat bekerja untuk pengaturan satu jam
tetapi untuk bekerja dalam semua frekuensi jam tersebut diperlukan beberapa program
lanjutan dalam assembler.
STM32F4 memiliki sistem timer 24-bit (SysTick) sangat bagus yang menghitung
mundur dari nilai isi ulang ke nol. Satu-satunya hal yang perlu diingat adalah bahwa hal
itu memberikan peringatan dan mempertahankan keadaan ketika mencapai nol. Ketika
prosesor dihentikan untuk debugging maka tidak terjadi pengurangan. Fungsi SysTick
dapat ditemukan di core_cm4.h file header ketika menggunakanprogram assembler.
untuk menetapkan nilai preload diperlukan fungsi SysTick_Config sedangakn untuk
fungsi interrupt diperlukan fungsi SysTick_Handler.
#include "stm32f4xx.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_gpio.h"

static __IO uint32_t sysTickCounter;


void SysTick_Init(void) {
/****************************************
*SystemFrequency/1000 1ms *
*SystemFrequency/100000 10us *
*SystemFrequency/1000000 1us *
*****************************************/
while (SysTick_Config(SystemCoreClock / 1000000) != 0) {
} // satu SysTick menunda hasil sekarang sebesar 1us
}

/**
* Metode yang perlu disebut dalam SysTick_Handler
*/
void TimeTick_Decrement(void) {
if (sysTickCounter != 0x00) {
sysTickCounter--;
}
}

void delay_us(u32 n) {
sysTickCounter = n;

Pemrograman dan aplikasi mikrokontroller ARM STM33F407VG | 7


while (sysTickCounter != 0) {
}
}

void delay_1ms(void) {
sysTickCounter = 1000;
while (sysTickCounter != 0) {
}
}

void delay_ms(u32 n) {
while (n--) {
delay_1ms();
}
}

void SysTick_Handler(){
// Vector penundaan SysTick
TimeTick_Decrement();
}
void GPIO_Initialize(void) {
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13
|GPIO_Pin_14 |GPIO_Pin_15;
GPIO_Init(GPIOD, &GPIO_InitStructure);
}

int main(void){
GPIO_Initialize();
SysTick_Init();
for(;;){
GPIO_ToggleBits(GPIOD, GPIO_Pin_12);
delay_ms(500);
}
}

Project 4 Menambahkan Library


Pada project ini bertujuan untuk membuat library sendiri dan menambahkannya
dalam main program yang lelah dibuat. Terdapat dua tipe file yang harus dibuat yaitu .c
dan .h untuk membuat project ini. Sebagai contoh library yang dibuat adalah delay
menggunakan systick. Berikut langkah-langkahnya:
a. Buat file delay.c
#include "../myLib/delay/delay.h"

static __IO uint32_t sysTickCounter;


void SysTick_Init(void) {
/****************************************
*SystemFrequency/1000 1ms *
*SystemFrequency/100000 10us *

Pemrograman dan aplikasi mikrokontroller ARM STM33F407VG | 8


*SystemFrequency/1000000 1us *
*****************************************/
while (SysTick_Config(SystemCoreClock / 1000000) != 0) {
} // One SysTick interrupt now equals 1us
}
/* This method needs to be called in the SysTick_Handler */
void TimeTick_Decrement(void) {
if (sysTickCounter != 0x00) {
sysTickCounter--;
}
}
void delay_us(u32 n) {
sysTickCounter = n;
while (sysTickCounter != 0) {
}
}
void delay_1ms(void) {
sysTickCounter = 1000;
while (sysTickCounter != 0) {
}
}
void delay_ms(u32 n) {
while (n--) {
delay_1ms();
}
}
Pada perintah #include "../myLib/delay/delay.h" menunjukan letak dari file
delay.h terhadap folder project yang kita gunakan. File “delay.h” disimpan di folder
“delay” dan folder delay terletak di dalam folder “myLib”. Letak folder myLib harus
berada dalam satu folder project.

b. Buat file delay.h


File delay.h berisi nama rutin-rutin yang ada dalam file delay.c
#ifndef __DELAY_H
#define __DELAY_H
#include "stm32f4xx.h"

void SysTick_Init(void);
void TimeTick_Decrement(void);
void delay_nus(u32 n);
void delay_1ms(void);
void delay_ms(u32 n);
#endif

Tugas
1. Buatlah program jika Push Botton ditekan maka semua LED akan nyala, dan
bila ada penekanan lagi maka semua LED akan mati. Begitu seterusnya.
2. Buatlah program, pada kondisi awal semua LED pada kondisi mati, LED akan
nyala satu per satu ketika PB ditekan sampai nyala semua, dan ketika semua
nyala LED akan mati satu per satu ketika PB ditekan.

Pemrograman dan aplikasi mikrokontroller ARM STM33F407VG | 9


3. Buatlah program jika Push Botton tidak di tekan maka nyala LED dari PORTD
12 – 13 – 14 – 15. Jika tidak maka nyala LED menjadi sebaliknya. Perubahan
arah nyala LED dapat terjadi kapan saja, ketika PB ditekan maka arah nyala
LED langsung berubah.
4. Buatlah program dimana jumlah penekanan push botton sama dengan 2n LED
berkedip. Jika jumlah penekanan sudah sampai 6 kali maka kondisi kembali
ke awal.

Catatan:
Tugas langsung dikumpulkan bersama laporan sementara.

Pemrograman dan aplikasi mikrokontroller ARM STM33F407VG | 10


Hasil Praktikum dan Analisa
Project 1 Menyalakan LED pada PORT PD12-15

Pada percobaan pertama ini akan menyalakan 4 buah LED pada Port 12, 13, 14, 15.
Pertama harus melakukan inisialisasi, yaitu mendefinisikan data struktur dari GPIO yang
disebut GPIO_InitStruct. Lalu pada baris program selanjutnya yaitu GPIO_Mode =
GPIO_Mode_OUT, perintah tersebut digunakan untuk mengatur mode yang digunakan yaitu
mode OUT. Kemudian kecepatan clock diatur dengan perintah GPIO_Speed sebesar 50MHz.
GPIO_Otype_PP mendefinisikan bagaimana output transistor dengan konfigurasi push/pull.
Lalu, GPIO_Pupd_UP mendefinisikan bagaimana resistor terpasang di pin output dengan
konfigurasi UP yaitu menambahkan ressistor pull-up di pin output, dengan demikian kondisi
normal adalah high. GPIO_Pin digunakan untuk menentukan pin port yang digunakan, pada
percobaan ini akan menyalakan 4 LED, sehingga port yang digunakan adalah GPIO_Pin_12
sampai GPIO_Pin_15.
Pada program main, akan memanggil fungsi GPIO_Initialize, lalu melakukan looping
untuk fungsi projek1(), yang berisi perintah SetBits yaitu untuk menyalakan LED.

Project 2 Menampilkan LED kedip

Pemrograman dan aplikasi mikrokontroller ARM STM33F407VG | 11


Pada percobaan kedua ini menggunakan inisialisasi yang sama dengan percobaan
satu, tetapi ditambahkan dengan fungsi delay untuk menunda / memperlama suatu perintah
yang digunakan untuk mendapatkan efek LED yang berkedip yang diinginkan. GPIO_SetBits
digunakan untuk menyalakan LED pada port 12 - 15, kemudian diikuti dengan
delay(10000000) sehingga saat program mengeksekusi perintah SetBits kemudian akan
ditahan selama 10000000 satuan waktu. GPIO_ResetBits digunakan untuk mematikan LED
yang diatur untuk port 12 - 15, lalu delay(10000000) akan menahan LED mati selama
10000000 satuan waktu. Sehingga yang dihasilkan, LED akan menyala selama beberapa detik,
kemudian akan mati selama beberapa detik, dan dilakukan proses seperti itu berulang - ulang.

Project 3 Membaca masukan push botton dan ditampilkan di LED

Pemrograman dan aplikasi mikrokontroller ARM STM33F407VG | 12


Pada percobaan ketiga ini, program digunakan untuk membaca masukan dari push
button dan ditampilkan di LED, pada program ini dideklarasikan variabel A merupakan
GPIO_ReadInputDataBit yang berfungsi membaca input dari push button pada port 0.
Kemudian terdapat dua kondisi, kondisi pertama yaitu jika A dieksekusi, maka program akan
mengerjakan GPIO_SetBits, selain itu maka program akan menjalankan perintah
GPIO_ResetBits. Pada program main, dilakukan looping pada fungsi projek3(). Maka saat push
button ditekan maka 4 LED akan menyala, dan jika push button dilepaskan maka LED akan
mati.

Project 4 Blink LED dengan delay systick

Pemrograman dan aplikasi mikrokontroller ARM STM33F407VG | 13


Pada praktukum 4 yaitu melakukan fungsi dari penggunaan delay. dimana delay ini
digunakan sebagai penundaan dari suatu kondisi. Pada STM32F4 ini memiliki system timer
yang sangat bagus untuk menghitung waktu mundur atau mulainya yang nilai mulai dari nol
(0). Untuk program delay sendiri perlu ada beberapa function, seperti SysTick Handler untuk
menentukan Counter Decrement nya, kemudian penundaan selama 1ms.

Pemrograman dan aplikasi mikrokontroller ARM STM33F407VG | 14


Kemudian Penambahan library, dimana membuat library sendiri dan menambahkan
dalam main program. Dimana yang dibuat file .c dan .h (header). Program .c ini merupakan
program secara keseluruhan dari delay tersebut. Dan program tersebut sama dengan
program sebelumnya. Untuk pembuatan file delay.h (header), merupakan program sebagai
jembatan antar .c saja, dimana program ini hanya berisi judul atau title dari function yang
terdapat pada delay.c.
Program yang dipanggil nantinya adalah delay.h, dan pada function yang terdapat
pada delay.h terhubung langsung dengan function yang terdapat pada delay.c, sesuai dengan
nama function yang sama.

Project 4 Menambah Library

Pada perintah #include "../myLib/delay/delay.h" menunjukan letak dari file


delay.h terhadap folder project yang kita gunakan. File “delay.h” disimpan di folder
“delay” dan folder delay terletak di dalam folder “myLib”. Letak folder myLib harus
berada dalam satu folder project.
c. Buat file delay.h
File delay.h berisi nama rutin-rutin yang ada dalam file delay.c

Pemrograman dan aplikasi mikrokontroller ARM STM33F407VG | 15


Pada percobaan ini dibuatlah library sendiri berupa delay. Library akan diinputkan
dengan format #include (lokasi file). Pada program delay.h berisi rutin-rutin yang ada dalam
file delay.c

Pemrograman dan aplikasi mikrokontroller ARM STM33F407VG | 16


Tugas

Pemrograman dan aplikasi mikrokontroller ARM STM33F407VG | 17


Pemrograman dan aplikasi mikrokontroller ARM STM33F407VG | 18
Kesimpulan
Dari percobaan yang telah dilakukan, dapat disimpulkan bahwa:
 Terdapat lima data yang perlu diatur di dalam struktur GPIO, yaitu:
1. GPIO_Pin_xx : menentukan pin port yang digunakan
2. GPIO_mode_xx : Mode yang akan digunakan
3. GPIO_Speed_xx : Berapa kecepatan clock yang akan dioperasikan
4. GPIO_Otype_xx : Tipe output
5. GPIO_Pupd_xx : configurasi pin output
 Perintah-perintah untuk mengakses I/O diantaranya:
1. Setbits : untuk menset nilai bit pada pin dari nilai awalnya
2. Resetbit : untuk mengembalikan nilai bit ke kondisi normal
3. Tooglebits : untuk membalik nilai bit
4. ReadInputDataBits : untuk membaca data bit dari input
 Systick digunakan untuk memberi delay yang akurat pada program sesuai dengan
jumlah loop yang diberikan.
 Untuk membuat library sendiri harus diberikan file .c dan .h yang dipanggil dengan
#include yang menuju ke folder tempat library.

Pemrograman dan aplikasi mikrokontroller ARM STM33F407VG | 19

Anda mungkin juga menyukai