[ST_MICRO]/STM32F4012015. 6. 29. 12:27

STM32F401 회로 설계시 주의사항

STM32F401 회로 설계시 주의사항

기존 STM32F4의 PB11 (64핀 기준 30번핀, 100핀 기준 48번핀) 이 VCAP로 대치되어 있으므로 주의가 필요하다. 

이부분만 호환 할 수 있도록 설계하면 동일하게 사용할 수 있다.








Posted by nexp

댓글을 달아 주세요

[ST_MICRO]/STM32F42014. 12. 15. 18:17

STM32F4 UART interrupt 테스트

STM32F4 UART interrupt 테스트



void U0_SetInt(void)

{

    /* NVIC for USART1 */

    HAL_NVIC_SetPriority(USART1_IRQn, 0, 1);

    HAL_NVIC_EnableIRQ(USART1_IRQn);

    

      /* Enable the UART Data Register not empty Interrupt */

    __HAL_UART_ENABLE_IT(&UartHandle, UART_IT_RXNE);

}




void USART1_IRQHandler(void)

{

    U0_PutByte(U0_GetByte());

}


Posted by nexp

댓글을 달아 주세요

[ST_MICRO]/STM32F43x2014. 11. 5. 12:08

STM32F4 Software Reset Test (소프트웨어 리셋)

STM32F4 Software Reset Test (소프트웨어 리셋)



void SoftReset(void)

{

    #define AIRCR_VECTKEY_MASK    (0x05FA0000)    

    SCB->AIRCR = AIRCR_VECTKEY_MASK | 0x04;    

}




STM32F429 에서 소프트웨어 리셋 테스트 예제

int main(void)

{


    HAL_Init();


    //Configure the System clock to have a frequency of 180 MHz

    SystemClock_Config();


    Led1Init();

    Led1On();

    Delay(2000);

    Led1Off();

    Delay(2000);


    SoftReset();

    while(1)

    {

    }


return 0;

}


Posted by nexp

댓글을 달아 주세요

[ST_MICRO]/STM32F43x2014. 6. 18. 11:58

STM32F429 180Mhz 클럭 구동 설정

STM32F429 180Mhz 클럭 구동 설정


STM32F429는 180Mhz까지 구동 가능하다. 기존 STM32F4 코드 system_stm32f4xx.c 파일에서 수정가능하다.


#if _USE_MAINCLK_168MHZ

// 168Mhz

#define PLL_N      336

  

uint32_t SystemCoreClock = 168000000;

#endif




#if _USE_MAINCLK_180MHZ

// 180Mhz

#define PLL_N      360


uint32_t SystemCoreClock = 180000000;

#endif


Posted by nexp

댓글을 달아 주세요

[ST_MICRO]/STM32F42014. 6. 17. 00:16

STM32F4 타이머 인터럽트 테스트 - 1초 만들기


STM32F4 타이머 인터럽트 테스트



STM32F4에서 TIM2, TIM5는 32bit 타이머 모드를 지원한다. 이를 이용하여 1초 만들기 테스트를 해 보았다.




STM32F4 타이머 인터럽트 초기화 함수

void TimerInit2(void)

{

    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

    TIM_OCInitTypeDef  TIM_OCInitStructure;


    uint16_t PrescalerValue = 0;


    NVIC_InitTypeDef NVIC_InitStructure;


    /* TIM2 clock enable */

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);


    /* TIM2 gloabal Interrupt 초기화 */

    NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;

    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;

    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

    NVIC_Init(&NVIC_InitStructure);


    //--------------------------------------------------------------------------

    /* Compute the prescaler value */

    PrescalerValue = (uint16_t) ((SystemCoreClock / 2) / 6000000) - 1; 


    /* Time base configuration */

    TIM_TimeBaseStructure.TIM_Period = (6000-1);   //Autoreload value (ARR) -> 1ms

    TIM_TimeBaseStructure.TIM_Prescaler = (6000-1);

    TIM_TimeBaseStructure.TIM_ClockDivision = 0;

    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;


    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);


    /* Prescaler configuration */

    TIM_PrescalerConfig(TIM2, PrescalerValue, TIM_PSCReloadMode_Immediate);



    /* TIM Interrupts enable */

    TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);


    /* TIM2 enable counter */

    TIM_Cmd(TIM2, ENABLE);

    //--------------------------------------------------------------------------    

}




STM32F4 타이머 인터럽트 핸들러

void TIM2_IRQHandler(void)

{

if(TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)

{

TIM_ClearITPendingBit(TIM2, TIM_IT_Update);

        Led2Toggle();

}  

}




Posted by nexp

댓글을 달아 주세요