You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

95 lines
5.5 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. #include <stddef.h>
  2. #include <stdio.h>
  3. #include "board.h"
  4. #include "sdk\components\subcanmodule\zcancmder_subboard_initer.hpp"
  5. /*******************************************************************************
  6. * PROJECT_INCLUDE *
  7. *******************************************************************************/
  8. #include "sdk/components/step_motor_ctrl_module/step_motor_ctrl_module.hpp"
  9. #include "sdk\components\mini_servo_motor\feite_servo_motor.hpp"
  10. #include "sdk\components\mini_servo_motor\mini_servo_motor_ctrl_module.hpp"
  11. #include "sdk\components\pipette_module\pipette_ctrl_module_v2.hpp"
  12. #include "sdk\components\sensors\m3078\m3078_code_scaner.hpp"
  13. #include "sdk\components\tmc\ic\ztmc4361A.hpp"
  14. #include "sdk\components\tmc\ic\ztmc5130.hpp"
  15. #define TAG "main"
  16. using namespace iflytop;
  17. using namespace std;
  18. static ZCancmderSubboardIniter initer;
  19. extern void umain();
  20. extern "C" {
  21. void StartDefaultTask(void const* argument) { umain(); }
  22. extern DMA_HandleTypeDef hdma_usart3_rx;
  23. extern DMA_HandleTypeDef hdma_usart3_tx;
  24. }
  25. /*******************************************************************************
  26. * GET_DEVICE_ID *
  27. *******************************************************************************/
  28. static int32_t getDeviceId() {
  29. static bool init = false;
  30. static ZGPIO ID0;
  31. static ZGPIO ID1;
  32. static ZGPIO ID2;
  33. static ZGPIO ID3;
  34. static ZGPIO ID4;
  35. if (!init) {
  36. ID0.initAsInput(ID0_IO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
  37. ID1.initAsInput(ID1_IO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
  38. ID2.initAsInput(ID2_IO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
  39. ID3.initAsInput(ID3_IO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
  40. ID4.initAsInput(ID4_IO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
  41. init = true;
  42. }
  43. uint8_t id = ID0.getState() * 1 + ID1.getState() * 2 + ID2.getState() * 4 + ID3.getState() * 8 + ID4.getState() * 16;
  44. return id;
  45. }
  46. /*******************************************************************************
  47. * INIT_SUBMODULE *
  48. *******************************************************************************/
  49. void nvs_init_cb() {}
  50. static void initsubmodule() { osDelay(1000); }
  51. /*******************************************************************************
  52. * MAIN *
  53. *******************************************************************************/
  54. void umain() {
  55. ZCancmderSubboardIniter::cfg_t cfg = //
  56. { //
  57. .deviceId = getDeviceId(),
  58. .input_gpio =
  59. {
  60. {.pin = SENSOR_INT0, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true},
  61. {.pin = SENSOR_INT1, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true},
  62. {.pin = SENSOR_INT2, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true},
  63. {.pin = SENSOR_INT3, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true},
  64. {.pin = SENSOR_INT4, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true},
  65. {.pin = SENSOR_INT5, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true},
  66. {.pin = SENSOR_INT6, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true},
  67. {.pin = SENSOR_INT7, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true},
  68. {.pin = SENSOR_INT8, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true},
  69. {.pin = SENSOR_INT9, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true},
  70. },
  71. .output_gpio = {
  72. {.pin = PD7, /*SOLENOID_VALVE00*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  73. {.pin = PD6, /*SOLENOID_VALVE01*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  74. {.pin = PD5, /*SOLENOID_VALVE02*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  75. {.pin = PD4, /*SOLENOID_VALVE03*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  76. {.pin = PD3, /*SOLENOID_VALVE04*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  77. {.pin = PD2, /*SOLENOID_VALVE05*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  78. {.pin = PD1, /*SOLENOID_VALVE06*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  79. {.pin = PD0, /*SOLENOID_VALVE07*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  80. {.pin = PD11, /*SOLENOID_VALVE08*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  81. {.pin = PD10, /*SOLENOID_VALVE09*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  82. {.pin = PD9, /*SOLENOID_VALVE10*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  83. {.pin = PD8, /*SOLENOID_VALVE11*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  84. }};
  85. initer.init(&cfg);
  86. initsubmodule();
  87. initer.loop();
  88. }