#define PWM_FREQ ((u16) 16000) // in Hz (N.b.: pattern type is center aligned) #define PWM_PRSC ((u8)0) #define PWM_PERIOD ((u16) (CKTIM / (u32)(2 * PWM_FREQ *(PWM_PRSC+1))) TIM_TimeBaseStructInit(&TIM1_TimeBaseStructure); /* Time Base configuration */ TIM1_TimeBase...
控制寄存器中的PRSC域用来设置分频器,为了产生低频的PWM信号,可以设置PRSC域使时钟分频范围在(1~128), 然后在配置PWM的初始值,初始化PWM模块。一定要学会看图学习嵌入式。 死区时间插入逻辑 在控制IGBT,等开关管组成的H桥工作的时候死区时间是非常重要的一个功能,死区时间如果设置不当,还会影响系统工作,甚至造成严重后...
结合代码做一下计算;系统频率为72M,下面是时基单元的配置; #define PWM_FREQ ((u16) 16000) // in Hz (N.b.: pattern type is center aligned)#define PWM_PRSC ((u8)0)#define PWM_PERIOD ((u16) (CKTIM / (u32)(2 * PWM_FREQ *(PWM_PRSC+1))) TIM_TimeBaseStructInit(&TIM1_TimeBaseStr...
#definePWM_FREQ ((u16) 16000)// in Hz (N.b.: pattern type is center aligned) #definePWM_PRSC ((u8)0) #definePWM_PERIOD ((u16) (CKTIM / (u32)(2 * PWM_FREQ *(PWM_PRSC+1))) TIM_TimeBaseStructInit(&TIM1_TimeBaseStructure); /* Time Base configuration */ TIM1_TimeBaseStructu...
5. PWM模块使用时钟源为MC_PLL_CLK, 该时钟源通过AUX Clock Selector 0选择FMPLL_0(64MHZ)为时钟源,同时2分频,因此MC_PLL_CLK的时钟频率为32MHZ, 经过CTRL1模块的PRSC选择8分频,因此PWM时钟为4MHZ,满量程计数器VAL1取值为0x6800时,输出的PWM频率为150.24HZ ...
|( 0x0UL << 4UL ) //PRSC |( 0x0UL << 3UL ) //SPLIT |( 0x0UL << 2UL ) //LDMOD, |( 0x0UL << 1UL ) //DBLX |( 0x0UL << 0UL ); //DBLEN /* Control Register */ PWMBase->SM[1].CTRL = ( 0x0UL << 12UL ) //LDFQ ...
(u32)72000000uL) //主频 #define PWM_PRSC ((u8)0) //TIM1分频系数 #define PWM_FREQ ((u16) 15000) //PWM频率(Hz) #define PWM_PERIOD ((u16) (CKTIM / (u32)(2 * PWM_FREQ *(PWM_PRSC+1))) #define REP_RATE (1) //该参数可以调整电流环的刷新频率,刷新周期:(REP_RATE + 1)/(2...
|( 0x0UL << 4UL ) //PRSC |( 0x0UL << 3UL ) //SPLIT |( 0x0UL << 2UL ) //LDMOD, |( 0x0UL << 1UL ) //DBLX |( 0x0UL << 0UL )); //DBLEN /* Control Register */ PWMBase->SM[2].CTRL = (uint16_t)(( 0x0UL << 12UL ) //LDFQ ...
#definePWM_PERIOD ((u16) (CKTIM / (u32)(2 * PWM_FREQ *(PWM_PRSC+1))) TIM_TimeBaseStructInit(&TIM1_TimeBaseStructure); /* Time Base configuration */ TIM1_TimeBaseStructure.TIM_Prescaler =0x0; TIM1_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_CenterAligned1; TIM...
timer_deinit(TIMER0); timer_initpara.prescaler = PWM_PRSC; timer_initpara.alignedmode = TIMER_COUNTER_CENTER_DOWN; timer_initpara.period = HALF_PWM_PERIOD; /* 配置周期 */ timer_initpara.clockdivision = TIMER_CKDIV_DIV2; /* 分频 */ timer_initpara.repetitioncounter = 1; /* 重复计数器,...