Testprogramm für Hardwaretimer TIM2 und TIM3 mit Nucleo-F401RE

Dependencies:   mbed-os

Committer:
jack1930
Date:
Thu Nov 12 13:28:29 2020 +0000
Revision:
2:a5ee88ab46b2
Parent:
1:17722afc5909
Child:
3:b0716d14c3bf
Beispiel mit Timer und Interrupt

Who changed what in which revision?

UserRevisionLine numberNew 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 }