Handreichung TI3
Embed:
(wiki syntax)
Show/hide line numbers
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