2017-12-09 11 views
0

これは、私が上でプログラムするuVisonを使用し、STM32を持っているよ、私はmikrokontrolerをプログラミングしています初めてです点灯し、uVision LEDは

私は、ピンの上にそれに2つのLEDライトを持っています。PIN_4とPIN_5とチュートリアル私は1つの点滅(下のコード)を作る方法を知っていますが、私はそれらが同じ遅れではなく点滅するボットを作る方法を知らない。私はPIN_4が100msの遅延と50msの遅れで導かれたPIN:5を指揮するようにしたいと思っています。以下のコードは1つのLEDライトのコードです。

/* Infinite loop */ 
    /* USER CODE BEGIN WHILE */ 
    while (1) 
    { 
    /* USER CODE END WHILE */ 

HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_4); //Toggle the state of pin PC9 
    HAL_Delay(100); //delay 100ms  

    } 
    /* USER CODE END 3 */ 

} 

答えて

1

あなたは、2つのオプションがあります。

最初に、ミリ秒単位でカウントするタイマーを設定できます。 STMCubeMXから50msタイマーのコードを生成することができます。次に、タイマーコールバック関数では、ピンをハイまたはローに設定する必要があります。

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) 
{ 
    timer_counter++; //50ms 

    HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5); 

    if(timer_counter>=2) //100ms 
    { 
     HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_4); 
     timer_counter = 0; 
    } 
} 

第2のオプションはメインでの遅延です。

/* Infinite loop */ 
    /* USER CODE BEGIN WHILE */ 
    while (1) 
    { 
    /* USER CODE END WHILE */ 
     HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5); //Toggle the state of pin PB5 
     HAL_Delay(50); //delay 50ms  

     HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_4); //Toggle the state of pin PB4 
     HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5); //Toggle the state of pin PB5 
     HAL_Delay(50); // delay 50ms 
    } 
    /* USER CODE END 3 */ 

}