Giỏ hàng
Danh mục sản phẩm

Lập trình đầu vào input nút bấm STM32

Đăng bởi Buiprohd@gmail.com ngày bình luận

Trong hướng dẫn này, tôi sẽ giải thích cách cấu hình pin làm đầu vào từ nút. Tôi sẽ sử dụng nút người dùng được kết nối với PA0.

 

Đầu tiên, thực hiện dự án mới được gọi là nút hoặc bất cứ điều gì bạn muốn. Nếu bạn không biết cách tạo một dự án mới, bạn có thể học từ hướng dẫn 2 . Sau đó, đừng quên bao gồm thư viện cho dự án này.
#include "stm32f4xx.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_gpio.h"
Mỗi lần bạn muốn sử dụng GPIO, bạn phải định cấu hình RCC ( R eset và C lock C ontrol) cho mỗi GPIO.
// Enable peripheral clock to GPIOA module
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
// Enable peripheral clock to GPIOD module
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
GPIO_InitTypeDef là một cấu trúc được sử dụng cho giá trị khởi tạo đầu vào cho GPIO.
// This is struct for configure GPIO
GPIO_InitTypeDef GPIO_InitStruct;
Nút người dùng được kết nối với PA0 do đó bạn phải định cấu hình PA0 làm chân đầu vào. Cấu hình này được sử dụng điện trở kéo xuống tích hợp.
// User button is connected to PA0
// So, configure PA0 as an input pin
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_DOWN;
Cuối cùng, bạn phải khởi tạo GPIOA với hàm GPIO_Init, có hai tham số. Đầu tiên là GPIO được khởi tạo và thứ hai là giá trị khởi tạo mà chúng ta đã nhập trước đó cho GPIO_InitSturation.
// GPIOA initialization
GPIO_Init(GPIOA, &GPIO_InitStruct);

LED 6 được sử dụng cho đầu ra. Vì vậy, cấu hình PD15 như một chân đầu ra.

// Use LED 6 (blue) for output
// So, configure PD15 as an output pin
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;

// GPIOD initialization
GPIO_Init(GPIOD, &GPIO_InitStruct);
Việc khởi tạo đã xong, bây giờ hãy viết mã cho một chương trình đơn giản. Khi nhấn nút người dùng, sau đó LED 6 sẽ bật, nếu không thì đèn LED sẽ tắt.
while (1)
{
    // If button is pressed
    if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 1)
    {
        // Turn on LED 6
        GPIO_SetBits(GPIOD, GPIO_Pin_15);
    }
    else
    {
        // Turn off LED 6
        GPIO_ResetBits(GPIOD, GPIO_Pin_15);
    }
}

Cũ hơn Mới hơn