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

Dependencies:   mbed-os

Revision:
2:a5ee88ab46b2
Parent:
1:17722afc5909
Child:
3:b0716d14c3bf
--- a/main.cpp	Fri Apr 24 14:13:21 2020 +0000
+++ b/main.cpp	Thu Nov 12 13:28:29 2020 +0000
@@ -2,79 +2,70 @@
 
 
 DigitalOut myled(PC_0);
-DigitalOut PC1(PC_1);
+DigitalOut myled2(PC_1);
+DigitalOut PC2(PC_2);
 
 void EX1IRQhandler(void)
 {
-    //PC1=!PC1;
-    GPIOC->ODR=~GPIOC->ODR;
-    EXTI->PR=0b10;
-    HAL_NVIC_ClearPendingIRQ(EXTI1_IRQn);
+    PC2=!PC2;
 }
 
-//TIM_HandleTypeDef htim6;
 void TIM6_IRQHandler(void)
 {
     myled=!myled;
     TIM6->SR=0;
     HAL_NVIC_ClearPendingIRQ(TIM6_IRQn);
 }
-
+void TIM7_IRQHandler(void)
+{
+    myled2=!myled2;
+    TIM7->SR=0;
+    HAL_NVIC_ClearPendingIRQ(TIM7_IRQn);
+}
+InterruptIn PA1(PA_1);
 void EX1init(void)
 {
-RCC->AHBENR|=0b111;
-GPIOA->PUPDR|=0b1000;
-EXTI->IMR|=0b10;   
-EXTI->RTSR|=0b10; 
+PA1.rise(&EX1IRQhandler);
+PA1.mode(PullDown);
 }
 
-static void NVIC_Init(void)
+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);
-    NVIC_SetVector(EXTI1_IRQn, (uint32_t)&EX1IRQhandler);
-    HAL_NVIC_EnableIRQ(EXTI1_IRQn);
+   /* TIM7_IRQn interrupt configuration */
+    NVIC_SetVector(TIM7_IRQn, (uint32_t)&TIM7_IRQHandler);
+    HAL_NVIC_EnableIRQ(TIM7_IRQn);
 }
 
 /* TIM6 init function */
-static void TIM6_Init(void)
+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->PSC=3199;         //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)
 }
+void TIM7_Init(void)
+{
+    RCC->APB1ENR|=0b100000;  //Clock Enable
+    TIM7->PSC=3199;         //Prescaler 100µs
+    TIM7->ARR=15000;         //Autoreload 15000*100µs = 1,5s
+    TIM7->DIER=1;           //UIE = 1 (Update Interrupt Enable)
+    TIM7->SR=0;             //UIF =0 (Update Interrupt Flag)
+    TIM7->CR1=1;            //CEN=1 (Counter Enable)
+}
 
 int main()
 {
     TIM6_Init();
+    TIM7_Init();
     EX1init();
     NVIC_Init();
     while(1) {
-        /*
-        if (TIM6->SR==1)
-        {
-            TIM6->SR=0;
-            myled=!myled;
-        }
-        */
     }
 
 }
\ No newline at end of file