output.c 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #include "at32f403a_407.h"
  2. #include "output.h"
  3. #include "FreeRTOS.h"
  4. #include "task.h"
  5. #include <stdio.h>
  6. out_t outputs[OUTPUT_NUMBER] = {
  7. {GPIOC, GPIO_PINS_12, 0},
  8. {GPIOD, GPIO_PINS_2, 0},
  9. {GPIOE, GPIO_PINS_6, 0},
  10. {GPIOC, GPIO_PINS_1, 0},
  11. {GPIOC, GPIO_PINS_11, 0},
  12. {GPIOD, GPIO_PINS_3, 0},
  13. {GPIOE, GPIO_PINS_5, 0},
  14. {GPIOC, GPIO_PINS_2, 0}
  15. };
  16. simple_gpio_t load_sens[OUTPUT_NUMBER] = {
  17. {GPIOD, GPIO_PINS_0},
  18. {GPIOD, GPIO_PINS_1},
  19. {GPIOC, GPIO_PINS_13},
  20. {GPIOC, GPIO_PINS_0},
  21. {GPIOC, GPIO_PINS_10},
  22. {GPIOD, GPIO_PINS_4},
  23. {GPIOE, GPIO_PINS_4},
  24. {GPIOC, GPIO_PINS_3}
  25. };
  26. //
  27. void out_init(out_t *out)
  28. {
  29. gpio_init_type gpio_init_struct;
  30. // Выход
  31. if (out->mode == 0)
  32. {
  33. gpio_default_para_init(&gpio_init_struct);
  34. gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
  35. gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
  36. gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
  37. gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
  38. gpio_init_struct.gpio_pins = out->pin;
  39. gpio_init(out->port, &gpio_init_struct);
  40. }
  41. }
  42. //
  43. void load_sens_init(simple_gpio_t *sens)
  44. {
  45. gpio_init_type gpio_init_struct;
  46. gpio_default_para_init(&gpio_init_struct);
  47. gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
  48. gpio_init_struct.gpio_mode = GPIO_MODE_INPUT;
  49. gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
  50. gpio_init_struct.gpio_pins = sens->pin;
  51. gpio_init(sens->port, &gpio_init_struct);
  52. }
  53. //
  54. void out_test(void)
  55. {
  56. for (int i = 0; i < OUTPUT_NUMBER; i++)
  57. {
  58. outputs[i].port->odt ^= outputs[i].pin;
  59. printf("LOAD_1: %u LOAD_2: %u LOAD_3: %u LOAD_4: %u LOAD_5: %u LOAD_6: %u LOAD_7: %u LOAD_8: %u\r\n",
  60. gpio_input_data_bit_read(load_sens[0].port, load_sens[0].pin),
  61. gpio_input_data_bit_read(load_sens[1].port, load_sens[1].pin),
  62. gpio_input_data_bit_read(load_sens[2].port, load_sens[2].pin),
  63. gpio_input_data_bit_read(load_sens[3].port, load_sens[3].pin),
  64. gpio_input_data_bit_read(load_sens[4].port, load_sens[4].pin),
  65. gpio_input_data_bit_read(load_sens[5].port, load_sens[5].pin),
  66. gpio_input_data_bit_read(load_sens[6].port, load_sens[6].pin),
  67. gpio_input_data_bit_read(load_sens[7].port, load_sens[7].pin));
  68. vTaskDelay(500);
  69. }
  70. }