[英]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.