本帖最后由 reflecter 于 2015-3-18 00:56 编辑
各位飞友,近期我在啃KV10片子,读TWR-KV10Z32_SC的驱动函数及IAR FTM_EPWM_demo,发现了下述5个问题,特拎出来,烦请各位有空,帮答疑解惑~
一
- ftm.c
- void FTM_PWMInit(FTM_Type *pFTM, uint8_t u8PWMModeSelect, uint8_t u8PWMEdgeSelect)
- pFTM->SC = 0x0; /* disable counter */
- pFTM->MOD = FTM_MOD_INIT;
- #define FTM_MOD_INIT (20000-1) /*!< MOD inite value */ 为何MOD初值设为20000-1?
复制代码
二
- if(FTM_PWM_HIGHTRUEPULSE == u8PWMEdgeSelect)
- /* Configure timers PWM High True Pulses */
- for(i=0; i<channels; i++)
- {
- pFTM->CONTROLS[i].CnSC = FTM_CnSC_MSB_MASK | FTM_CnSC_ELSB_MASK;
- pFTM->CONTROLS[i].CnV = FTM_C0V_INIT + i*100; //为何CnV按通道赋的初值不同?
- }
复制代码
三
- 这初始化方式诡异的。为何要引入channels?
- if (FTM0 == pFTM)
- {
- channels = 6;
- SIM->SCGC6 |= SIM_SCGC6_FTM0_MASK;
- }
复制代码
四
- /* setup call back function for interrupt */
- FTM_SetCallback(FTM0, FTM0_Task); //ISR是怎么调用的?
复制代码
五
- ftm.h里FTM_SetChannelValue函数,竟然只定义了if(FTM0 == pFTM)!
复制代码
TWR-KV10Z32的链接,
点这里
Debug下来,时间设置都是对的
晚些时候,我将完整代码段发上来,再请您看看
一周热门 更多>