보이드 HAL_GPIO_Init (GPIO_TypeDef GPIOx *, * GPIO_InitTypeDef GPIO_Init); 보이드 HAL_GPIO_DeInit (GPIO_TypeDef * GPIO_Pin uint32_t GPIOx); GPIO_PinState HAL_GPIO_ReadPin (GPIO_TypeDef * GPIO_Pin uint16_t GPIOx); 보이드 HAL_GPIO_WritePin (GPIO_TypeDef * GPIO_Pin uint16_t GPIOx, GPIO_PinState PinState); 보이드 HAL_GPIO_TogglePin (GPIO_TypeDef * GPIO_Pin uint16_t GPIOx); HAL_StatusTypeDef HAL_GPIO_LockPin (GPIO_TypeDef * GPIO_Pin uint16_t GPIOx); 보이드 (GPIO_Pin uint16_t) HAL_GPIO_EXTI_IRQHandler; 보이드 (GPIO_Pin uint16_t) HAL_GPIO_EXTI_Callback;
stm32f7xx_hal_gpio.h에서 복사 위의 내용
HAL 라이브러리 초기화
HAL_Init ();
클럭을 초기화 (원자 지키는 시스템 폴더 기능 수득)
보이드 Stm32_Clock_Init (U32의 PLLN, U32의 pllm, U32의 pllp, U32의 pllq)
// PLLN : 메인 PLL 주파수 곱셈 (PLL 승산기) 범위 : 64 ~ 432.
// pllm : 메인 PLL 주파수 분할 비율 및 범위의 오디오 PLL (PLL 분할 전), 2 (63).
// pllp : 메인 시스템 클록 PLL 주파수 계수 (주파수 분할 PLL 후) 거리 : 2,4,6,8 (네 개의 값!).
// pllq : USB 마스터 / SDIO / 범위 (주파수 분할 후 PLL)는 PLL 주파수 계수 등 난수 발생기 : 2~15.
이오 시계 포트를 활성화
__HAL_RCC_GPIOB_CLK_ENABLE ();
GPIO 모드 초기화
보이드 HAL_GPIO_Init (GPIO_TypeDef GPIOx *, * GPIO_InitTypeDef GPIO_Init)
GPIOA GPIOB GPIOC 등을 채우기 위해 첫번째 파라미터
두번째 매개 변수는 구조
타입 정의 구조체 { 핀 uint32_t; / * <! 지정 GPIO 핀들을 구성한다. 이 파라미터 @ref GPIO_pins_define 어떤 값이 될 수 * / 모드 uint32_t; / * <! 지정 선택한 핀 작동 모드. 이 파라미터 GPIO_mode_define @ref의 값일 수 * / uint32_t 당겨; / * <! 지정 선택한 핀의 풀업 또는 풀다운 활성화. 이 매개 변수는 @ref GPIO_pull_define의 값이 될 수 있습니다 * / 속도 uint32_t; / * <! 지정 선택된 핀 속도. 이 파라미터 GPIO_speed_define @ref의 값일 수 * / uint32_t 대체; / * <! 주변 장치 선택 핀에 연결된다. 이 파라미터 @ref GPIO_Alternate_function_selection의 값일 수 * / } GPIO_InitTypeDef;
속도 구조체 등의 변수는 다음과 같은 매크로입니다 :
/ * * GPIO_speed_define GPIO 속도 @defgroup 정의 GPIO 출력의 최대 주파수 @brief * * @ { * / #DEFINE GPIO_SPEED_FREQ_LOW ((uint32_t) 0x00000000U가) / * <! 낮은 속도 * / #DEFINE GPIO_SPEED_FREQ_MEDIUM ((uint32_t) 0x00000001U) / *! <중간 속도 * / #DEFINE GPIO_SPEED_FREQ_HIGH ((uint32_t) 0x00000002U) / *! <빠른 속도 * / #DEFINE GPIO_SPEED_FREQ_VERY_HIGH ((uint32_t) 0x00000003U을) / *! <고속 * /
다른 변수 내부 매크로 본체로 정의 hal_gpio.h에서 자세히 설명 된 바와 같이, 여기에 열거되지
다음은 그 예이다 :
GPIO_InitTypeDef GPIO_Initure; GPIO_Initure.Pin는 GPIO_PIN_0를 =; // PB0 GPIO_Initure.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出 GPIO_Initure.Pull = GPIO_PULLUP; // 上拉 GPIO_Initure.Speed = GPIO_SPEED_HIGH; // 高速 HAL_GPIO_Init (GPIOB 및 GPIO_Initure);
ODR 레지스터
보이드 HAL_GPIO_TogglePin (GPIO_Pin uint16_t GPIO_TypeDef GPIOx *);
BSRR 레지스터
보이드 HAL_GPIO_WritePin (GPIO_TypeDef * GPIO_Pin uint16_t GPIOx, GPIO_PinState PinState);
이후 인수는 두 멤버를 PinState : GPIO_PIN_SET GPIO_PIN_RESET를
ODR BSRR 레지스터 사이의 차이 :
BSRR 레지스터를 들어, 쓰기 0 IO 포트 레벨이 더 효과입니다 다음에.
우리는 IO 포트 레벨 만 해당 비트가 설정되어 설정하려는 하나 가 될 수 있습니다. ODR 레지스터, 우리는 IO 포트 레벨을 설정하려면, 우리는 ODR 레지스터의 값을 읽을 수있는 첫 번째 필요가
다음 전체 ODR 레지스터는 우리가 세트 또는 어떤 목적 IO 포트 및 BSRR 레지스터에 도달하기 위해 재 할당 당신은 읽을 필요는 없지만, 멀티 태스킹 실시간 운영 체제에 큰 역할을하는 직접 설정할 수 있습니다.
읽기 IO 포트 수준
GPIO_PinState HAL_GPIO_ReadPin (GPIO_Pin uint16_t GPIO_TypeDef GPIOx *);
GPIO는 기능을 우리가 처음 여기에 설명 관련. IO 절차가 매우 간단하지만, 우리가 일반적하게 요약, 단계는 다음과 같습니다
1) 상기 클록은 IO 포트를 활성화 통화 기능 __HAL_RCC_GPIOX_CLK_ENABLE (여기서 X = A ~ K).
2) IO 초기화 매개 변수를 설정합니다. () 함수 HAL_GPIO_Init 전화;
3) 입력 및 출력 IO 동작. 작업의 IO 방법은 위의 방법을 설명하기 위해 우리에게있다.
보이드 HAL_GPIO_Init (GPIO_TypeDef GPIOx *, * GPIO_InitTypeDef GPIO_Init);