簡體   English   中英

stm32f303vc 發現 tim3 不起作用

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM