GPIO.c 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #include <Myproject.h>
  2. void GPIO_Init(void)
  3. {
  4. SetBit(P4_OE, P42); //电子膨胀阀驱动IO-A P4_OE = P42;
  5. GP42 = 0;
  6. /*交流风机--输出*/
  7. // GP44 = 0;
  8. SetBit(P4_OE, P44); //电子膨胀阀驱动IO-A P4_OE = P42;??
  9. GP44 = 0;
  10. /*继电器相关 -- 输出*/
  11. /*PTC_RELAY*/
  12. // GP51 = 0;
  13. SetBit(P5_OE, P51);
  14. GP51 = 0;
  15. /*DJR*/
  16. // GP04 = 0;
  17. SetBit(P0_OE, P04);
  18. SetBit(P0_PU, P04);
  19. GP04 = 0;
  20. /*4WAY*/
  21. // GP01 = 0;
  22. SetBit(P0_OE, P01);
  23. GP01 = 0;
  24. SetBit(P0_OE, P07); //电子膨胀阀驱动IO-D P0_OE = P07;
  25. GP07 = 0;
  26. SetBit(P0_OE, P00); //电子膨胀阀驱动IO-D P0_OE = P07;
  27. GP00 = 0;
  28. SetBit(P1_OE, P10); //电子膨胀阀驱动IO-C P1_OE = P10;
  29. GP10 = 0;
  30. SetBit(P4_OE, P41); //电子膨胀阀驱动IO-B P4_OE = P41;
  31. GP41 = 0;
  32. SetBit(P1_OE, P11); //电子膨胀阀驱动IO-C P1_OE = P10;
  33. GP11 = 0;
  34. /*LED*/
  35. // GP22 = 0;
  36. SetBit(P0_OE, P03);
  37. GP03 = 0;
  38. }
  39. /**
  40. * @function PreDriverFalutInt
  41. * @brief 预驱故障中断
  42. * @date 2025-10-31
  43. */
  44. void PreDriverFalutInt(void)
  45. {
  46. // 关闭输出 配置上拉
  47. ClrBit(P0_OE, PIN2);
  48. SetBit(P0_PU, PIN2);
  49. // 中断源配置为P02
  50. SetReg(LVSR, EXT0CFG0 | EXT0CFG1 | EXT0CFG2, EXT0CFG1);
  51. // 清除中断标志位
  52. IF0 = 0;
  53. // 配置为下降沿触发
  54. IT01 = 0;
  55. IT00 = 1;
  56. // 中断触发时自动关闭MOE
  57. SetBit(EVT_FILT, INT0_MOE_EN);
  58. // 不滤波
  59. ClrBit(EVT_FILT, EFDIV0 | EFDIV1);
  60. // 配置中断优先级为最高
  61. SetBit(IP0, PX00 |PX01);
  62. // 外部中断0使能
  63. EX0 = 1;
  64. }
  65. void INT1_Init(void)
  66. {
  67. ClrBit(P1_OE, P12); // config P11 as input
  68. ClrBit(P1_PU, P12); // diasable P11 Pull Up
  69. SetBit(P1_IE, P12); // config P11 as input
  70. ClrBit(P1_IF, P12);
  71. IT11 = 0;
  72. IT10 = 1; // 00: rising edge interrupt,01: failing edge interrupt,1x: edge-change mode interrupt
  73. SetBit(IP0, PX11); //优先级
  74. SetBit(IP0, PX10);
  75. EX1 = 1; // 使能外部中断1, P11位外部中断输入硬件
  76. }
  77. /*Value--定时时间,单位ms,最小定时时间8ms,最大定时1800ms*/
  78. void WatchDogConfig(uint32 value, uint8 Status)
  79. {
  80. SetReg(CCFG1, WDT_EN, (Status ? WDT_EN : 0x00));
  81. WDT_ARR = ((uint16)(65532 - value * 32768 / 1000) >> 8);
  82. ClrBit(WDT_CR, WDTF);
  83. SetBit(WDT_CR, WDTRF);
  84. }