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

Dependencies:   mbed-os

Committer:
JoergSturm
Date:
Sun Mar 01 10:08:57 2020 +0000
Revision:
0:45170c77adc7
Child:
1:17722afc5909
neu

Who changed what in which revision?

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