对TWR-KV10Z32_SC代码里几个不理解的地方

2020-02-19 20:59发布

本帖最后由 reflecter 于 2015-3-18 00:56 编辑

各位飞友,近期我在啃KV10片子,读TWR-KV10Z32_SC的驱动函数及IAR FTM_EPWM_demo,发现了下述5个问题,特拎出来,烦请各位有空,帮答疑解惑~


  1. ftm.c
  2. void FTM_PWMInit(FTM_Type *pFTM, uint8_t u8PWMModeSelect, uint8_t u8PWMEdgeSelect)

  3. pFTM->SC  = 0x0;                                    /* disable counter */  
  4.         pFTM->MOD = FTM_MOD_INIT;

  5. #define FTM_MOD_INIT        (20000-1)                /*!< MOD inite value */  为何MOD初值设为20000-1?
复制代码


  1. if(FTM_PWM_HIGHTRUEPULSE == u8PWMEdgeSelect)

  2. /* Configure timers PWM High True Pulses */
  3.         for(i=0; i<channels; i++)
  4.         {
  5.             pFTM->CONTROLS[i].CnSC = FTM_CnSC_MSB_MASK | FTM_CnSC_ELSB_MASK;  
  6.             pFTM->CONTROLS[i].CnV  = FTM_C0V_INIT + i*100;    //为何CnV按通道赋的初值不同?
  7.         }
复制代码


  1. 这初始化方式诡异的。为何要引入channels?
  2.         if (FTM0 == pFTM)
  3.     {
  4.         channels = 6;
  5.         SIM->SCGC6 |= SIM_SCGC6_FTM0_MASK;
  6.     }
复制代码


  1. /* setup call back function for interrupt */
  2.     FTM_SetCallback(FTM0, FTM0_Task);  //ISR是怎么调用的?
复制代码



  1. ftm.h里FTM_SetChannelValue函数,竟然只定义了if(FTM0 == pFTM)!
复制代码

TWR-KV10Z32的链接,点这里
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。