#include <stm32l0xx_hal.h>
int main(void)
{ // Khởi tạo
// khởi tạo HAL
HAL_Init();
// Kích hoạt GPIO
__HAL_RCC_GPIOA_CLK_ENABLE();
// Tạo form struct cho chân PIN_3 ( cấu hình cho chân 3 :LED )
GPIO_InitTypeDef GPIO_InitStruct ={0};
//Trong struct sẽ có 4 thông tin cần có
// Chon chân (Pin)
GPIO_InitStruct.Pin = GPIO_PIN_3;
// Chọn mode : các mode phổ biến : GPIO_MODE_OUTPUT_PP , GPIO_MODE_INPUT,GPIO_MODE_AF , GPIO_MODE_ANALOG)
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
// Chọn Pull : Có 3 kiểu : GPIO_NOPULL :không kéo , GPIO_PULLUP : kéo lên (mặc định = 1); GPIO_PULLDOWN :kéo xuống (mặc định = 0)
GPIO_InitStruct.Pull = GPIO_NOPULL;
// Chon tốc độ (Speed) : Là tốc độ chuyển trạng thái chân : có 2 kiểu : GPTO_SPEED_FREQ_LOW và GPIO_SPEED_FREQ_HIGH
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
// HAL lấy config, ghi vào thanh ghi
HAL_GPIO_Init (GPIOB, &GPIO_InitStruct);
//Cấu hình cho nút bấm
GPIO_InitStruct.Pin = GPIO_PIN_2;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
while (1)
{
// Điều kiển led
// điều kiển led bật
// thông tin trong ngoặc : công port (A,B,C,D) , Chân pin , trạng thái pin
//HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3,GPIO_PIN_SET);
// Điều kiển led tắt
//HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_RESET);
// nhấp nháy (chỉ cần khai báo cổng port và chân pin)
// HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_3);
// HAL_Delay(500);
if (HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_4) == GPIO_PIN_SET)// chuyển trạng thái từ không bấm ->Bấm
{
// ấn nút -> bật led
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_SET);
}
else
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_RESET);
}
}
}Loading
st-nucleo-l031k6
st-nucleo-l031k6