본문 바로가기

[ST_MICRO]/STM32F4

[STM32F4] GPIO 테스트

[STM32F4] GPIO 테스트
STM32F103과 하드웨어 적으로 크게 변경된 것이 없지만 소프트웨어 적으로 약간의 변경이 있는것 같다.
대부분의 코드는 호환 되지만 기능이 약간 추가되고 레지스터명이 조금 변경 된것 같다.






STM32F4 에서는 GPIO 제어 레지스터가 변경되어 약간 수정 해 주었다.

//#define sbi(Port, Bit)     Port->BSRR = Bit
//#define cbi(Port, Bit)     Port->BRR = Bit


#define sbi(Port, Bit)    Port->BSRRH = Bit
#define cbi(Port, Bit)    Port->BSRRL = Bit



STM32F4 GPIO 설정 HAL 드라이버 코드
//-----------------------------------------------------------------------------
//LED Driver
#define LED1_BIT      BIT11
#define LED1_PORT      GPIOG
#define Led1Init()      
#define Led1Off()      sbi(LED1_PORT, LED1_BIT)
#define Led1On()      cbi(LED1_PORT, LED1_BIT)
#define Led1Toggle()     Tbi(PORTG, LED1_BIT)

#define Led1Init()       RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE);\
          GPIO_InitStructure.GPIO_Pin = LED1_BIT;\
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;\
          GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;\
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;\
          GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;\
          GPIO_Init(GPIOG, &GPIO_InitStructure); 


#define LED2_BIT      BIT0
#define LED2_PORT      GPIOA
#define Led2Init()      
#define Led2Off()      sbi(LED2_PORT, LED2_BIT)
#define Led2On()      cbi(LED2_PORT, LED2_BIT)
#define Led2Toggle()     Tbi(PORTA, LED1_BIT)

#define Led2Init()       RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);\
          GPIO_InitStructure.GPIO_Pin = LED2_BIT;\
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;\
          GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;\
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;\
          GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;\
          GPIO_Init(GPIOA, &GPIO_InitStructure); 
  
//-----------------------------------------------------------------------------



STM32F4 GPIO 테스트 예제 코드
#include "system.h"

int main(void)
{
    Led1Init();
    Led2Init()
   
    while (1)
    {
        Led1Toggle();
        Led2Toggle();
        Delay(500);
    }
}

반응형