使用cubeMX,TIM PWM输入模式发现的一个问题
TIM1的 PWM输入模式 捕获一个PWM的周期 及 占空比,想使用DMA,将读取CCR1 CCR2的数据到 两个数组PeriodDuty。如下:HAL_TIM_IC_Start_DMA(&htim1,TIM_CHANNEL_1,(uint32_t*)Period,32);
HAL_TIM_IC_Start_DMA(&htim1,TIM_CHANNEL_2,(uint32_t*)Duty,32);
由于第一次调用HAL_TIM_IC_Start_DMA(&htim1,TIM_CHANNEL_1,(uint32_t*)Period,32);,
已经对htim->State 赋值: htim->State = HAL_TIM_STATE_BUSY; (2)
第二次调用HAL_TIM_IC_Start_DMA(&htim1,TIM_CHANNEL_2,(uint32_t*)Duty,32); 就直接 从 return HAL_BUSY; (1) 退出。
TIM_CHANNEL_2 无法 启动。
不修改cubeMX生成的函数情况下,
有其它的函数可以同时启动 两个TIM_CHANNEL吗?
HAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
{
if((htim->State == HAL_TIM_STATE_BUSY))
{
return HAL_BUSY; (1)
}
else if((htim->State == HAL_TIM_STATE_READY))
{
if((pData == 0U ) && (Length > 0U))
{
return HAL_ERROR;
}
else
{
htim->State = HAL_TIM_STATE_BUSY; (2)
}
}
..............
}
无法同时捕获吧 是可以同时捕获的,
PWM输入模式就是为了同时捕获 频率,占空比。
目前我用下面的方法实现。
HAL_TIM_IC_Start_DMA(&htim1,TIM_CHANNEL_1,(uint32_t*)Period,32);
htim1.State = HAL_TIM_STATE_READY;
HAL_TIM_IC_Start_DMA(&htim1,TIM_CHANNEL_2,(uint32_t*)Duty,32);
大神,CUBEMX界面是怎么配置的能? 能否截个图分享一下?
页:
[1]