Jack Hansdampf
/
TIM6_IRQ
Timer mit Interrupt
main.cpp@2:a5ee88ab46b2, 2020-11-12 (annotated)
- Committer:
- jack1930
- Date:
- Thu Nov 12 13:28:29 2020 +0000
- Revision:
- 2:a5ee88ab46b2
- Parent:
- 1:17722afc5909
Beispiel mit Timer und Interrupt
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JoergSturm | 0:45170c77adc7 | 1 | #include "mbed.h" |
JoergSturm | 1:17722afc5909 | 2 | |
JoergSturm | 0:45170c77adc7 | 3 | |
JoergSturm | 0:45170c77adc7 | 4 | DigitalOut myled(PC_0); |
jack1930 | 2:a5ee88ab46b2 | 5 | DigitalOut myled2(PC_1); |
jack1930 | 2:a5ee88ab46b2 | 6 | DigitalOut PC2(PC_2); |
JoergSturm | 0:45170c77adc7 | 7 | |
JoergSturm | 1:17722afc5909 | 8 | void EX1IRQhandler(void) |
JoergSturm | 1:17722afc5909 | 9 | { |
jack1930 | 2:a5ee88ab46b2 | 10 | PC2=!PC2; |
JoergSturm | 1:17722afc5909 | 11 | } |
JoergSturm | 0:45170c77adc7 | 12 | |
JoergSturm | 0:45170c77adc7 | 13 | void TIM6_IRQHandler(void) |
JoergSturm | 0:45170c77adc7 | 14 | { |
JoergSturm | 0:45170c77adc7 | 15 | myled=!myled; |
JoergSturm | 0:45170c77adc7 | 16 | TIM6->SR=0; |
JoergSturm | 0:45170c77adc7 | 17 | HAL_NVIC_ClearPendingIRQ(TIM6_IRQn); |
JoergSturm | 0:45170c77adc7 | 18 | } |
jack1930 | 2:a5ee88ab46b2 | 19 | void TIM7_IRQHandler(void) |
jack1930 | 2:a5ee88ab46b2 | 20 | { |
jack1930 | 2:a5ee88ab46b2 | 21 | myled2=!myled2; |
jack1930 | 2:a5ee88ab46b2 | 22 | TIM7->SR=0; |
jack1930 | 2:a5ee88ab46b2 | 23 | HAL_NVIC_ClearPendingIRQ(TIM7_IRQn); |
jack1930 | 2:a5ee88ab46b2 | 24 | } |
jack1930 | 2:a5ee88ab46b2 | 25 | InterruptIn PA1(PA_1); |
JoergSturm | 1:17722afc5909 | 26 | void EX1init(void) |
JoergSturm | 1:17722afc5909 | 27 | { |
jack1930 | 2:a5ee88ab46b2 | 28 | PA1.rise(&EX1IRQhandler); |
jack1930 | 2:a5ee88ab46b2 | 29 | PA1.mode(PullDown); |
JoergSturm | 1:17722afc5909 | 30 | } |
JoergSturm | 1:17722afc5909 | 31 | |
jack1930 | 2:a5ee88ab46b2 | 32 | void NVIC_Init(void) |
JoergSturm | 0:45170c77adc7 | 33 | { |
JoergSturm | 0:45170c77adc7 | 34 | /* TIM6_IRQn interrupt configuration */ |
JoergSturm | 0:45170c77adc7 | 35 | NVIC_SetVector(TIM6_IRQn, (uint32_t)&TIM6_IRQHandler); |
JoergSturm | 0:45170c77adc7 | 36 | HAL_NVIC_EnableIRQ(TIM6_IRQn); |
jack1930 | 2:a5ee88ab46b2 | 37 | /* TIM7_IRQn interrupt configuration */ |
jack1930 | 2:a5ee88ab46b2 | 38 | NVIC_SetVector(TIM7_IRQn, (uint32_t)&TIM7_IRQHandler); |
jack1930 | 2:a5ee88ab46b2 | 39 | HAL_NVIC_EnableIRQ(TIM7_IRQn); |
JoergSturm | 0:45170c77adc7 | 40 | } |
JoergSturm | 0:45170c77adc7 | 41 | |
JoergSturm | 0:45170c77adc7 | 42 | /* TIM6 init function */ |
jack1930 | 2:a5ee88ab46b2 | 43 | void TIM6_Init(void) |
JoergSturm | 0:45170c77adc7 | 44 | { |
JoergSturm | 0:45170c77adc7 | 45 | RCC->APB1ENR|=0b10000; //Clock Enable |
jack1930 | 2:a5ee88ab46b2 | 46 | TIM6->PSC=3199; //Prescaler 100µs |
JoergSturm | 0:45170c77adc7 | 47 | TIM6->ARR=5000; //Autoreload 5000*100µs = 0,5s |
JoergSturm | 0:45170c77adc7 | 48 | TIM6->DIER=1; //UIE = 1 (Update Interrupt Enable) |
JoergSturm | 0:45170c77adc7 | 49 | TIM6->SR=0; //UIF =0 (Update Interrupt Flag) |
JoergSturm | 0:45170c77adc7 | 50 | TIM6->CR1=1; //CEN=1 (Counter Enable) |
JoergSturm | 0:45170c77adc7 | 51 | } |
jack1930 | 2:a5ee88ab46b2 | 52 | void TIM7_Init(void) |
jack1930 | 2:a5ee88ab46b2 | 53 | { |
jack1930 | 2:a5ee88ab46b2 | 54 | RCC->APB1ENR|=0b100000; //Clock Enable |
jack1930 | 2:a5ee88ab46b2 | 55 | TIM7->PSC=3199; //Prescaler 100µs |
jack1930 | 2:a5ee88ab46b2 | 56 | TIM7->ARR=15000; //Autoreload 15000*100µs = 1,5s |
jack1930 | 2:a5ee88ab46b2 | 57 | TIM7->DIER=1; //UIE = 1 (Update Interrupt Enable) |
jack1930 | 2:a5ee88ab46b2 | 58 | TIM7->SR=0; //UIF =0 (Update Interrupt Flag) |
jack1930 | 2:a5ee88ab46b2 | 59 | TIM7->CR1=1; //CEN=1 (Counter Enable) |
jack1930 | 2:a5ee88ab46b2 | 60 | } |
JoergSturm | 0:45170c77adc7 | 61 | |
JoergSturm | 0:45170c77adc7 | 62 | int main() |
JoergSturm | 0:45170c77adc7 | 63 | { |
JoergSturm | 0:45170c77adc7 | 64 | TIM6_Init(); |
jack1930 | 2:a5ee88ab46b2 | 65 | TIM7_Init(); |
JoergSturm | 1:17722afc5909 | 66 | EX1init(); |
JoergSturm | 0:45170c77adc7 | 67 | NVIC_Init(); |
JoergSturm | 0:45170c77adc7 | 68 | while(1) { |
JoergSturm | 0:45170c77adc7 | 69 | } |
JoergSturm | 0:45170c77adc7 | 70 | |
JoergSturm | 0:45170c77adc7 | 71 | } |