中级会员
- 积分
- 402
- 威望
- 216
- 贡献
- 112
- 兑换币
- 134
- 注册时间
- 2013-7-13
- 在线时间
- 37 小时
- 毕业学校
- 暂无
|
主函数中相关代码如下:
// FTM_PWM_init(FTM0, CH0, 300, 10);
FTM_PWM_freq(FTM0,300);
FTM_PWM_Duty(FTM0,CH0,10);
使用FTM_PWM_init函数可以实现正确的波形输出
但是注释掉init函数,单独使用freq和Duty函数的时候不能输出正确的波形
使用Jlink单步调式的时候发现程序卡在红字部分,如下:
void FTM_PWM_Duty(FTMn ftmn, CHn ch, u32 duty)
{
u32 cv;
u32 mod;
ASSERT( (ftmn == FTM0) || ( (ftmn == FTM1 || ftmn == FTM2 ) && (ch <= CH1)) ); //检查传递进来的通道是否正确
ASSERT(duty <= FTM_PRECISON); //用断言检测 占空比是否合理
//占空比 = (CnV-CNTIN)/(MOD-CNTIN+1)
mod = FTM_MOD_REG(FTMx[ftmn]); //读取 MOD 的值
cv = (duty * (mod - 0 + 1)) / FTM_PRECISON;
// 配置FTM通道值
FTM_CnV_REG(FTMx[ftmn], ch) = cv;
}
新手上路,求解各位前辈高手!
|
|