Как я могу установить режим кодировщика на STM32 H7? - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь получить данные кодировщика на мой stm32 h7 и отображать значение счетчика через uart.

Я могу видеть значение счетчика 0 через мой терминал uart, но значение счетчика никогда не увеличивается ...

Я использую режим кодировщика. Пожалуйста, помогите мне сделать это

static void Encoder_init(void)
{
    RCC->APB2RSTR &= ~(1 <<  1);
    RCC->APB2ENR |= (1 << 1);   //TIM8 clk enable
    TIM8->CR1 &= ~(1 << 0);     //tim8 disable
    TIM8->SMCR |= (0x03 << 0);  //SMS set
    TIM8->CCER &= ~(1 << 1);    //CC1P
    TIM8->CCER &= ~(1 << 5);    //CC2P
    TIM8->CCER &= ~(1<<3);      //CC1NP LOW
    TIM8->CCER &= ~(1<<7);      //CC2NP LOW
    TIM8->CCMR1 |= (1<<0);      //CC1S
    TIM8->CCMR1 |= (1<<8);      //CC2S
    TIM8->PSC = 0;              //prescaler zero
    TIM8->ARR = 0xFFFF;
    TIM8->CR1 |= (1 << 0);      //tim8 enable}
}

void tEncoder(void *pvParameters)
{
    uint8_t encoder_data;
    char buf[4];
    char val;

    RCC->AHB4RSTR &= ~(1 << 2);
    RCC->AHB4ENR |= (1 << 2);
    GPIOC->MODER &= ~(0x03 << 12);
    GPIOC->MODER &= ~(0x03 << 14);
    GPIOC->PUPDR |= (1<<6) | (1<<7);

    Encoder_init();

    while(1) {
        vTaskDelay(1000);
        if(encoder_data!=TIM8->CNT) {
            encoder_data = TIM8->CNT;
            int2str(buf, encoder_data);
            uart7_buffer_putstr(buf);
            SystemPrint("tEncoder counting\n\r");
        }
    }
}
...