北京建设规划许可证网站,网站开发 荣誉资质,用jsp做网站登录界面模板,一般做个小程序多少钱本文基于野火例程进行解说
实验内容
本次实验输出一对互补的pwm波#xff0c;且进行死区时间的计算说明。
代码
互补输出对应的定时器初始化代码#xff1a; bsp_advance_tim.c
/********************************************************************************* fi…本文基于野火例程进行解说
实验内容
本次实验输出一对互补的pwm波且进行死区时间的计算说明。
代码
互补输出对应的定时器初始化代码 bsp_advance_tim.c
/********************************************************************************* file bsp_advance_tim.c* author STMicroelectronics* version V1.0* date 2015-xx-xx* brief 高级控制定时器互补输出范例******************************************************************************* attention** 实验平台:野火 STM32 F407 开发板 * 论坛 :http://www.firebbs.cn* 淘宝 :http://firestm32.taobao.com********************************************************************************/#include ./tim/bsp_advance_tim.hTIM_HandleTypeDef TIM_TimeBaseStructure;
TIM_OC_InitTypeDef TIM_OCInitStructure;__IO uint16_t ChannelPulse 500;/*** brief 配置TIM复用输出PWM时用到的I/O* param 无* retval 无*/
static void TIMx_GPIO_Config(void)
{/*定义一个GPIO_InitTypeDef类型的结构体*/GPIO_InitTypeDef GPIO_InitStructure;/*开启定时器相关的GPIO外设时钟*/ADVANCE_OCPWM_GPIO_CLK_ENABLE();ADVANCE_OCNPWM_GPIO_CLK_ENABLE();ADVANCE_BKIN_GPIO_CLK_ENABLE(); /* 定时器功能引脚初始化 */ GPIO_InitStructure.Pin ADVANCE_OCPWM_PIN; GPIO_InitStructure.Mode GPIO_MODE_AF_PP; GPIO_InitStructure.Pull GPIO_NOPULL;GPIO_InitStructure.Speed GPIO_SPEED_HIGH; GPIO_InitStructure.Alternate ADVANCE_OCPWM_AF;HAL_GPIO_Init(ADVANCE_OCPWM_GPIO_PORT, GPIO_InitStructure); GPIO_InitStructure.Pin ADVANCE_OCNPWM_PIN; GPIO_InitStructure.Alternate ADVANCE_OCNPWM_AF; HAL_GPIO_Init(ADVANCE_OCNPWM_GPIO_PORT, GPIO_InitStructure);GPIO_InitStructure.Pin ADVANCE_BKIN_PIN; GPIO_InitStructure.Alternate ADVANCE_BKIN_AF; HAL_GPIO_Init(ADVANCE_BKIN_GPIO_PORT, GPIO_InitStructure);
}/** 注意TIM_TimeBaseInitTypeDef结构体里面有5个成员TIM6和TIM7的寄存器里面只有* TIM_Prescaler和TIM_Period所以使用TIM6和TIM7的时候只需初始化这两个成员即可* 另外三个成员是通用定时器和高级定时器才有.*-----------------------------------------------------------------------------* TIM_Prescaler 都有* TIM_CounterMode TIMx,x[6,7]没有其他都有基本定时器* TIM_Period 都有* TIM_ClockDivision TIMx,x[6,7]没有其他都有(基本定时器)* TIM_RepetitionCounter TIMx,x[1,8]才有(高级定时器)*-----------------------------------------------------------------------------*/
static void TIM_Mode_Config(void)
{TIM_BreakDeadTimeConfigTypeDef TIM_BDTRInitStructure;// 开启TIMx_CLK,x[1,8] ADVANCE_TIM_CLK_ENABLE(); /* 定义定时器的句柄即确定定时器寄存器的基地址*/TIM_TimeBaseStructure.Instance ADVANCE_TIM;/* 累计 TIM_Period个后产生一个更新或者中断*/ //当定时器从0计数到999即为1000次为一个定时周期TIM_TimeBaseStructure.Init.Period 1000-1;// 高级控制定时器时钟源TIMxCLK HCLK168MHz // 设定定时器频率为TIMxCLK/(TIM_Prescaler1)1MHzTIM_TimeBaseStructure.Init.Prescaler 168-1; // 采样时钟分频TIM_TimeBaseStructure.Init.ClockDivisionTIM_CLOCKDIVISION_DIV1;// 计数方式TIM_TimeBaseStructure.Init.CounterModeTIM_COUNTERMODE_UP;// 重复计数器TIM_TimeBaseStructure.Init.RepetitionCounter0; // 初始化定时器TIMx, x[1,8]HAL_TIM_PWM_Init(TIM_TimeBaseStructure);/*PWM模式配置*///配置为PWM模式1TIM_OCInitStructure.OCMode TIM_OCMODE_PWM1;TIM_OCInitStructure.Pulse ChannelPulse;TIM_OCInitStructure.OCPolarity TIM_OCPOLARITY_HIGH;TIM_OCInitStructure.OCNPolarity TIM_OCNPOLARITY_HIGH;TIM_OCInitStructure.OCIdleState TIM_OCIDLESTATE_SET;TIM_OCInitStructure.OCNIdleState TIM_OCNIDLESTATE_RESET;//初始化通道1输出PWM HAL_TIM_PWM_ConfigChannel(TIM_TimeBaseStructure,TIM_OCInitStructure,TIM_CHANNEL_1);/* 自动输出使能断路、死区时间和锁定配置 */TIM_BDTRInitStructure.OffStateRunMode TIM_OSSR_ENABLE;TIM_BDTRInitStructure.OffStateIDLEMode TIM_OSSI_ENABLE;TIM_BDTRInitStructure.LockLevel TIM_LOCKLEVEL_1;TIM_BDTRInitStructure.DeadTime 0xff;TIM_BDTRInitStructure.BreakState TIM_BREAK_ENABLE;TIM_BDTRInitStructure.BreakPolarity TIM_BREAKPOLARITY_LOW;TIM_BDTRInitStructure.AutomaticOutput TIM_AUTOMATICOUTPUT_ENABLE;HAL_TIMEx_ConfigBreakDeadTime(TIM_TimeBaseStructure, TIM_BDTRInitStructure);/* 定时器通道1输出PWM */HAL_TIM_PWM_Start(TIM_TimeBaseStructure,TIM_CHANNEL_1);/* 定时器通道1互补输出PWM */HAL_TIMEx_PWMN_Start(TIM_TimeBaseStructure,TIM_CHANNEL_1);
}/*** brief 初始化高级控制定时器定时1s产生一次中断* param 无* retval 无*/
void TIMx_Configuration(void)
{TIMx_GPIO_Config(); TIM_Mode_Config();
}/*********************************************END OF FILE**********************/头文件 bsp_advance_tim.h
#ifndef __ADVANCE_TIM_H
#define __ADVANCE_TIM_H#include stm32f4xx.h/* 定时器 */
#define ADVANCE_TIM TIM8
#define ADVANCE_TIM_CLK_ENABLE() __TIM8_CLK_ENABLE()/* TIM8通道1输出引脚 */
#define ADVANCE_OCPWM_PIN GPIO_PIN_6
#define ADVANCE_OCPWM_GPIO_PORT GPIOC
#define ADVANCE_OCPWM_GPIO_CLK_ENABLE() __GPIOC_CLK_ENABLE()
#define ADVANCE_OCPWM_AF GPIO_AF3_TIM8/* TIM8通道1互补输出引脚 */
#define ADVANCE_OCNPWM_PIN GPIO_PIN_5
#define ADVANCE_OCNPWM_GPIO_PORT GPIOA
#define ADVANCE_OCNPWM_GPIO_CLK_ENABLE() __GPIOA_CLK_ENABLE()
#define ADVANCE_OCNPWM_AF GPIO_AF3_TIM8/* TIM8断路输入引脚 */
#define ADVANCE_BKIN_PIN GPIO_PIN_6
#define ADVANCE_BKIN_GPIO_PORT GPIOA
#define ADVANCE_BKIN_GPIO_CLK_ENABLE() __GPIOA_CLK_ENABLE()
#define ADVANCE_BKIN_AF GPIO_AF3_TIM8extern TIM_HandleTypeDef TIM_TimeBaseStructure;void TIMx_Configuration(void);#endif /* __ADVANCE_TIM_H */代码讲解
断路功能
//在初始化文件里这几句代码配置了断路功能的模式TIM_OCInitStructure.OCIdleState TIM_OCIDLESTATE_SET;//当空闲状态下PWM通道置高电平
TIM_OCInitStructure.OCNIdleState TIM_OCNIDLESTATE_RESET;//当空闲模状态下PWM互补通道置低电平
TIM_BDTRInitStructure.BreakState TIM_BREAK_ENABLE;//开启断路功能
TIM_BDTRInitStructure.BreakPolarity TIM_BREAKPOLARITY_LOW;//低电平断路
TIM_BDTRInitStructure.AutomaticOutputTIM_AUTOMATICOUTPUT_ENABLE;//断路状态消失后自动恢复输出以上语句表示当断路功能对应的引脚输入变为低电平时互补输出的功能就被禁止此时变为空闲状态而pwm对应的通道输出高电平互补对应的通道变为低电平而当断路功能对应的引脚变为高电平时互补输出又再次出现。
死区时间计算 通过上面两张图就可以知道死区时间的计算公式了
下面列举出配置死区时间的代码
TIM_TimeBaseStructure.Init.ClockDivisionTIM_CLOCKDIVISION_DIV1;//设置分频系数详细看第一张图。TIM_BDTRInitStructure.DeadTime 0xff;//配置死区时间具体计算看第二章图
开始计算假设定时器的频率为165Mhz,且配置语句TIM_BDTRInitStructure.DeadTime 0xff则DTG[7:0]被写入11111111,则对应第四个计算方式TIM_TimeBaseStructure.Init.ClockDivisionTIM_CLOCKDIVISION_DIV1表示对定时器频率1分频则此时tDTS1*Tck_int (1/165000000)s,此时代码计算公式 DT(32DTG[4:0])*Tdtg(3231)16(1/165000000)*1000000us6us 文章转载自: http://www.morning.yhtnr.cn.gov.cn.yhtnr.cn http://www.morning.rnygs.cn.gov.cn.rnygs.cn http://www.morning.qfdmh.cn.gov.cn.qfdmh.cn http://www.morning.cnqff.cn.gov.cn.cnqff.cn http://www.morning.xhklb.cn.gov.cn.xhklb.cn http://www.morning.rkxk.cn.gov.cn.rkxk.cn http://www.morning.rcdmp.cn.gov.cn.rcdmp.cn http://www.morning.wnhgb.cn.gov.cn.wnhgb.cn http://www.morning.gpsr.cn.gov.cn.gpsr.cn http://www.morning.pmrlt.cn.gov.cn.pmrlt.cn http://www.morning.nkwgy.cn.gov.cn.nkwgy.cn http://www.morning.jwgnn.cn.gov.cn.jwgnn.cn http://www.morning.gmgnp.cn.gov.cn.gmgnp.cn http://www.morning.ssrjt.cn.gov.cn.ssrjt.cn http://www.morning.rwjtf.cn.gov.cn.rwjtf.cn http://www.morning.lpmlx.cn.gov.cn.lpmlx.cn http://www.morning.tbnpn.cn.gov.cn.tbnpn.cn http://www.morning.mkczm.cn.gov.cn.mkczm.cn http://www.morning.plydc.cn.gov.cn.plydc.cn http://www.morning.frpfk.cn.gov.cn.frpfk.cn http://www.morning.hsrch.cn.gov.cn.hsrch.cn http://www.morning.pgjyc.cn.gov.cn.pgjyc.cn http://www.morning.gwtbn.cn.gov.cn.gwtbn.cn http://www.morning.kpfds.cn.gov.cn.kpfds.cn http://www.morning.jpdbj.cn.gov.cn.jpdbj.cn http://www.morning.wphzr.cn.gov.cn.wphzr.cn http://www.morning.jksgy.cn.gov.cn.jksgy.cn http://www.morning.kqfdrqb.cn.gov.cn.kqfdrqb.cn http://www.morning.mzbyl.cn.gov.cn.mzbyl.cn http://www.morning.sjftk.cn.gov.cn.sjftk.cn http://www.morning.pxdgy.cn.gov.cn.pxdgy.cn http://www.morning.dwmtk.cn.gov.cn.dwmtk.cn http://www.morning.kchwr.cn.gov.cn.kchwr.cn http://www.morning.sfwfk.cn.gov.cn.sfwfk.cn http://www.morning.sqqdy.cn.gov.cn.sqqdy.cn http://www.morning.jyzqn.cn.gov.cn.jyzqn.cn http://www.morning.chfxz.cn.gov.cn.chfxz.cn http://www.morning.qnwyf.cn.gov.cn.qnwyf.cn http://www.morning.cfybl.cn.gov.cn.cfybl.cn http://www.morning.kkysz.cn.gov.cn.kkysz.cn http://www.morning.rywn.cn.gov.cn.rywn.cn http://www.morning.skwwj.cn.gov.cn.skwwj.cn http://www.morning.mwwnz.cn.gov.cn.mwwnz.cn http://www.morning.plqsc.cn.gov.cn.plqsc.cn http://www.morning.bsbcp.cn.gov.cn.bsbcp.cn http://www.morning.jtszm.cn.gov.cn.jtszm.cn http://www.morning.ztmkg.cn.gov.cn.ztmkg.cn http://www.morning.tphjl.cn.gov.cn.tphjl.cn http://www.morning.qpnb.cn.gov.cn.qpnb.cn http://www.morning.kzdwt.cn.gov.cn.kzdwt.cn http://www.morning.tndxg.cn.gov.cn.tndxg.cn http://www.morning.jspnx.cn.gov.cn.jspnx.cn http://www.morning.knzdt.cn.gov.cn.knzdt.cn http://www.morning.kgjyy.cn.gov.cn.kgjyy.cn http://www.morning.nllst.cn.gov.cn.nllst.cn http://www.morning.sfmqm.cn.gov.cn.sfmqm.cn http://www.morning.dbrnl.cn.gov.cn.dbrnl.cn http://www.morning.swyr.cn.gov.cn.swyr.cn http://www.morning.twdkt.cn.gov.cn.twdkt.cn http://www.morning.drytb.cn.gov.cn.drytb.cn http://www.morning.cmzgt.cn.gov.cn.cmzgt.cn http://www.morning.ggnrt.cn.gov.cn.ggnrt.cn http://www.morning.bzqnp.cn.gov.cn.bzqnp.cn http://www.morning.mgfnt.cn.gov.cn.mgfnt.cn http://www.morning.crdtx.cn.gov.cn.crdtx.cn http://www.morning.yrsg.cn.gov.cn.yrsg.cn http://www.morning.hjlsll.com.gov.cn.hjlsll.com http://www.morning.ktskc.cn.gov.cn.ktskc.cn http://www.morning.zdydj.cn.gov.cn.zdydj.cn http://www.morning.mrcpy.cn.gov.cn.mrcpy.cn http://www.morning.qfnrx.cn.gov.cn.qfnrx.cn http://www.morning.fldk.cn.gov.cn.fldk.cn http://www.morning.mzrqj.cn.gov.cn.mzrqj.cn http://www.morning.ngzkt.cn.gov.cn.ngzkt.cn http://www.morning.tlyms.cn.gov.cn.tlyms.cn http://www.morning.zpyh.cn.gov.cn.zpyh.cn http://www.morning.lhhdy.cn.gov.cn.lhhdy.cn http://www.morning.wnqfz.cn.gov.cn.wnqfz.cn http://www.morning.cykqb.cn.gov.cn.cykqb.cn http://www.morning.synkr.cn.gov.cn.synkr.cn