2017-08-28 5 views
1

4分割7セグメント表示のプログラミングに問題があります。私はすべての多重化文字を点滅させる方法を知らない。 "DISP" は符号なし整数であるstm32F4 7セグメント表示

void TIM2_IRQHandler(){ 
    if (TIM_GetITStatus(TIM2,TIM_IT_Update)) { 
     TIM_ClearITPendingBit(TIM2,TIM_IT_Update); 
     GPIO_ResetBits(GPIOC,15); //turn off all display cells 
     switch (disp) { 
      case 1: 
       decodeCharacters(digits[(alarm.RTC_AlarmTime.RTC_Minutes-time.RTC_Minutes)%10]); //called method decoding chars 
       break; 
      case 2: 
       decodeCharacters(digits[(alarm.RTC_AlarmTime.RTC_Seconds-time.RTC_Seconds)/10]); 
       break; 
      case 3: 
       decodeCharacters(digits[(alarm.RTC_AlarmTime.RTC_Seconds-time.RTC_Seconds)%10]); 
       break; 
      default: 
       decodeCharacters(digits[(alarm.RTC_AlarmTime.RTC_Minutes-time.RTC_Minutes)/10]); 
       break; 
     } 
     GPIO_ToggleBits(GPIOC,1<<disp); //turn on display cell 
     disp = (disp+1)%4; 
    } 
} 

: 私はCooCox

でのプログラミング

多重化コード(割り込み)です。

+1

これは単なる入出力です。ピンをハイまたはローに設定します。 – Lundin

答えて

0

時間を表示するコードがあり、数字を点滅させたいと思っています。

最初に行う必要があることは、割り込みハンドラの発生頻度を確認することです。このハンドラの内部では、時間をカウントする静的変数を作成することができます。

static unsigned int blinkCounter = 0; 

if(blinkCounter < 500) 
{ 
    /* Turn off the display */ 
} 
else 
{ 
    /* Most of your current handler code */ 
} 

if(blinkCounter > 1000) 
{ 
    blinkCounter = 0; 
} 

blinkCounter++; 
+0

Ok、何桁の数字だけを点滅させたいのですか? –

+0

最も重要なことは、現在のコードを理解することです。すべての割り込み呼び出しでは、1桁の数字しか更新されません。これらの数字の一部だけを数字にしたい場合は、スイッチを2つのスイッチに分けることができます。上記のコード内の 'else'内の第1スイッチ(点滅部分)と条件外の2番目のスイッチです。 – Mikolaj

関連する問題