[英]Stm32f303vc discovery tim3 is not working
我想将 tim3 ch1 ch2 配置为编码器模式,我在 tim2 上有相同的代码(它也是通用定时器)并且运行良好。 也许我应该设置其他位,但我找不到它们。
我试图将此计时器配置为在没有任何输出的情况下工作,只是在设定的时间段后生成中断,但它无法正常工作。
//TIM2 CH1 PA0 CH2 PA1 AF1
//TIM3 CH1 PE2 CH2 PE3 AF2
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN | RCC_APB1ENR_TIM3EN ;
RCC->AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOEEN;
GPIOA->MODER |= GPIO_MODER_MODER0_1 | GPIO_MODER_MODER1_1;
GPIOE->MODER |= GPIO_MODER_MODER2_1 | GPIO_MODER_MODER3_1;
GPIOA->AFR[0] |= 0X00000011;
GPIOE->AFR[0] |= 0X00002200;
TIM2->SMCR = TIM_SMCR_SMS_0;
TIM2->CCMR1 = TIM_CCMR1_CC1S_0|TIM_CCMR1_CC2S_0;
TIM2->ARR = 24;
TIM2->DIER = TIM_DIER_UIE;
TIM2->CR1= TIM_CR1_CEN;
TIM3->SMCR = TIM_SMCR_SMS_0 ;
TIM3->CCMR1 = TIM_CCMR1_CC1S_0 | TIM_CCMR1_CC2S_0;
TIM3->ARR = 24;
TIM3->DIER = TIM_DIER_UIE;
TIM3->CR1= TIM_CR1_CEN ;
将SMCR
设置为0
您的代码将两个定时器都设置为编码器模式 1,请参阅参考手册中对
SMCR
寄存器的描述。
0001:编码器模式 1 - 计数器根据 TI2FP2 电平在 TI1FP1 边沿向上/向下计数。
在此模式下,定时器计数器由 CH1 和 CH2 输入上的信号而不是内部时钟递增或递减。
电路板上肯定有其他组件,或者它们未连接时的线路噪声,设法触发了 TIM2 几次。
PE2连接到另一个IC的输出
检查电路板用户手册中的原理图。 PE2 连接到板载加速度计的 DRDY输出。
您可以使用 CubeMX 工具查找 TIM3 的可用引脚。 在 Board Selector 屏幕中选择您的电路板,它会显示 PE2 和 PE3 已经连接到某些东西。
将 TIM3 组合通道设置为编码器模式,它将为定时器分配一些空闲引脚。 然后您可以按住CTRL并单击引脚以查看替代项(它们将以蓝色闪烁),并且您可以使用鼠标拖动引脚分配。
好的,我找到了一个解决方案 :) 如果我将 TIM3 CH1 分配给 PB4,将 CH2 分配给 PB5,它工作得很好,但我不明白为什么,有人可以解释一下吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.