|
我用 STM32F407开发板,将一个带编码器的 Zaber 位移台连接到该单片机。断开连接时,我可以测量到 A、B 相信号从 GND 切换到 5V。我已经查看过信号,正交输出正常,且不需要上下拉电阻。 我将信号连接到引脚 PE9 和 PE11,并把 TIM1 设置为编码器模式。 TIM1 初始化函数如下: static void MX_TIM1_Init(void) { / USER CODE BEGIN TIM1_Init 0 / / USER CODE END TIM1_Init 0 / TIM_Encoder_InitTypeDef sConfig = {0}; TIM_MasterConfigTypeDef sMasterConfig = {0}; / USER CODE BEGIN TIM1_Init 1 / / USER CODE END TIM1_Init 1 / htim1.Instance = TIM1; htim1.Init.Prescaler = 0; htim1.Init.CounterMode = TIM_COUNTERMODE_UP; htim1.Init.Period = 65535; htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim1.Init.RepetitionCounter = 0; htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; sConfig.EncoderMode = TIM_ENCODERMODE_TI1; sConfig.IC1Polarity = TIM_ICPOLARITY_RISING; sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI; sConfig.IC1Prescaler = TIM_ICPSC_DIV1; sConfig.IC1Filter = 10; sConfig.IC2Polarity = TIM_ICPOLARITY_RISING; sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI; sConfig.IC2Prescaler = TIM_ICPSC_DIV1; sConfig.IC2Filter = 0; if (HAL_TIM_Encoder_Init(&htim1, &sConfig) != HAL_OK) { Error_Handler(); } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) { Error_Handler(); } } 但是,旋转编码器时,TIM1->CNT 始终保持为 0。 请教 |
STM32U575的LPTIM中断问题
TIM11,TIM13失效
STM32 用主从定时器方式实现DSP QEP模块的QCTMR功能,异常
TIM 单脉冲输出后的电平如何设置?
stm32h7 定时器输出比较模式+dma,生成脉冲异常
STM32CubeMX配置STM32F103C8T6 RTC分频器问题
STM32G473,PA3导致定时器定时误差过大
定时器输出PWM控制电机的问题
stm32u575 gpdma burst length=1 配置其他数值不工作
STM32F103C8T6是否支持TIM3的PWM边沿触发AD采集
微信公众号
手机版