armprogramming.com
STM32F4 Discovery Hướng dẫn - GPIO - ARM Lập trình
bởi Sefa Veske · 27 Tháng một 2015 Tôi cố gắng giải thích cho GPIO STM32F4xx gia đình. Tôi sẽ sử dụng STM32F4 Discovery và Keil 5.13 phiên bản. Hội đồng quản trị phát hiện sử dụng STM32F407VGT6 và bao gồm gia tốc, microphone kỹ thuật số, DAC, tám lãnh đạo và hai nút nhấn. Chúng tôi có thể sử dụng tài liệu tham khảo STM32F4 manuel và datasheet Discovery, bạn có thể tải về tại trang web st. GPIO nghĩa Mục đích chung đầu vào đầu ra GPIO REGISTER chế độ cổng GPIO đăng ký (GPIOx_MODER) 32 bit đăng ký này trong đó 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 lựa chọn như là một đầu vào kỹ thuật số, đầu ra kỹ thuật số, chức năng thay thế hoặc tương tự. Port_mode_registerPort_mode_register_value GPIO loại đầu ra cổng đăng ký (GPIOx_OTYPER) này đăng ký xác định loại của các chân đầu ra hoặc là push-pull hoặc cống mở. Giá trị đặt lại là push-pull. Đây là 32 bit đăng ký nhưng chỉ có 16 bit đầu tiên được sử dụng. Port_output_type_registerpusppull GPIO đăng ký tốc độ đầu ra cổng (GPIOx_OSPEEDR) này đăng ký xác định tốc độ đầu ra của các cổng. Tốc độ đầu ra cổng có thể được điều chỉnh để tiết kiệm điện. Tần số hoạt động cho mỗi pin được đại diện bởi hai bit. Port_output_speed_reg port_output_speed_reg_value GPIO cổng kéo lên / kéo xuống đăng ký (GPIOx_PUPDR) này đăng ký xác định chế độ điện trở kéo lên / kéo xuống cho các chân. Mỗi cổng được chỉ ra bởi hai pin. Port_pupdr_reg pupd GPIO dữ liệu đầu vào cổng đăng ký (GPIOx_IDR) Đây là một 32 bit đăng ký nhưng chỉ sử dụng 16 bit. Việc đăng ký chỉ đọc và sử dụng cho dữ liệu entry.input_data_reg GPIO dữ liệu đầu ra cổng đăng ký (GPIOx_ODR) Đây là một 32 bit đăng ký nhưng chỉ sử dụng 16 bit. Các bit có thể được đọc và được viết bằng phần mềm. Các giá trị của các cổng đầu ra xác định bởi các dữ liệu đầu ra register.output_data_reg cổng GPIO bit đặt / thiết lập lại đăng ký (GPIOx_BSRR) đăng ký này là 32 bit. Đây là một ghi chỉ đăng ký. Được sử dụng để truy cập chút cấp đến cổng ra. 16-bit đầu tiên được sử dụng để thiết lập giá trị pin và 16 bit cuối cùng được sử dụng để thiết lập lại pin value.bssr_reg GPIO chức năng thay thế thấp đăng ký Mỗi pin có thể được sử dụng cho các chức năng khác nhau, thêm vào các yếu tố đầu vào và đầu ra số. Có hai chức năng đăng ký thay thế; GPIO thay thế chức năng thấp đăng ký GPIO chức năng thay thế đăng ký cao. GPIO Mã số Ví dụ tôi sẽ sử dụng thường StdPeriph Libraries. chức năng stm32f4xx_gpio.h hình dưới đây; / * Chức năng sử dụng để thiết lập cấu hình GPIO với trạng thái reset mặc định **** / trống GPIO_DeInit (GPIO_TypeDef * GPIOx); / * Khởi tạo và cấu hình các chức năng ********** *********************** / trống GPIO_Init (GPIO_TypeDef * GPIOx, GPIO_InitTypeDef * GPIO_InitStruct); khoảng trống GPIO_StructInit (GPIO_InitTypeDef * GPIO_InitStruct); làm mất hiệu lực GPIO_PinLockConfig (GPIO_TypeDef * GPIOx , uint16_t GPIO_Pin); / * GPIO đọc và Viết 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); khoảng trống GPIO_SetBits ( GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin); khoảng trống GPIO_ResetBits (GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin); khoảng trống GPIO_WriteBit (GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin, BitAction BitVal); khoảng trống GPIO_Write (GPIO_TypeDef * GPIOx, uint16_t PortVal); khoảng trống GPIO_ToggleBits (GPIO_TypeDef * GPIOx , uint16_t GPIO_Pin); / * GPIO thay thế chức năng chức năng cấu hình **************************** / trống GPIO_PinAFConfig (GPIO_TypeDef * GPIOx, uint16_t GPIO_PinSource , uint8_t GPIO_AF); tôi sẽ làm ví dụ dẫn (sử dụng màu xanh lá cây và màu da cam đã dẫn) và vẽ Leds pCB được hiển thị dưới đây. Tôi sẽ sử dụng GPIOD ví dụ dẫn và đồng hồ GPIOD được activeted với xe buýt AHB1 như hình dưới đây. Gpio_clc dẫn Bạn phải kích hoạt đồng hồ pin và GPIOD là trên xe buýt AHB1. Chúng ta có thể cho phép mã đồng hồ; RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOD, ENABLE); Bạn phải chọn tính năng của các mục đích chung đầu vào / đầu ra. Trước hết chúng ta định nghĩa một cấu trúc. GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitTypeDef có 5 tính năng và thư viện gpio 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" # bao gồm "stm32f4xx.h" #include "stm32f4xx_gpio.h" GPIO_InitTypeDef GPIO_InitStructure; làm mất hiệu lực GPIO_Initialize (void); int main (void) { GPIO_Initialize (); while (1) { GPIO_SetBits (GPIOD, GPIO_Pin_12 | GPIO_Pin_13); } } trống GPIO_Initialize (void) { / * GPIOD đồng hồ ngoại vi cho phép * / RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOD, ENABLE); / * Cấu PD12 và PD13 trong chế độ pushpull đầu ra * / 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..
