Jack Hansdampf
/
TIM6_IRQ
Timer mit Interrupt
main.cpp@1:17722afc5909, 2020-04-24 (annotated)
- Committer:
- JoergSturm
- Date:
- Fri Apr 24 14:13:21 2020 +0000
- Revision:
- 1:17722afc5909
- Parent:
- 0:45170c77adc7
- Child:
- 2:a5ee88ab46b2
TIM6 mit NVIC 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); |
JoergSturm | 1:17722afc5909 | 5 | DigitalOut PC1(PC_1); |
JoergSturm | 0:45170c77adc7 | 6 | |
JoergSturm | 1:17722afc5909 | 7 | void EX1IRQhandler(void) |
JoergSturm | 1:17722afc5909 | 8 | { |
JoergSturm | 1:17722afc5909 | 9 | //PC1=!PC1; |
JoergSturm | 1:17722afc5909 | 10 | GPIOC->ODR=~GPIOC->ODR; |
JoergSturm | 1:17722afc5909 | 11 | EXTI->PR=0b10; |
JoergSturm | 1:17722afc5909 | 12 | HAL_NVIC_ClearPendingIRQ(EXTI1_IRQn); |
JoergSturm | 1:17722afc5909 | 13 | } |
JoergSturm | 0:45170c77adc7 | 14 | |
JoergSturm | 1:17722afc5909 | 15 | //TIM_HandleTypeDef htim6; |
JoergSturm | 0:45170c77adc7 | 16 | void TIM6_IRQHandler(void) |
JoergSturm | 0:45170c77adc7 | 17 | { |
JoergSturm | 0:45170c77adc7 | 18 | myled=!myled; |
JoergSturm | 0:45170c77adc7 | 19 | TIM6->SR=0; |
JoergSturm | 0:45170c77adc7 | 20 | HAL_NVIC_ClearPendingIRQ(TIM6_IRQn); |
JoergSturm | 0:45170c77adc7 | 21 | } |
JoergSturm | 0:45170c77adc7 | 22 | |
JoergSturm | 1:17722afc5909 | 23 | void EX1init(void) |
JoergSturm | 1:17722afc5909 | 24 | { |
JoergSturm | 1:17722afc5909 | 25 | RCC->AHBENR|=0b111; |
JoergSturm | 1:17722afc5909 | 26 | GPIOA->PUPDR|=0b1000; |
JoergSturm | 1:17722afc5909 | 27 | EXTI->IMR|=0b10; |
JoergSturm | 1:17722afc5909 | 28 | EXTI->RTSR|=0b10; |
JoergSturm | 1:17722afc5909 | 29 | } |
JoergSturm | 1:17722afc5909 | 30 | |
JoergSturm | 0:45170c77adc7 | 31 | static void NVIC_Init(void) |
JoergSturm | 0:45170c77adc7 | 32 | { |
JoergSturm | 0:45170c77adc7 | 33 | /* TIM6_IRQn interrupt configuration */ |
JoergSturm | 1:17722afc5909 | 34 | //HAL_NVIC_SetPriority(TIM6_IRQn, 0, 0); |
JoergSturm | 0:45170c77adc7 | 35 | NVIC_SetVector(TIM6_IRQn, (uint32_t)&TIM6_IRQHandler); |
JoergSturm | 0:45170c77adc7 | 36 | HAL_NVIC_EnableIRQ(TIM6_IRQn); |
JoergSturm | 1:17722afc5909 | 37 | NVIC_SetVector(EXTI1_IRQn, (uint32_t)&EX1IRQhandler); |
JoergSturm | 1:17722afc5909 | 38 | HAL_NVIC_EnableIRQ(EXTI1_IRQn); |
JoergSturm | 0:45170c77adc7 | 39 | } |
JoergSturm | 0:45170c77adc7 | 40 | |
JoergSturm | 0:45170c77adc7 | 41 | /* TIM6 init function */ |
JoergSturm | 0:45170c77adc7 | 42 | static void TIM6_Init(void) |
JoergSturm | 0:45170c77adc7 | 43 | { |
JoergSturm | 0:45170c77adc7 | 44 | /* |
JoergSturm | 0:45170c77adc7 | 45 | __TIM6_CLK_ENABLE(); |
JoergSturm | 0:45170c77adc7 | 46 | htim6.Instance = TIM6; |
JoergSturm | 0:45170c77adc7 | 47 | htim6.Init.Prescaler = 3200; |
JoergSturm | 0:45170c77adc7 | 48 | htim6.Init.CounterMode = TIM_COUNTERMODE_UP; |
JoergSturm | 0:45170c77adc7 | 49 | htim6.Init.Period = 5000; |
JoergSturm | 0:45170c77adc7 | 50 | if (HAL_TIM_Base_Init(&htim6) != HAL_OK) { |
JoergSturm | 0:45170c77adc7 | 51 | while(1) { |
JoergSturm | 0:45170c77adc7 | 52 | } |
JoergSturm | 0:45170c77adc7 | 53 | } |
JoergSturm | 0:45170c77adc7 | 54 | HAL_TIM_Base_Start_IT(&htim6); |
JoergSturm | 0:45170c77adc7 | 55 | */ |
JoergSturm | 0:45170c77adc7 | 56 | |
JoergSturm | 0:45170c77adc7 | 57 | RCC->APB1ENR|=0b10000; //Clock Enable |
JoergSturm | 0:45170c77adc7 | 58 | TIM6->PSC=3200; //Prescaler 100µs |
JoergSturm | 0:45170c77adc7 | 59 | TIM6->ARR=5000; //Autoreload 5000*100µs = 0,5s |
JoergSturm | 0:45170c77adc7 | 60 | TIM6->DIER=1; //UIE = 1 (Update Interrupt Enable) |
JoergSturm | 0:45170c77adc7 | 61 | TIM6->SR=0; //UIF =0 (Update Interrupt Flag) |
JoergSturm | 0:45170c77adc7 | 62 | TIM6->CR1=1; //CEN=1 (Counter Enable) |
JoergSturm | 0:45170c77adc7 | 63 | } |
JoergSturm | 0:45170c77adc7 | 64 | |
JoergSturm | 0:45170c77adc7 | 65 | int main() |
JoergSturm | 0:45170c77adc7 | 66 | { |
JoergSturm | 0:45170c77adc7 | 67 | TIM6_Init(); |
JoergSturm | 1:17722afc5909 | 68 | EX1init(); |
JoergSturm | 0:45170c77adc7 | 69 | NVIC_Init(); |
JoergSturm | 0:45170c77adc7 | 70 | while(1) { |
JoergSturm | 0:45170c77adc7 | 71 | /* |
JoergSturm | 0:45170c77adc7 | 72 | if (TIM6->SR==1) |
JoergSturm | 0:45170c77adc7 | 73 | { |
JoergSturm | 0:45170c77adc7 | 74 | TIM6->SR=0; |
JoergSturm | 0:45170c77adc7 | 75 | myled=!myled; |
JoergSturm | 0:45170c77adc7 | 76 | } |
JoergSturm | 0:45170c77adc7 | 77 | */ |
JoergSturm | 0:45170c77adc7 | 78 | } |
JoergSturm | 0:45170c77adc7 | 79 | |
JoergSturm | 0:45170c77adc7 | 80 | } |