STM32 HAL 라이브러리 함수 --GPIO

보이드   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);

추천

출처www.cnblogs.com/qifeng1024/p/12025154.html