STR911 GPIO 테스트
STR911의 GPIO의 대략적 특성을 보면 아래와 같다.
아래 STR911의 GPIO 블럭도를 보면 상당히 심플한데 레지스터 3개면 된다. 다른 ARM프로세서와 차이점이므로 주의 해야 한다.
STR911에서 GPIO는 아래와 같이 설정하면 된다
#define Led1Init()
SCU_APBPeriphClockConfig(__GPIO2 , ENABLE);
GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput;
GPIO_InitStructure.GPIO_Pin = LED1_BIT;
GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull;
GPIO_InitStructure.GPIO_Alternate=GPIO_OutputAlt1;
GPIO_Init(GPIO2, &GPIO_InitStructure)
DR 레지스터의 어드레스 옵셋은 0x3FC 이므로 아래와 같이 설정해서 사용할 수 있다.
#define PORT2 GPIO2->DR[0x3FC]
단 기본 제공 예제에서 주의 할 사항은 GPIO_DeInit() 함수로 초기화 할때 기존 설정도 지워지기 때문에 문제가 될 수 있다.
void GPIO_DeInit(GPIO_TypeDef* GPIOx)
{
:
if(GPIOx == GPIO2)
{
SCU_APBPeriphReset(__GPIO2,ENABLE);
SCU_APBPeriphReset(__GPIO2,DISABLE);
SCU->GPIOTYPE[0x02] = 0x0000 ;
SCU->GPIOOUT[0x02] = 0x0000;
SCU->GPIOIN[0x02] = 0x0000;
}
}
그래서 System초기화때 GPIO_DeInit() 함수 호출 할 수 있도록 수정했다.
void SystemInit(void)
{
#ifdef DEBUG
debug();
#endif
/*Configure PLL as clock source @96MHZ*/
MCLK_Config(STR911_PLL_CLK);
GPIO_DeInit(GPIO2);
}
STR911의 GPIO의 대략적 특성을 보면 아래와 같다.
- All GPIO pins are 5V tolerant.
- I/O port drivers may be configured as Push-Pull or as Open Collector.
- The GPIO ports have no internal or programmable pull-up resistors.
아래 STR911의 GPIO 블럭도를 보면 상당히 심플한데 레지스터 3개면 된다. 다른 ARM프로세서와 차이점이므로 주의 해야 한다.
STR911에서 GPIO는 아래와 같이 설정하면 된다
#define Led1Init()
SCU_APBPeriphClockConfig(__GPIO2 , ENABLE);
GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput;
GPIO_InitStructure.GPIO_Pin = LED1_BIT;
GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull;
GPIO_InitStructure.GPIO_Alternate=GPIO_OutputAlt1;
GPIO_Init(GPIO2, &GPIO_InitStructure)
DR 레지스터의 어드레스 옵셋은 0x3FC 이므로 아래와 같이 설정해서 사용할 수 있다.
#define PORT2 GPIO2->DR[0x3FC]
단 기본 제공 예제에서 주의 할 사항은 GPIO_DeInit() 함수로 초기화 할때 기존 설정도 지워지기 때문에 문제가 될 수 있다.
void GPIO_DeInit(GPIO_TypeDef* GPIOx)
{
:
if(GPIOx == GPIO2)
{
SCU_APBPeriphReset(__GPIO2,ENABLE);
SCU_APBPeriphReset(__GPIO2,DISABLE);
SCU->GPIOTYPE[0x02] = 0x0000 ;
SCU->GPIOOUT[0x02] = 0x0000;
SCU->GPIOIN[0x02] = 0x0000;
}
}
그래서 System초기화때 GPIO_DeInit() 함수 호출 할 수 있도록 수정했다.
void SystemInit(void)
{
#ifdef DEBUG
debug();
#endif
/*Configure PLL as clock source @96MHZ*/
MCLK_Config(STR911_PLL_CLK);
GPIO_DeInit(GPIO2);
}
반응형