Previous: 10.5.2.1. WFI |
Up: 10.5.2.1. WFI |
Next: 10.5.2.1.2. 割込みハンドラの作成 |
そのためにはまず、EXTIの設定時にEXTI_LineをEXTI_Line17にします。EXTI_Line17はRTCアラームが接続されているEXTIラインです。その他の設定は以下の通りとなります。
void EXTI_Configuration(void) { ? EXTI_InitTypeDef EXTI_InitStructure;
? /* Configure EXTI Line17(RTC Alarm) to generate an interrupt on rising edge */ ? EXTI_ClearITPendingBit(EXTI_Line17); ? EXTI_InitStructure.EXTI_Line = EXTI_Line17; ? EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; ? EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; ? EXTI_InitStructure.EXTI_LineCmd = ENABLE; ? EXTI_Init(&EXTI_InitStructure); } |
RTCアラームを設定する必要がありますが、設定方法は通常のRTCアラームの設定方法と同じです。割込みを使用して復帰させますので、NVICと割込みハンドラの設定も必要です。このサンプルでは、RTC_GetCounter関数で現時点のカウンタ値を取得し、これに3を足した数をRTC_SetAlarmを設定しています。現時点でのカウンタ値が何であってもこれで3秒後にRTCアラームが発生します。
PWR_EnterSTOPMode関数を実行してSTOPモードに入りますが、スイッチを何も操作しなくても、3秒後にRUNモードに復帰します。
Previous: 10.5.2.1. WFI |
Up: 10.5.2.1. WFI |
Next: 10.5.2.1.2. 割込みハンドラの作成 |