From 945ba42f7550d5a203e43d82b43ed82dc981d9e9 Mon Sep 17 00:00:00 2001
From: tao_z <tzj0429@163.com>
Date: Wed, 30 Jun 2021 22:05:52 +0800
Subject: [PATCH] 霍尔输入中断正常,需要调试马达转动

---
 USR/SRC/pwm.c |   31 +++++++++++++++++++++----------
 1 files changed, 21 insertions(+), 10 deletions(-)

diff --git a/USR/SRC/pwm.c b/USR/SRC/pwm.c
index fc83065..b30d6e5 100644
--- a/USR/SRC/pwm.c
+++ b/USR/SRC/pwm.c
@@ -9,7 +9,7 @@
  * 
  */
 #include "pwm.h"
-
+static volatile uint32_t timer_outcnt = 0;
 /*****************************************************************************************************
 Timer2 is used to speed cal
 APB1 is 64M ,so Timer2 clock is 64M,after prescaler 480 is 0.1M(10us)
@@ -24,7 +24,7 @@
 
     timer_deinit(TIMER2);
 
-    timercontralcfg.prescaler = 6399; //64Mhz /6400 =0.01Mhz = 100us
+    timercontralcfg.prescaler = 4799; //48Mhz /4800 =0.01Mhz = 100us
     timercontralcfg.alignedmode = TIMER_COUNTER_EDGE;
     timercontralcfg.counterdirection = TIMER_COUNTER_UP;
     timercontralcfg.period = PERIOD_CAP; //100us*10000=1s
@@ -48,7 +48,7 @@
 *****************************************************************************************************/
 static void Timer0Init(void)
 {
-    uint16_t Duty = PERIOD_CMP + 1;
+    uint16_t Duty = PERIOD_CMP / 10;
     timer_parameter_struct timercontralcfg;
     timer_oc_parameter_struct timeroutcfg[3];
     timer_break_parameter_struct timer_breakpara;
@@ -63,22 +63,22 @@
 
     timeroutcfg[0].ocpolarity = TIMER_OC_POLARITY_HIGH; //channel output polarity is high
     timeroutcfg[0].ocnpolarity = TIMER_OCN_POLARITY_HIGH;
-    timeroutcfg[0].outputstate = TIMER_CCX_ENABLE;   //channel enable
-    timeroutcfg[0].outputnstate = TIMER_CCXN_ENABLE; //channel complementary enable
+    timeroutcfg[0].outputstate = TIMER_CCX_ENABLE;    //channel enable
+    timeroutcfg[0].outputnstate = TIMER_CCXN_DISABLE; //channel complementary DISABLE
     timeroutcfg[0].ocidlestate = TIMER_OC_IDLE_STATE_LOW;
     timeroutcfg[0].ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;
 
     timeroutcfg[1].ocpolarity = TIMER_OC_POLARITY_HIGH; //channel output polarity is high
     timeroutcfg[1].ocnpolarity = TIMER_OCN_POLARITY_HIGH;
-    timeroutcfg[1].outputstate = TIMER_CCX_ENABLE;   //channel enable
-    timeroutcfg[1].outputnstate = TIMER_CCXN_ENABLE; //channel complementary enable
+    timeroutcfg[1].outputstate = TIMER_CCX_ENABLE;    //channel enable
+    timeroutcfg[1].outputnstate = TIMER_CCXN_DISABLE; //channel complementary  DISABLE
     timeroutcfg[1].ocidlestate = TIMER_OC_IDLE_STATE_LOW;
     timeroutcfg[1].ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;
 
     timeroutcfg[2].ocpolarity = TIMER_OC_POLARITY_HIGH; //channel output polarity is high
     timeroutcfg[2].ocnpolarity = TIMER_OCN_POLARITY_HIGH;
-    timeroutcfg[2].outputstate = TIMER_CCX_ENABLE;   //channel enable
-    timeroutcfg[2].outputnstate = TIMER_CCXN_ENABLE; //channel complementary enable
+    timeroutcfg[2].outputstate = TIMER_CCX_ENABLE;    //channel enable
+    timeroutcfg[2].outputnstate = TIMER_CCXN_DISABLE; //channel complementary  DISABLE
     timeroutcfg[2].ocidlestate = TIMER_OC_IDLE_STATE_LOW;
     timeroutcfg[2].ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;
 
@@ -116,7 +116,7 @@
 
 void TimerInit(void)
 {
-    // rcu_periph_clock_enable(RCU_TIMER2);
+    rcu_periph_clock_enable(RCU_TIMER2);
     rcu_periph_clock_enable(RCU_TIMER0);
     Timer0Init();
     Timer2Init();
@@ -143,3 +143,14 @@
 {
     timer_disable(TIMER2);
 }
+extern void TIMER2_IRQHandler_CallBack(void)
+{
+    timer_outcnt++;
+}
+
+extern uint32_t GetSpeedTimerOutcnt(void)
+{
+    uint32_t rtn = timer_outcnt;
+    timer_outcnt = 0;
+    return rtn;
+}

--
Gitblit v1.8.0