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.

134 lines
7.4 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
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. class PWMCtrler : public ZIPWMCtrl {
  50. ZPWMGenerator pwm;
  51. int32_t freq;
  52. int32_t duty;
  53. int32_t state;
  54. public:
  55. void initialize() { pwm.initialize(&htim2, TIM_CHANNEL_2, 25000, 1); }
  56. virtual int32_t set_pwm_duty(int32_t duty) {
  57. pwm.startPWM(duty);
  58. return 0;
  59. }
  60. virtual int32_t set_pwm_freq(int32_t freq) {}
  61. virtual int32_t get_pwm_duty() {}
  62. virtual int32_t get_pwm_freq() {}
  63. };
  64. PWMCtrler pwmCtrler;
  65. void nvs_init_cb() {}
  66. static void initsubmodule() {
  67. osDelay(1000);
  68. { pwmCtrler.initialize(); }
  69. {}
  70. }
  71. /*******************************************************************************
  72. * MAIN *
  73. *******************************************************************************/
  74. void umain() {
  75. ZCancmderSubboardIniter::cfg_t cfg = //
  76. {
  77. .deviceId = getDeviceId(),
  78. .input_gpio =
  79. {
  80. {.pin = PD0, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
  81. {.pin = PD1, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
  82. {.pin = PD2, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
  83. {.pin = PD3, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
  84. {.pin = PD4, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
  85. {.pin = PD5, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
  86. {.pin = PD6, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
  87. {.pin = PD7, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
  88. {.pin = PD8, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
  89. {.pin = PD9, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
  90. {.pin = PD10, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
  91. {.pin = PD11, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
  92. {.pin = PD12, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
  93. {.pin = PD13, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
  94. {.pin = PD14, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
  95. {.pin = PD15, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
  96. },
  97. .output_gpio =
  98. {
  99. {.pin = PE7, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  100. {.pin = PE8, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  101. {.pin = PE9, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  102. {.pin = PE10, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  103. {.pin = PE11, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  104. {.pin = PE12, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  105. {.pin = PE13, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  106. {.pin = PE14, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  107. {.pin = PE15, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  108. {.pin = PB0, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  109. {.pin = PB1, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  110. {.pin = PB2, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  111. {.pin = PB3, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  112. {.pin = PB4, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  113. {.pin = PB5, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  114. {.pin = PB6, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
  115. //
  116. {.pin = PC6, .mode = ZGPIO::kMode_pulldown, .mirror = false, .initLevel = false, .log_when_setstate = false},
  117. {.pin = PC7, .mode = ZGPIO::kMode_pulldown, .mirror = false, .initLevel = false, .log_when_setstate = false},
  118. {.pin = PC8, .mode = ZGPIO::kMode_pulldown, .mirror = false, .initLevel = false, .log_when_setstate = false},
  119. },
  120. .pwmctrl = &pwmCtrler,
  121. };
  122. initer.init(&cfg);
  123. initsubmodule();
  124. initer.loop();
  125. }