Jack Hansdampf
/
TIM2_IRQ_F401
Testprogramm für Hardwaretimer TIM2 und TIM3 mit Nucleo-F401RE
Diff: main.cpp
- Revision:
- 0:45170c77adc7
- Child:
- 1:17722afc5909
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Mar 01 10:08:57 2020 +0000 @@ -0,0 +1,64 @@ +#include "mbed.h" +//#include "cmsis_nvic.h" + +DigitalOut myled(PC_0); +static void TIM6_Init(void); +static void NVIC_Init(void); + +void TIM6_IRQHandler(void); + +TIM_HandleTypeDef htim6; +void TIM6_IRQHandler(void) +{ + myled=!myled; + TIM6->SR=0; + HAL_NVIC_ClearPendingIRQ(TIM6_IRQn); +} + +static void NVIC_Init(void) +{ + /* TIM6_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(TIM6_IRQn, 0, 0); + NVIC_SetVector(TIM6_IRQn, (uint32_t)&TIM6_IRQHandler); + HAL_NVIC_EnableIRQ(TIM6_IRQn); +} + +/* TIM6 init function */ +static void TIM6_Init(void) +{ + /* + __TIM6_CLK_ENABLE(); + htim6.Instance = TIM6; + htim6.Init.Prescaler = 3200; + htim6.Init.CounterMode = TIM_COUNTERMODE_UP; + htim6.Init.Period = 5000; + if (HAL_TIM_Base_Init(&htim6) != HAL_OK) { + while(1) { + } + } + HAL_TIM_Base_Start_IT(&htim6); + */ + + RCC->APB1ENR|=0b10000; //Clock Enable + TIM6->PSC=3200; //Prescaler 100µs + TIM6->ARR=5000; //Autoreload 5000*100µs = 0,5s + TIM6->DIER=1; //UIE = 1 (Update Interrupt Enable) + TIM6->SR=0; //UIF =0 (Update Interrupt Flag) + TIM6->CR1=1; //CEN=1 (Counter Enable) +} + +int main() +{ + TIM6_Init(); + NVIC_Init(); + while(1) { + /* + if (TIM6->SR==1) + { + TIM6->SR=0; + myled=!myled; + } + */ + } + +} \ No newline at end of file