2017-01-25 2 views
0

방금 ​​stm32l152RC를 구입하여 지연이 어떻게 작용하는지 궁금합니다. 시스템 클럭은 16Mhz입니다.지연은 stm32l152RC에서 어떻게 작동합니까?

코드 : 나는 지연이 초 1이 경우 Delay(1000);을 실행하면 지연이 1 초는 왜

static volatile uint32_t TimingDelay; 
void Delay(__IO uint32_t nCount); 


int main(void) { 
    Config_Systick(); 
    char *RCCp = (char*) 0x40023800; 
    int *PBp = (int *) 0x40020400; 
    // RCC Config 
    *((int*) (RCCp + 28)) |= 0x3f; 
    *((int*) (RCCp + 32)) |= 1; 
    *PBp = 0x5000; 

    while (1) { 
     GPIO_TOGGLE(GPIOB, LD_GREEN); //toggle green led 
     Delay(1000); // 1 second? 
    } 
} // end of main 

    RCC_ClocksTypeDef RCC_Clocks; 
    void Config_Systick() { 
     RCC_GetClocksFreq(&RCC_Clocks); 
     SysTick_Config(RCC_Clocks.HCLK_Frequency/1000); // setting changed to/1000 
    } 

    void TimingDelay_Decrement(void) { 
     if (TimingDelay != 0x00) { 
      TimingDelay--; 
     } 
    } 

    void Delay(uint32_t nTime) { 
     TimingDelay = nTime; 
     while (TimingDelay != 0) { 
     }; 
    } 

가, 누군가가 설명해 주시겠습니까?

+0

@Olaf 답변 주셔서 감사합니다. 실제로 읽었습니다. –

답변

2

약간의 연구를 한 후에 이것은 내가 생각해 낸 대답입니다. 을 수행하면 SysTick_Config(RCC_Clocks.HCLK_Frequency/1000);은 초당 1000 틱을 설정한다는 것을 의미합니다. Delay(100)을하면 지연 시간은 100ms가됩니다.

관련 문제