2222200_zh-CN

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

2222200_zh-CN

2222200_zh-CN

当预分频器设置的值与 KPWM_Presca 不同时,IMXRT1062 上的 PWM 捕获已停止

您好,

,我遇到了一个问题,在配置四个 PWM 外围设备中任何一个的时钟分频器时,如果使用的值不是 kPWM_Prescale_Divide_1,则所选 PWM 外围设备的计数器根本不起作用。

我使用的是 imxrt1062 处理器和 MCUXpresso IDE v11.9.1

,希望你们能尽快支持我。
下面是我配置和初始化 PWM 外围设备的代码片段。

静态 void pwm_init(void)

{

pwm_config_tpwmConfig;

pwm_input_capture_param_tcaptureConfig;

pwm_fault_param_tfaultConfig;


/* 读取 PWM 默认配置 */

PWM_GetDefaultConfig(&pwmConfig);

pwmConfig.时钟源= kPWM_BusClock;

pwmConfig.预标度= kPWM_Prescale_Divide_2;

pwmConfig.配对操作= kPWM_Independent;

pwmConfig.初始化控制= kPWM_Initialize_LocalSync;

pwmConfig.重载逻辑= kPWM_ReloadImmediate;

pwmConfig.重新加载选择= kPWM_LocalReload;

pwmConfig.重载频率= kPWM_LoadEveryOportunity;

pwmConfig.强制触发= kPWM_Force_LocalSync;

pwmConfig.启用调试模式= true;


PWM_Init(PWM1_BASEADDR、 kPWM_Module_3,&pwmConfig);

PWM_Init(PWM2_BASEADDR、 kPWM_Module_3,&pwmConfig);

PWM_Init(PWM3_BASEADDR、 kPWM_Module_1,&pwmConfig);

PWM_Init(PWM4_BASEADDR、 kPWM_Module_1,&pwmConfig);


// 故障配置

PWM_FaultDefaultConfig(&faultConfig);

/* 安装 PWM 故障保护 */

PWM_SetupFaults(PWM1_BASEADDR、 kPWM_Fault_0&faultConfig);

PWM_SetupFaults(PWM1_BASEADDR、 kPWM_Fault_1&faultConfig);

PWM_SetupFaults(PWM1_BASEADDR、 kPWM_Fault_2&faultConfig);

PWM_SetupFaults(PWM1_BASEADDR、 kPWM_Fault_3&faultConfig);


/* 为子模块 0/1/2 设置 PWM 故障禁用映射 */

PWM_SetupFaultDisableMap(PWM1_BASEADDR、 kPWM_Module_0, kPWM_PwmA, kPWM_faultchannel_0, kPWM_FaultDisable_0| kPWM_FaultDisable_1| kPWM_FaultDisable_2| kPWM_FaultDisable_3);

PWM_SetupFaultDisableMap(PWM1_BASEADDR、 kPWM_Module_1, kPWM_PwmA, kPWM_faultchannel_0, kPWM_FaultDisable_0| kPWM_FaultDisable_1| kPWM_FaultDisable_2| kPWM_FaultDisable_3);

PWM_SetupFaultDisableMap(PWM1_BASEADDR、 kPWM_Module_2, kPWM_PwmA, kPWM_faultchannel_0, kPWM_FaultDisable_0| kPWM_FaultDisable_1| kPWM_FaultDisable_2| kPWM_FaultDisable_3);

PWM_SetupFaultDisableMap(PWM1_BASEADDR、 kPWM_Module_3, kPWM_PwmA, kPWM_faultchannel_0, kPWM_FaultDisable_0| kPWM_FaultDisable_1| kPWM_FaultDisable_2| kPWM_FaultDisable_3);


/* 安装 PWM 故障保护 */

PWM_SetupFaults(PWM2_BASEADDR、 kPWM_Fault_0&faultConfig);

PWM_SetupFaults(PWM2_BASEADDR、 kPWM_Fault_1&faultConfig);

PWM_SetupFaults(PWM2_BASEADDR、 kPWM_Fault_2&faultConfig);

PWM_SetupFaults(PWM2_BASEADDR、 kPWM_Fault_3&faultConfig);


/* 为子模块 0/1/2 设置 PWM 故障禁用映射 */

PWM_SetupFaultDisableMap(PWM2_BASEADDR、 kPWM_Module_0, kPWM_PwmA, kPWM_faultchannel_0, kPWM_FaultDisable_0| kPWM_FaultDisable_1| kPWM_FaultDisable_2| kPWM_FaultDisable_3);

PWM_SetupFaultDisableMap(PWM2_BASEADDR、 kPWM_Module_1, kPWM_PwmA, kPWM_faultchannel_0, kPWM_FaultDisable_0| kPWM_FaultDisable_1| kPWM_FaultDisable_2| kPWM_FaultDisable_3);

PWM_SetupFaultDisableMap(PWM2_BASEADDR、 kPWM_Module_2, kPWM_PwmA, kPWM_faultchannel_0, kPWM_FaultDisable_0| kPWM_FaultDisable_1| kPWM_FaultDisable_2| kPWM_FaultDisable_3);

PWM_SetupFaultDisableMap(PWM2_BASEADDR、 kPWM_Module_3, kPWM_PwmA, kPWM_faultchannel_0, kPWM_FaultDisable_0| kPWM_FaultDisable_1| kPWM_FaultDisable_2| kPWM_FaultDisable_3);


/* 安装 PWM 故障保护 */

PWM_SetupFaults(PWM3_BASEADDR、 kPWM_Fault_0&faultConfig);

PWM_SetupFaults(PWM3_BASEADDR、 kPWM_Fault_1&faultConfig);

PWM_SetupFaults(PWM3_BASEADDR、 kPWM_Fault_2&faultConfig);

PWM_SetupFaults(PWM3_BASEADDR、 kPWM_Fault_3&faultConfig);


/* 为子模块 0/1/2 设置 PWM 故障禁用映射 */

PWM_SetupFaultDisableMap(PWM3_BASEADDR、 kPWM_Module_0, kPWM_PwmA, kPWM_faultchannel_0, kPWM_FaultDisable_0| kPWM_FaultDisable_1| kPWM_FaultDisable_2| kPWM_FaultDisable_3);

PWM_SetupFaultDisableMap(PWM3_BASEADDR、 kPWM_Module_1, kPWM_PwmA, kPWM_faultchannel_0, kPWM_FaultDisable_0| kPWM_FaultDisable_1| kPWM_FaultDisable_2| kPWM_FaultDisable_3);

PWM_SetupFaultDisableMap(PWM3_BASEADDR、 kPWM_Module_2, kPWM_PwmA, kPWM_faultchannel_0, kPWM_FaultDisable_0| kPWM_FaultDisable_1| kPWM_FaultDisable_2| kPWM_FaultDisable_3);

PWM_SetupFaultDisableMap(PWM3_BASEADDR、 kPWM_Module_3, kPWM_PwmA, kPWM_faultchannel_0, kPWM_FaultDisable_0| kPWM_FaultDisable_1| kPWM_FaultDisable_2| kPWM_FaultDisable_3);


/* 安装 PWM 故障保护 */

PWM_SetupFaults(PWM4_BASEADDR、 kPWM_Fault_0&faultConfig);

PWM_SetupFaults(PWM4_BASEADDR、 kPWM_Fault_1&faultConfig);

PWM_SetupFaults(PWM4_BASEADDR、 kPWM_Fault_2&faultConfig);

PWM_SetupFaults(PWM4_BASEADDR、 kPWM_Fault_3&faultConfig);


/* 为子模块 0/1/2 设置 PWM 故障禁用映射 */

PWM_SetupFaultDisableMap(PWM4_BASEADDR、 kPWM_Module_0, kPWM_PwmA, kPWM_faultchannel_0, kPWM_FaultDisable_0| kPWM_FaultDisable_1| kPWM_FaultDisable_2| kPWM_FaultDisable_3);

PWM_SetupFaultDisableMap(PWM4_BASEADDR、 kPWM_Module_1, kPWM_PwmA, kPWM_faultchannel_0, kPWM_FaultDisable_0| kPWM_FaultDisable_1| kPWM_FaultDisable_2| kPWM_FaultDisable_3);

PWM_SetupFaultDisableMap(PWM4_BASEADDR、 kPWM_Module_2, kPWM_PwmA, kPWM_faultchannel_0, kPWM_FaultDisable_0| kPWM_FaultDisable_1| kPWM_FaultDisable_2| kPWM_FaultDisable_3);

PWM_SetupFaultDisableMap(PWM4_BASEADDR、 kPWM_Module_3, kPWM_PwmA, kPWM_faultchannel_0, kPWM_FaultDisable_0| kPWM_FaultDisable_1| kPWM_FaultDisable_2| kPWM_FaultDisable_3);



/* 为单次轮询配置 PWM 的捕获输入 */

captureConfig.captureInputSel= true;

捕捉配置。边缘0= kPWM_RiseAndFallEdge;

捕捉配置。边缘1= kPWM_Disable;

captureConfig.enableOneShotCapture= false;

captureConfig.edgeCompareValue= 1;


PWM_SetupInputCapture(PWM1_BASEADDR、 kPWM_Module_3, kPWM_PwmA&captureConfig);

PWM_SetupInputCapture(PWM2_BASEADDR、 kPWM_Module_3, kPWM_PwmA&captureConfig);

PWM_SetupInputCapture(PWM3_BASEADDR、 kPWM_Module_1, kPWM_PwmA&captureConfig);

PWM_SetupInputCapture(PWM4_BASEADDR、 kPWM_Module_1, kPWM_PwmA&captureConfig);


PWM_SetPwmLdok(PWM1_BASEADDR、 kPWM_Control_Module_3,true);

PWM_SetPwmLdok(PWM2_BASEADDR、 kPWM_Control_Module_3,true);

PWM_SetPwmLdok(PWM3_BASEADDR、 kPWM_Control_Module_1,true);

PWM_SetPwmLdok(PWM4_BASEADDR、 kPWM_Control_Module_1,true);


PWM_StartTimer(PWM1_BASEADDR、 kPWM_Control_Module_3);

PWM_StartTimer(PWM2_BASEADDR、 kPWM_Control_Module_3);

PWM_StartTimer(PWM3_BASEADDR、 kPWM_Control_Module_1);

PWM_StartTimer(PWM4_BASEADDR、 kPWM_Control_Module_1);

}

标记 (1)
无评分
版本历史
最后更新:
‎11-24-2025 04:51 AM
更新人: