ergodox_stm32.c 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #include "i2c_master.h"
  2. #include QMK_KEYBOARD_H
  3. extern inline void ergodox_board_led_1_on(void);
  4. extern inline void ergodox_board_led_2_on(void);
  5. extern inline void ergodox_board_led_3_on(void);
  6. extern inline void ergodox_board_led_1_off(void);
  7. extern inline void ergodox_board_led_2_off(void);
  8. extern inline void ergodox_board_led_3_off(void);
  9. extern inline void ergodox_led_all_off(void);
  10. volatile int mcp23017_status = 0x20;
  11. uint8_t i2c_initializied = 0;
  12. void matrix_init_kb(void)
  13. {
  14. // Init LED Ports
  15. palSetPadMode(GPIOA, 10, PAL_MODE_OUTPUT_PUSHPULL); // LED 1
  16. palSetPadMode(GPIOA, 9, PAL_MODE_OUTPUT_PUSHPULL); // LED 2
  17. palSetPadMode(GPIOA, 8, PAL_MODE_OUTPUT_PUSHPULL); // LED 3
  18. ergodox_blink_all_leds();
  19. matrix_init_user();
  20. }
  21. void ergodox_blink_all_leds(void)
  22. {
  23. ergodox_led_all_off();
  24. // ergodox_led_all_set(LED_BRIGHTNESS_DEFAULT);
  25. ergodox_board_led_1_on();
  26. wait_ms(50);
  27. ergodox_board_led_2_on();
  28. wait_ms(50);
  29. ergodox_board_led_3_on();
  30. wait_ms(50);
  31. ergodox_board_led_1_off();
  32. wait_ms(50);
  33. ergodox_board_led_2_off();
  34. wait_ms(50);
  35. ergodox_board_led_3_off();
  36. }
  37. uint8_t init_mcp23017(void) {
  38. if (!i2c_initializied) {
  39. i2c_init();
  40. i2c_initializied = 1;
  41. }
  42. uint8_t data[2];
  43. data[0] = 0x0;
  44. data[1] = 0b00111111;
  45. mcp23017_status = i2c_writeReg(I2C_ADDR, I2C_IODIRA, data, 2, 50000);
  46. if (mcp23017_status) goto out;
  47. data[0] = 0xFFU;
  48. mcp23017_status = i2c_writeReg(I2C_ADDR, I2C_GPIOA, data, 1, 5000);
  49. if (mcp23017_status) goto out;
  50. mcp23017_status = i2c_writeReg(I2C_ADDR, I2C_GPPUB, data+1, 1, 2);
  51. if (mcp23017_status) goto out;
  52. out:
  53. return mcp23017_status;
  54. // i2c_readReg(I2C_ADDR, );
  55. }