<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      stm32f103c8t6實現旋轉編碼器Operation

      image

      編碼器與 STM32F103 引腳連接

      編碼器引腳 STM32F103 引腳 說明
      VCC 3.3V 供電
      GND GND
      CLK(A) PA0 EXTI0,中斷輸入,上拉
      DT(B) PA2 普通輸入,上拉(不需要中斷)
      SW(按鍵) PA3 EXTI3,中斷輸入,上拉

      OLED 與 STM32F103 引腳連接

      OLED 引腳 STM32F103 引腳 說明
      VCC 3.3V 電源
      GND GND
      SCL PB8 軟件 I2C SCL
      SDA PB9 軟件 I2C SDA

      CubeMX 配置要點

      • PA0:GPIO_Input + EXTI0,觸發 Rising/Falling(雙沿),Pull-up。
      • PA2:GPIO_Input,Pull-up。
      • PA3:GPIO_Input + EXTI3,觸發 Falling(按鍵接地),Pull-up。
      • 使能 EXTI0/EXTI3 中斷(NVIC 里勾選)。
      • OLED 用 I2C1(PB8/PB9)。
      encoder.h
      #include "encoder.h"
      
      volatile int32_t encoder_count = 0;
      volatile uint8_t encoder_button_clicked = 0;
      
      #define ENC_A_Port GPIOA
      #define ENC_A_Pin  GPIO_PIN_0   // CLK
      #define ENC_B_Port GPIOA
      #define ENC_B_Pin  GPIO_PIN_2   // DT
      #define ENC_SW_Port GPIOA
      #define ENC_SW_Pin  GPIO_PIN_3  // SW
      
      // 若方向反了,改為 1
      #define ENC_REVERSE 0
      
      void Encoder_Init(void) { /* 空實現:GPIO/EXTI 由 CubeMX 生成 */ }
      
      /* HAL 的 EXTI 回調:任一外部中斷都會進來 */
      void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
      {
          if (GPIO_Pin == ENC_A_Pin)   // A 相邊沿到來,讀 B 相判斷方向
          {
              GPIO_PinState b = HAL_GPIO_ReadPin(ENC_B_Port, ENC_B_Pin);
          #if ENC_REVERSE
              if (b == GPIO_PIN_SET) encoder_count--;
              else                   encoder_count++;
          #else
              if (b == GPIO_PIN_SET) encoder_count++;
              else                   encoder_count--;
          #endif
          }
          else if (GPIO_Pin == ENC_SW_Pin) // 按鍵:簡單消抖
          {
              static uint32_t last = 0;
              uint32_t now = HAL_GetTick();
              if (now - last > 20) {                   // 20ms 去抖
                  if (HAL_GPIO_ReadPin(ENC_SW_Port, ENC_SW_Pin) == GPIO_PIN_RESET) {
                      encoder_button_clicked = 1;      // 單擊標志
                  }
              }
              last = now;
          }
      }
      
      main.c
      #include "encoder.h"
      #include "oled.h"
      #include <stdio.h>
      
      int main(void)
      {
        HAL_Init();
        SystemClock_Config();
        MX_GPIO_Init();
        MX_I2C1_Init();        // 你已有
        OLED_Init();
        OLED_Clear();
        Encoder_Init();        // 可選
      
        char line[16];
        int32_t last = 0;
      
        while (1)
        {
          if (encoder_count != last) {
            last = encoder_count;
            sprintf(line, "Cnt:%-6ld", (long)last);
            OLED_ShowString(2, 1, "            ");
            OLED_ShowString(2, 1, line);
          }
      
          if (encoder_button_clicked) {
            encoder_button_clicked = 0;
            OLED_ShowString(3, 1, "Button!");
            HAL_Delay(150);
            OLED_ShowString(3, 1, "        ");
          }
      
          HAL_Delay(5);
        }
      }
      
      posted @ 2025-08-12 13:20  huh&uh  閱讀(31)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品午夜无码AV天美传媒| av深夜免费在线观看| 日本亚洲色大成网站www久久| 亚洲午夜久久久影院伊人| 四虎成人高清永久免费看| 大陆一级毛片免费播放| 国产成人精品一区二区三区免费| 蜜桃视频一区二区三区四| 99在线视频免费观看| 国产精品亚洲欧美大片在线看| 亚洲国产精品综合色在线| 自拍视频在线观看成人| 免费无码一区二区三区蜜桃| 久久精品国产亚洲av麻豆不卡 | 日韩精品亚洲国产成人av| 99RE8这里有精品热视频 | 国产精品三级黄色小视频| 99中文字幕精品国产| 亚洲精品国产精品国自产| 九九综合va免费看| 国产精品亚洲片在线观看麻豆| 午夜高清福利在线观看| 99久久免费精品国产色| 亚洲欧美人成人让影院| 一区二区三区四区五区自拍| 午夜天堂一区人妻| 日韩AV高清在线看片| 亚洲欧美高清在线精品一区二区| 亚洲中文字幕伊人久久无码| 老司机久久99久久精品播放免费| 亚洲尤码不卡av麻豆| 成人性生交片无码免费看| 亚洲AV国产福利精品在现观看| 简阳市| 天堂网在线.www天堂在线资源| 亚洲第一人伊伊人色综合| 97se亚洲综合自在线| 精品无码国产一区二区三区AV| 亚洲国产美女精品久久久| 视频网站在线观看不卡| 国产一区二区波多野结衣|