Jack Hansdampf
/
TIM2_IRQ_F401
Testprogramm für Hardwaretimer TIM2 und TIM3 mit Nucleo-F401RE
main.cpp@0:45170c77adc7, 2020-03-01 (annotated)
- Committer:
- JoergSturm
- Date:
- Sun Mar 01 10:08:57 2020 +0000
- Revision:
- 0:45170c77adc7
- Child:
- 1:17722afc5909
neu
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JoergSturm | 0:45170c77adc7 | 1 | #include "mbed.h" |
JoergSturm | 0:45170c77adc7 | 2 | //#include "cmsis_nvic.h" |
JoergSturm | 0:45170c77adc7 | 3 | |
JoergSturm | 0:45170c77adc7 | 4 | DigitalOut myled(PC_0); |
JoergSturm | 0:45170c77adc7 | 5 | static void TIM6_Init(void); |
JoergSturm | 0:45170c77adc7 | 6 | static void NVIC_Init(void); |
JoergSturm | 0:45170c77adc7 | 7 | |
JoergSturm | 0:45170c77adc7 | 8 | void TIM6_IRQHandler(void); |
JoergSturm | 0:45170c77adc7 | 9 | |
JoergSturm | 0:45170c77adc7 | 10 | TIM_HandleTypeDef htim6; |
JoergSturm | 0:45170c77adc7 | 11 | void TIM6_IRQHandler(void) |
JoergSturm | 0:45170c77adc7 | 12 | { |
JoergSturm | 0:45170c77adc7 | 13 | myled=!myled; |
JoergSturm | 0:45170c77adc7 | 14 | TIM6->SR=0; |
JoergSturm | 0:45170c77adc7 | 15 | HAL_NVIC_ClearPendingIRQ(TIM6_IRQn); |
JoergSturm | 0:45170c77adc7 | 16 | } |
JoergSturm | 0:45170c77adc7 | 17 | |
JoergSturm | 0:45170c77adc7 | 18 | static void NVIC_Init(void) |
JoergSturm | 0:45170c77adc7 | 19 | { |
JoergSturm | 0:45170c77adc7 | 20 | /* TIM6_IRQn interrupt configuration */ |
JoergSturm | 0:45170c77adc7 | 21 | HAL_NVIC_SetPriority(TIM6_IRQn, 0, 0); |
JoergSturm | 0:45170c77adc7 | 22 | NVIC_SetVector(TIM6_IRQn, (uint32_t)&TIM6_IRQHandler); |
JoergSturm | 0:45170c77adc7 | 23 | HAL_NVIC_EnableIRQ(TIM6_IRQn); |
JoergSturm | 0:45170c77adc7 | 24 | } |
JoergSturm | 0:45170c77adc7 | 25 | |
JoergSturm | 0:45170c77adc7 | 26 | /* TIM6 init function */ |
JoergSturm | 0:45170c77adc7 | 27 | static void TIM6_Init(void) |
JoergSturm | 0:45170c77adc7 | 28 | { |
JoergSturm | 0:45170c77adc7 | 29 | /* |
JoergSturm | 0:45170c77adc7 | 30 | __TIM6_CLK_ENABLE(); |
JoergSturm | 0:45170c77adc7 | 31 | htim6.Instance = TIM6; |
JoergSturm | 0:45170c77adc7 | 32 | htim6.Init.Prescaler = 3200; |
JoergSturm | 0:45170c77adc7 | 33 | htim6.Init.CounterMode = TIM_COUNTERMODE_UP; |
JoergSturm | 0:45170c77adc7 | 34 | htim6.Init.Period = 5000; |
JoergSturm | 0:45170c77adc7 | 35 | if (HAL_TIM_Base_Init(&htim6) != HAL_OK) { |
JoergSturm | 0:45170c77adc7 | 36 | while(1) { |
JoergSturm | 0:45170c77adc7 | 37 | } |
JoergSturm | 0:45170c77adc7 | 38 | } |
JoergSturm | 0:45170c77adc7 | 39 | HAL_TIM_Base_Start_IT(&htim6); |
JoergSturm | 0:45170c77adc7 | 40 | */ |
JoergSturm | 0:45170c77adc7 | 41 | |
JoergSturm | 0:45170c77adc7 | 42 | RCC->APB1ENR|=0b10000; //Clock Enable |
JoergSturm | 0:45170c77adc7 | 43 | TIM6->PSC=3200; //Prescaler 100µs |
JoergSturm | 0:45170c77adc7 | 44 | TIM6->ARR=5000; //Autoreload 5000*100µs = 0,5s |
JoergSturm | 0:45170c77adc7 | 45 | TIM6->DIER=1; //UIE = 1 (Update Interrupt Enable) |
JoergSturm | 0:45170c77adc7 | 46 | TIM6->SR=0; //UIF =0 (Update Interrupt Flag) |
JoergSturm | 0:45170c77adc7 | 47 | TIM6->CR1=1; //CEN=1 (Counter Enable) |
JoergSturm | 0:45170c77adc7 | 48 | } |
JoergSturm | 0:45170c77adc7 | 49 | |
JoergSturm | 0:45170c77adc7 | 50 | int main() |
JoergSturm | 0:45170c77adc7 | 51 | { |
JoergSturm | 0:45170c77adc7 | 52 | TIM6_Init(); |
JoergSturm | 0:45170c77adc7 | 53 | NVIC_Init(); |
JoergSturm | 0:45170c77adc7 | 54 | while(1) { |
JoergSturm | 0:45170c77adc7 | 55 | /* |
JoergSturm | 0:45170c77adc7 | 56 | if (TIM6->SR==1) |
JoergSturm | 0:45170c77adc7 | 57 | { |
JoergSturm | 0:45170c77adc7 | 58 | TIM6->SR=0; |
JoergSturm | 0:45170c77adc7 | 59 | myled=!myled; |
JoergSturm | 0:45170c77adc7 | 60 | } |
JoergSturm | 0:45170c77adc7 | 61 | */ |
JoergSturm | 0:45170c77adc7 | 62 | } |
JoergSturm | 0:45170c77adc7 | 63 | |
JoergSturm | 0:45170c77adc7 | 64 | } |