armprogramming.comHướng dẫn khám phá STM32F4 - GPIO - cánh tay lập trìnhbởi Sefa Veske · 27 tháng 1 năm 2015Tôi cố gắng để giải thích GPIO cho gia đình STM32F4xx. Tôi sẽ sử dụng phiên bản STM32F4 Discovery và Keil 5.13. Hội đồng quản trị phát hiện sử dụng STM32F407VGT6 và bao gồm các gia tốc, microphone kỹ thuật số, DAC, tám dẫn và hai nút nhấn. Chúng tôi có thể sử dụng tài liệu tham khảo STM32F4 Discovery manuel và thông số kỹ thuật, bạn có thể tải về tại trang web st.GPIO có nghĩa là Đầu ra đầu vào mục đích chungGPIO ĐĂNG KÝGPIO cảng chế độ đăng ký (GPIOx_MODER)Này đăng ký 32 bit, xác định các chế độ hoạt động. Mỗi cổng được chỉ ra bởi hai pin. Mỗi cổng có thể được chọn như là một kỹ thuật số đầu vào, đầu ra kỹ thuật số, thay thế chức năng hoặc tương tự.Port_mode_registerPort_mode_register_valueGPIO cổng đầu ra loại đăng ký (GPIOx_OTYPER)Đăng ký này xác định loại ra chân hoặc đẩy-kéo hoặc mở cống. Đặt lại giá trị là đẩy-kéo. Đây là một đăng ký 32 bit nhưng chỉ đầu tiên 16 bit được sử dụng.port_output_type_registerpusppullTốc độ đầu ra cổng GPIO đăng ký (GPIOx_OSPEEDR)Đăng ký này xác định tốc độ đầu ra của cảng. Tốc độ đầu ra cổng có thể được điều chỉnh để tiết kiệm năng lượng. Tần số hoạt động cho mỗi pin được đại diện bởi hai bit.port_output_speed_regport_output_speed_reg_valueGPIO port pull-pick-up/kéo xuống đăng ký (GPIOx_PUPDR)Đăng ký này xác định điện trở pull-pick-up/thả xuống chế độ cho các chân. Mỗi cổng được chỉ ra bởi hai pin.port_pupdr_reg pupdGPIO cổng đầu vào dữ liệu đăng ký (GPIOx_IDR)Đây là một đăng ký 32 bit nhưng chỉ sử dụng 16 bit. Đăng ký chỉ đọc và được sử dụng cho dữ liệu-entry.input_data_regGPIO cổng đầu ra dữ liệu đăng ký (GPIOx_ODR)Đây là một đăng ký 32 bit nhưng chỉ sử dụng 16 bit. Những bit có thể được đọc và viết bằng phần mềm. Các giá trị của cổng đầu ra xác định bằng sản lượng dữ liệu register.output_data_regGPIO port bit bộ/thiết lập lại đăng ký (GPIOx_BSRR)Đăng ký này là 32 bit. Đây là một đăng ký duy nhất ghi. Sử dụng cho các bit cấp quyền truy cập vào cổng đầu ra. 16-bit đầu tiên được sử dụng để thiết lập mã pin giá trị và 16 bit cuối cùng được sử dụng để thiết lập lại pin value.bssr_regGPIO thay thế chức năng đăng ký thấpMỗi pin có thể được sử dụng cho các chức năng khác nhau ngoài các yếu tố đầu vào kỹ thuật số và kết quả đầu ra. Có hai thay thế chức năng đăng ký; GPIO thay thế chức năng đăng ký thấp GPIO thay thế chức năng đăng ký cao. GPIO mã ví dụTôi sẽ thường sử dụng thư viện StdPeriph. stm32f4xx_gpio.h chức năng hiển thị dưới đây;/ * Chức năng được sử dụng để thiết lập cấu hình GPIO để mặc định cài lại nước *** /void GPIO_DeInit (GPIO_TypeDef * GPIOx);/ * Khởi tạo và cấu hình các chức năng *** /void GPIO_Init (GPIO_TypeDef * GPIOx, GPIO_InitTypeDef * GPIO_InitStruct);void GPIO_StructInit (GPIO_InitTypeDef * GPIO_InitStruct);void GPIO_PinLockConfig (GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin);/ * GPIO đọc và viết các chức năng *** /uint8_t GPIO_ReadInputDataBit (GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin);uint16_t GPIO_ReadInputData (GPIO_TypeDef * GPIOx);uint8_t GPIO_ReadOutputDataBit (GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin);uint16_t GPIO_ReadOutputData (GPIO_TypeDef * GPIOx);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);/ * GPIO thay thế chức năng cấu hình chức năng *** /void GPIO_PinAFConfig (uint8_t GPIO_TypeDef * GPIOx, uint16_t GPIO_PinSource, GPIO_AF);Tôi sẽ làm cho led ví dụ (sử dụng màu xanh lá cây và màu da cam đã dẫn) và đèn LED pcb vẽ được hiển thị dưới đây. Tôi sẽ sử dụng GPIOD ví dụ dẫn và GPIOD đồng hồ là activeted với AHB1 xe buýt như hình dưới đây.gpio_clclãnh đạoBạn phải kích hoạt đồng hồ pin và GPIOD là AHB1 xe. Chúng tôi có thể kích hoạt mã đồng hồ;RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOD, cho phép);Bạn phải chọn các tính năng thông dụng đầu vào/đầu ra. Trước hết, chúng ta định nghĩa một struct.GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitTypeDef có 5 tính năng và gpio thư viện struct;typedef struct{ uint32_t GPIO_Pin; GPIOMode_TypeDef GPIO_Mode; GPIOSpeed_TypeDef GPIO_Speed; GPIOOType_TypeDef GPIO_OType; GPIOPuPd_TypeDef GPIO_PuPd; } GPIO_InitTypeDef; GPIO ví dụ; #include "main.h"#include "stm32f4xx.h"#include "stm32f4xx_gpio.h"GPIO_InitTypeDef GPIO_InitStructure;void GPIO_Initialize(void);int main(void){ GPIO_Initialize(); trong khi (1) { GPIO_SetBits (GPIOD, GPIO_Pin_12| GPIO_Pin_13); }}void GPIO_Initialize(void){/ * GPIOD thiết bị ngoại vi cho phép đồng hồ * / RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOD, cho phép); / * Cấu hình PD12 và PD13 trong sản lượng pushpull chế độ * / GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12| GPIO_Pin_13; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.G
đang được dịch, vui lòng đợi..
