Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
00001 #include "mbed.h" 00002 00003 00004 DigitalOut alarm(PC_0); 00005 DigitalOut anzeige(PC_1); 00006 InterruptIn flamme(PA_8); 00007 AnalogIn batterie(PA_0); 00008 DigitalIn test(PA_1); 00009 00010 bool alarmAktiv=false; 00011 00012 void isrFlamme(void) 00013 { 00014 alarmAktiv=true; 00015 alarm=1; 00016 anzeige=1; 00017 } 00018 00019 void warte(unsigned int ms) 00020 { 00021 RCC->APB1ENR |= 0b100000; //TIM6 00022 TIM7->PSC=31999; //Prescaler für 1 ms 00023 TIM7->CNT=0; 00024 TIM7->ARR=ms; 00025 TIM7->SR=0; //UIF=0 00026 TIM7->CR1=1; 00027 while (TIM7->SR==0); 00028 TIM7->CR1=0; 00029 } 00030 00031 void TIM6_IRQHandler(void) 00032 { 00033 if (anzeige==0) 00034 { 00035 anzeige=1; 00036 TIM6->ARR=1000; //1Sekunde 00037 if (batterie<0.7) alarm=1; 00038 } 00039 else 00040 { 00041 anzeige=0; 00042 TIM6->ARR=10000; //10Sekunde 00043 if (!alarmAktiv) alarm=0; 00044 } 00045 00046 TIM6->SR=0; 00047 HAL_NVIC_ClearPendingIRQ(TIM6_IRQn); 00048 } 00049 00050 void flammeinit(void) 00051 { 00052 flamme.rise(&isrFlamme); 00053 } 00054 00055 void NVIC_Init(void) 00056 { 00057 /* TIM6_IRQn interrupt configuration */ 00058 NVIC_SetVector(TIM6_IRQn, (uint32_t)&TIM6_IRQHandler); 00059 HAL_NVIC_EnableIRQ(TIM6_IRQn); 00060 } 00061 00062 /* TIM6 init function */ 00063 void TIM6_Init(void) 00064 { 00065 RCC->APB1ENR|=0b10000; //Clock Enable 00066 TIM6->PSC=31999; //Prescaler 100µs 00067 TIM6->ARR=1000; //Autoreload 1000*1ms = 1s 00068 TIM6->DIER=1; //UIE = 1 (Update Interrupt Enable) 00069 TIM6->SR=0; //UIF =0 (Update Interrupt Flag) 00070 TIM6->CR1=1; //CEN=1 (Counter Enable) 00071 } 00072 00073 00074 int main() 00075 { 00076 TIM6_Init(); 00077 00078 flammeinit(); 00079 NVIC_Init(); 00080 test.mode(PullDown); 00081 while(1) { 00082 if (test==1) 00083 { 00084 warte(3000); 00085 if (test==1) 00086 { 00087 TIM6->CR1=0; 00088 alarm=1; 00089 anzeige=1; 00090 warte(1000); 00091 alarm=0; 00092 anzeige=0; 00093 TIM6->CR1=1; 00094 } 00095 } 00096 } 00097 00098 }
Generated on Sat Jul 16 2022 18:15:12 by
1.7.2