|
本帖最后由 cl1cl1cl1cl1 于 2015-11-15 12:25 编辑
KEA64看见官网介绍例程多是CW环境和KEIL下的例程,下了库 KEXX_DRIVERS_V1.2.1_DEVD 又是KE系列的虽说差不多,但要配置FTM组合不对称PWM还真有些不顺,而且debug也没有IAR方便(我用IAR的多些)。
找找IAR例程应该有KEA64系列的,就打开IAR的
接着
选择自定义文件夹,把FTM例子就下来了。
接着修改FTM的寄存器。
FTM2_SC |= FTM_SC_TOIE_MASK;//打开TOIE中断 每次匹配中断
SIM_SOPT &=~SIM_SOPT_NMIE_MASK;//将NMI禁止 用来复用FTM2_CH4
FTM2_MODE
|= FTM_MODE_WPDIS_MASK //打开MODE WPDIS位的写保护
| FTM_MODE_FTMEN_MASK;//FTM 使能 1 自由运行计数器并且同步与 TPM 行为不同。
FTM2_COMBINE =
FTM_COMBINE_COMBINE0_MASK //组合通道(n = 0) 1 通道(n)和(n+1)组合。
| FTM_COMBINE_COMP0_MASK //通道(n)互补(n = 0) 1 通道(n+1)输出与通道(n)输出互补。
| FTM_COMBINE_SYNCEN0_MASK //同步使能(n = 0) 1 使能该通道对中的 PWM 同步。
| FTM_COMBINE_DTEN0_MASK |//死区时间使能(n = 0) 1 使能该通道对中的死区时间插入。
FTM_COMBINE_COMBINE1_MASK | FTM_COMBINE_COMP1_MASK | FTM_COMBINE_SYNCEN1_MASK | FTM_COMBINE_DTEN1_MASK
|FTM_COMBINE_COMBINE2_MASK | FTM_COMBINE_COMP2_MASK | FTM_COMBINE_SYNCEN2_MASK | FTM_COMBINE_DTEN2_MASK
;
FTM2_C0SC |= FTM_CnSC_ELSA_MASK |
FTM_CnSC_MSA_MASK; /* 组合PWM输出 高真脉冲(通道(n)匹配时置位,通道(n+1)匹配时清零) */
FTM2_C1SC |= FTM_CnSC_ELSA_MASK |
FTM_CnSC_MSA_MASK; /* 组合PWM输出 高真脉冲(通道(n)匹配时置位,通道(n+1)匹配时清零) */
FTM2_C2SC |= FTM_CnSC_ELSA_MASK |
FTM_CnSC_MSA_MASK; /* 组合PWM输出 高真脉冲(通道(n)匹配时置位,通道(n+1)匹配时清零) */
FTM2_C3SC |= FTM_CnSC_ELSA_MASK |
FTM_CnSC_MSA_MASK; /* 组合PWM输出 高真脉冲(通道(n)匹配时置位,通道(n+1)匹配时清零) */
FTM2_C4SC |= FTM_CnSC_ELSA_MASK |
FTM_CnSC_MSA_MASK; /* 组合PWM输出 高真脉冲(通道(n)匹配时置位,通道(n+1)匹配时清零) */
FTM2_C5SC |= FTM_CnSC_ELSA_MASK |
FTM_CnSC_MSA_MASK; /* 组合PWM输出 高真脉冲(通道(n)匹配时置位,通道(n+1)匹配时清零) */
FTM2_CNTIN = 10;//开始
FTM2_MOD = 65500;//结束
FTM_SetPeriod(0, 15625); /* Interrupt every 15625 counts, equal to every 100 ms */
FTM_SetPeriod(1, 31250); /* Interrupt every 31250 counts, equal to every 200 ms */
FTM_SetPeriod(2, 46875); /* Interrupt every 46875 counts, equal to every 300 ms */
FTM_SetPeriod(3, 62500); /* Interrupt every 62500 counts, equal to every 400 ms */
FTM2_PWMLOAD = FTM_PWMLOAD_LDOK_MASK;//自动加载缓存值
//FTM2_SC &= ~FTM_SC_CPWMS_MASK; //中心对齐 PWM 选择 1 FTM 计数器可工作在先增后减计数模式中。
//0 FTM 计数器可工作在向上计数模式中。
FTM2_SC |= FTM_SC_CPWMS_MASK; //中心对齐 PWM 选择 1 FTM 计数器可工作在先增后减计数模式中。
//0 FTM 计数器可工作在向上计数模式中。
//死区设置
FTM2_DEADTIME |= FTM_DEADTIME_DTPS_MASK//系统时钟 0xc0 16分频
|FTM_DEADTIME_DTVAL(3);//20个时钟周期
//0 FTM2 CH4 映射到 PTB4 上。默认 SIM_PINSEL = |
FTM2_SC |= FTM_SC_CLKS(1); /*FTM2 use system clock*///时钟源选择 01 系统时钟
经过这些修改得到了我需要的带死区的PWM波形。
下面会加入AD 和 比较器功能串口modbus等代码。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|