ada tiga pembahasan di postingan ini supaya lebih faham, 1 memprogram led saja, 2 memprogram dengan pushbutton. semuanya memakai library HALL, 3 testing ke board. langsung saja disimak gan :D
1. STM32 GPIO Example HAL Write_Pin & Toggle Pin (Digital Output)
CubeMX Configurations)
1. Buka STM32CubeMX, buat proyek baru, dan pilih mikrokontroler target STM32F103C8T6. Perhatikan bahwa papan STM32 BluePill memiliki dua mikrokontroler target umum (STM32F103C8T6 & STM32F103C6T6). Jadi Anda perlu memilih mikrokontroler target yang tepat pada papan keras Anda.
2. Beralih ke halaman konfigurasi clock RCC dan aktifkan input osilator kristal eksternal HSE.
Pin LED: Klik pada pin GPIO PA8 dalam "Tampilan Pinout" dan pilih mode GPIO_Output. Catatan: Anda dapat menggunakan pin lain sesuai keinginan.
3. Pergi ke halaman konfigurasi clock, dan pilih HSE sebagai sumber clock, keluaran PLL, dan ketikkan 72MHz untuk frekuensi sistem yang diinginkan. Tekan tombol "Enter", dan biarkan aplikasi menyelesaikan pembagi/pemultiplier PLL yang diperlukan untuk mencapai laju clock yang diinginkan.
Alasan di balik ini: menggunakan osilator eksternal pada papan BluePill memberikan clock yang lebih akurat dan stabil, dan menggunakan 72MHz sebagai clock sistem mendorong mikrokontroler ke batasnya, sehingga kita mendapatkan performa maksimum darinya. Selama kita tidak peduli tentang konsumsi daya aplikasi.
4. Akhirnya, pergi ke Manajer Proyek, beri nama proyek Anda, pilih toolchain/IDE untuk menjadi STM32CubeIDE, dan klik tombol Generate Code.
Alat STM32CubeMX akan menghasilkan kode inisialisasi & file utama proyek, dan itu akan meminta Anda untuk membuka proyek di STM32CubeIDE. Pilih, buka proyek, dan mari kita lanjutkan ke langkah berikutnya.
Hasilkan Kode Inisialisasi Dari STM32 CubeMX
Kemudian, buka proyek di IDE yang Anda gunakan. Dan beralih ke file main.c. Jadi kita bisa mulai menulis kode aplikasi dan melihat kode inisialisasi yang dihasilkan oleh alat STM32 CubeMX.
5. "Salin kode di bawah ini ke dalam file main.c Anda, menggantikan kode yang dihasilkan secara otomatis dari awal file hingga fungsi main. Anda harus meninggalkan segala sesuatu yang ada di bawah fungsi main() dalam file main.c seperti adanya."
Kode Program
1. memakai Hall Toggle Pin
#include "main.h"
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while (1)
{
HAL_GPIO_TogglePin (GPIOA, GPIO_PIN_8);
HAL_Delay (100);
}
}
2. Memakai HAll Write pin
#include "main.h"
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while (1)
{
// LED ON
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET);
HAL_Delay(100);
// LED OFF
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET);
HAL_Delay(100);
}
}
2. STM32 HAL GPIO Read Pin (GPIO Input Example)
cubemx config
sam,hanya beda di step 2, yakni menambahkan gpio 9 sebagai input.
Kode Program
1. di bagian void main:
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while (1)
{
// IF Button Is Pressed
if(HAL_GPIO_ReadPin (GPIOA, GPIO_PIN_9))
{
// Set The LED ON!
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET);
}
else
{
// Else .. Turn LED OFF!
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET);
}
}
}
2. di bagiaan static void MX_GPIO_Init(void)
yakni untuk seting pengaturan gpionya
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET);
/*Configure GPIO pin : PA8 */
GPIO_InitStruct.Pin = GPIO_PIN_8;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/*Configure GPIO pin : PA9 */
GPIO_InitStruct.Pin = GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL; // <----- This Option
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
Seperti yang Anda lihat, pin input (A9) diatur ke mode Hi-Z atau High-Impedance, disebut no-pull (tanpa pull-up atau pull-down). Namun, Anda dapat mengatur pin untuk pull-up atau pull-down tergantung pada preferensi Anda.
Kami akan kembali ke dokumentasi HAL dan mencari bab GPIO, di mana kami akan menemukan daftar ini untuk API yang tersedia. API-API tersebut diberi tautan di dalam file dokumentasi, sehingga Anda dapat mengklik nama fungsi untuk langsung menuju ke deskripsi detailnya.
3. Langkah Testing
Lihat dan pastikan Pinoutnya
pastikan boot 0 ke 1 dan boot 1 ke0 saat memprogram dan kembalikan saat selesai prorgam
0 Response to "Tutorial 2: Memprogram STM32 dengan LED dan Pushbutton"
Posting Komentar
Berkomentarlah dengan baik ^_^