동료직원 괴롭혀서 실장!
R1_1에 10k가 없었는데 하나 달았다.

PB5 에 SW가 있고

| uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len); void USB_CDC_RxHandler(uint8_t* Buf, uint32_t Len) { for(int idx = 0; idx < Len;idx++) if(Buf[idx] == 0x0D) Buf[idx] = 0x0A; CDC_Transmit_FS(Buf, Len); } #define BUF_SIZE 50 uint8_t usb_buf[BUF_SIZE]; uint32_t count = 0; char prev_gpio = 0; void gpio_proc() { char curr_gpio = 0; GPIO_PinState gpios[3]; curr_gpio |= (gpios[0] = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_3)); curr_gpio |= (gpios[1] = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_4)) << 1; curr_gpio |= (gpios[2] = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_5)) << 2; char lut[4] = {0, 1, 3, 2}; if(prev_gpio != curr_gpio) { char isCW = 0; char prev = lut[prev_gpio & 0x03]; char curr = lut[curr_gpio & 0x03]; if((prev + 1) % 4 == curr) { isCW = 1; } sprintf((char*)usb_buf, "%ld %d %d %s, %d %s\r\n", count, gpios[1], gpios[0], isCW?"CW":"CCW", gpios[2], gpios[2]?"rel":"push"); CDC_Transmit_FS(usb_buf, BUF_SIZE); memset(usb_buf,0,BUF_SIZE); count++; prev_gpio = curr_gpio; } } |
풀업되어있다가 누르면 떨어지는거라
1이면 안누른거
0이면 누른걸로 인식된다.
| 35 1 0 CW, 1 rel 36 0 0 CW, 1 rel 37 0 1 CW, 1 rel 38 1 1 CW, 1 rel 39 1 0 CW, 1 rel 40 0 0 CW, 1 rel 41 0 1 CW, 1 rel 42 1 1 CW, 1 rel 43 0 1 CCW, 1 rel 44 0 0 CCW, 1 rel 45 1 0 CCW, 1 rel 46 1 1 CCW, 1 rel 47 0 1 CCW, 1 rel 48 0 0 CCW, 1 rel 49 1 0 CCW, 1 rel 50 1 1 CCW, 1 rel 51 0 1 CCW, 1 rel 52 0 0 CCW, 1 rel 53 0 0 CCW, 0 push 54 0 0 CCW, 1 rel |
도대체 왜! 이거 부품이 안달려 있는거야?!
'embeded > Cortex-M3 STM' 카테고리의 다른 글
| bluepill / 로터리 엔코더 테스트 (0) | 2026.08.28 |
|---|---|
| stm32 port 전체 한번에 출력 변경하기 (0) | 2026.06.22 |
| stm32 uart data bit (0) | 2026.03.17 |
| stm32 다른 영역으로 점프(부트로더) (0) | 2026.03.06 |
| stm32cubeide cpp 변환이후 generate code (0) | 2026.02.25 |
