hal_gpio.c 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. #include "hal_gpio.h"
  2. #include "string.h"
  3. //PE12无效
  4. /***********************GPIO IN**********************************************/
  5. //PD8 MCU开机信号 低电平触发
  6. //PD9 低输入1 下降沿触发
  7. //PD10 低输入2 下降沿触发
  8. //PC12 低输入3 下降沿触发
  9. //PE1 RTC中断 下降沿触发
  10. //PD11 高输入1 上升沿触发
  11. //PE0 高输入2 上升沿触发
  12. //PE12 WAKEUP1 上升沿触发
  13. //PE13 WAKEUP2 上升沿触发
  14. //PE14 WAKEUP3 上升沿触发
  15. void batt_power_on(void)
  16. {
  17. GPIO_SetPins(GPIO_PORT_C,GPIO_PIN_13);
  18. }
  19. void batt_power_off(void)
  20. {
  21. GPIO_ResetPins(GPIO_PORT_C,GPIO_PIN_13);
  22. }
  23. uint8_t batt_power_status(void)
  24. {
  25. return GPIO_ReadOutputPins(GPIO_PORT_D,GPIO_PIN_08);
  26. }
  27. void gpio_interrupt_init(void)
  28. {
  29. stc_extint_init_t stcExtIntInit;
  30. stc_gpio_init_t stcGpioInit;
  31. /* GPIO config 下降沿触发*/
  32. (void)GPIO_StructInit(&stcGpioInit);
  33. stcGpioInit.u16ExtInt = PIN_EXTINT_ON;
  34. stcGpioInit.u16PullUp = PIN_PU_ON;
  35. //(void)GPIO_Init(GPIO_PORT_C, GPIO_PIN_12, &stcGpioInit);
  36. (void)GPIO_Init(GPIO_PORT_D, GPIO_PIN_08|GPIO_PIN_09|GPIO_PIN_10, &stcGpioInit);
  37. //(void)GPIO_Init(GPIO_PORT_E, GPIO_PIN_01, &stcGpioInit);
  38. /* ExtInt config */
  39. (void)EXTINT_StructInit(&stcExtIntInit);
  40. stcExtIntInit.u32Filter = EXTINT_FILTER_ON;
  41. stcExtIntInit.u32FilterClock = EXTINT_FCLK_DIV8;
  42. stcExtIntInit.u32Edge = EXTINT_TRIG_FALLING;
  43. (void)EXTINT_Init(EXTINT_CH01, &stcExtIntInit);
  44. (void)EXTINT_Init(EXTINT_CH08, &stcExtIntInit);
  45. (void)EXTINT_Init(EXTINT_CH09, &stcExtIntInit);
  46. (void)EXTINT_Init(EXTINT_CH10, &stcExtIntInit);
  47. //(void)EXTINT_Init(EXTINT_CH12, &stcExtIntInit);
  48. memset(&stcGpioInit,0,sizeof(stcGpioInit));
  49. /* GPIO config 上升沿触发*/
  50. (void)GPIO_StructInit(&stcGpioInit);
  51. stcGpioInit.u16ExtInt = PIN_EXTINT_ON;
  52. stcGpioInit.u16PullUp = PIN_PU_OFF;
  53. (void)GPIO_Init(GPIO_PORT_D, GPIO_PIN_11, &stcGpioInit);
  54. (void)GPIO_Init(GPIO_PORT_E, GPIO_PIN_00|GPIO_PIN_01|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14, &stcGpioInit);
  55. /* ExtInt config */
  56. (void)EXTINT_StructInit(&stcExtIntInit);
  57. stcExtIntInit.u32Filter = EXTINT_FILTER_ON;
  58. stcExtIntInit.u32FilterClock = EXTINT_FCLK_DIV8;
  59. stcExtIntInit.u32Edge = EXTINT_TRIG_RISING;
  60. (void)EXTINT_Init(EXTINT_CH00, &stcExtIntInit);
  61. (void)EXTINT_Init(EXTINT_CH11, &stcExtIntInit);
  62. (void)EXTINT_Init(EXTINT_CH12, &stcExtIntInit);
  63. (void)EXTINT_Init(EXTINT_CH13, &stcExtIntInit);
  64. (void)EXTINT_Init(EXTINT_CH14, &stcExtIntInit);
  65. /* NVIC config */
  66. NVIC_ClearPendingIRQ(EXTINT_PORT_EIRQ0_IRQn);
  67. NVIC_SetPriority(EXTINT_PORT_EIRQ0_IRQn, DDL_IRQ_PRIO_DEFAULT);
  68. NVIC_EnableIRQ(EXTINT_PORT_EIRQ0_IRQn);
  69. NVIC_ClearPendingIRQ(EXTINT_PORT_EIRQ1_IRQn);
  70. NVIC_SetPriority(EXTINT_PORT_EIRQ1_IRQn, DDL_IRQ_PRIO_DEFAULT);
  71. NVIC_EnableIRQ(EXTINT_PORT_EIRQ1_IRQn);
  72. NVIC_ClearPendingIRQ(EXTINT_PORT_EIRQ8_IRQn);
  73. NVIC_SetPriority(EXTINT_PORT_EIRQ8_IRQn, DDL_IRQ_PRIO_DEFAULT);
  74. NVIC_EnableIRQ(EXTINT_PORT_EIRQ8_IRQn);
  75. NVIC_ClearPendingIRQ(EXTINT_PORT_EIRQ9_IRQn);
  76. NVIC_SetPriority(EXTINT_PORT_EIRQ9_IRQn, DDL_IRQ_PRIO_DEFAULT);
  77. NVIC_EnableIRQ(EXTINT_PORT_EIRQ9_IRQn);
  78. NVIC_ClearPendingIRQ(EXTINT_PORT_EIRQ10_IRQn);
  79. NVIC_SetPriority(EXTINT_PORT_EIRQ10_IRQn, DDL_IRQ_PRIO_DEFAULT);
  80. NVIC_EnableIRQ(EXTINT_PORT_EIRQ10_IRQn);
  81. NVIC_ClearPendingIRQ(EXTINT_PORT_EIRQ11_IRQn);
  82. NVIC_SetPriority(EXTINT_PORT_EIRQ11_IRQn, DDL_IRQ_PRIO_DEFAULT);
  83. NVIC_EnableIRQ(EXTINT_PORT_EIRQ11_IRQn);
  84. NVIC_ClearPendingIRQ(EXTINT_PORT_EIRQ12_IRQn);
  85. NVIC_SetPriority(EXTINT_PORT_EIRQ12_IRQn, DDL_IRQ_PRIO_DEFAULT);
  86. NVIC_EnableIRQ(EXTINT_PORT_EIRQ12_IRQn);
  87. NVIC_ClearPendingIRQ(EXTINT_PORT_EIRQ13_IRQn);
  88. NVIC_SetPriority(EXTINT_PORT_EIRQ13_IRQn, DDL_IRQ_PRIO_DEFAULT);
  89. NVIC_EnableIRQ(EXTINT_PORT_EIRQ13_IRQn);
  90. NVIC_ClearPendingIRQ(EXTINT_PORT_EIRQ14_IRQn);
  91. NVIC_SetPriority(EXTINT_PORT_EIRQ14_IRQn, DDL_IRQ_PRIO_DEFAULT);
  92. NVIC_EnableIRQ(EXTINT_PORT_EIRQ14_IRQn);
  93. }
  94. void EXTINT00_SWINT16_Handler(void)
  95. {
  96. if(SET == EXTINT_GetExtIntStatus(EXTINT_CH00))
  97. {
  98. //printf("EXTINT_CH00 interruput\n");
  99. EXTINT_ClearExtIntStatus(EXTINT_CH00);
  100. }
  101. }
  102. void EXTINT01_SWINT17_Handler(void)
  103. {
  104. if(SET == EXTINT_GetExtIntStatus(EXTINT_CH01))
  105. {
  106. printf("EXTINT_CH01 interruput\n");
  107. EXTINT_ClearExtIntStatus(EXTINT_CH01);
  108. }
  109. }
  110. void EXTINT08_SWINT24_Handler(void)
  111. {
  112. if(SET == EXTINT_GetExtIntStatus(EXTINT_CH08))
  113. {
  114. //printf("EXTINT_CH08 interruput\n");
  115. EXTINT_ClearExtIntStatus(EXTINT_CH08);
  116. }
  117. }
  118. void EXTINT09_SWINT25_Handler(void)
  119. {
  120. if(SET == EXTINT_GetExtIntStatus(EXTINT_CH09))
  121. {
  122. //printf("EXTINT_CH09 interruput\n");
  123. EXTINT_ClearExtIntStatus(EXTINT_CH09);
  124. }
  125. }
  126. void EXTINT10_SWINT26_Handler(void)
  127. {
  128. if(SET == EXTINT_GetExtIntStatus(EXTINT_CH10))
  129. {
  130. //printf("EXTINT_CH10 interruput\n");
  131. EXTINT_ClearExtIntStatus(EXTINT_CH10);
  132. }
  133. }
  134. void EXTINT11_SWINT27_Handler(void)
  135. {
  136. if(SET == EXTINT_GetExtIntStatus(EXTINT_CH11))
  137. {
  138. //printf("EXTINT_CH11 interruput\n");
  139. EXTINT_ClearExtIntStatus(EXTINT_CH11);
  140. }
  141. }
  142. void EXTINT12_SWINT28_Handler(void)
  143. {
  144. if(SET == EXTINT_GetExtIntStatus(EXTINT_CH12))
  145. {
  146. if(PIN_SET == GPIO_ReadInputPins(GPIO_PORT_E, GPIO_PIN_12))
  147. {
  148. //printf("EXTINT_CH12--:PE12 interruput\n");
  149. }
  150. if(PIN_RESET == GPIO_ReadInputPins(GPIO_PORT_C, GPIO_PIN_12))
  151. {
  152. //printf("EXTINT_CH12--:PC12 interruput\n");
  153. }
  154. EXTINT_ClearExtIntStatus(EXTINT_CH12);
  155. }
  156. }
  157. void EXTINT13_SWINT29_Handler(void)
  158. {
  159. if(SET == EXTINT_GetExtIntStatus(EXTINT_CH13))
  160. {
  161. //printf("EXTINT_CH13 interruput\n");
  162. EXTINT_ClearExtIntStatus(EXTINT_CH13);
  163. }
  164. }
  165. void EXTINT14_SWINT30_Handler(void)
  166. {
  167. if(SET == EXTINT_GetExtIntStatus(EXTINT_CH14))
  168. {
  169. //printf("EXTINT_CH14 interruput\n");
  170. EXTINT_ClearExtIntStatus(EXTINT_CH14);
  171. }
  172. }