board_gpio.c 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #include "gpio.h"
  2. #include "board_gpio.h"
  3. /**
  4. ******************************************************************************
  5. ** \brief 初始化外部GPIO引脚
  6. **
  7. ** \return 无
  8. ******************************************************************************/
  9. void board_GpioInit(void)
  10. {
  11. stc_gpio_cfg_t GpioInitStruct;
  12. DDL_ZERO_STRUCT(GpioInitStruct);
  13. Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE);
  14. ///< 端口方向配置->输入
  15. GpioInitStruct.enDir = GpioDirOut;
  16. ///< 端口驱动能力配置->高驱动能力
  17. GpioInitStruct.enDrv = GpioDrvH;
  18. ///< 端口上下拉配置->上拉
  19. GpioInitStruct.enPu = GpioPuDisable;
  20. GpioInitStruct.enPd = GpioPdDisable;
  21. ///< 端口开漏输出配置->开漏输出关闭
  22. GpioInitStruct.enOD = GpioOdDisable;
  23. ///< 端口输入/输出值寄存器总线控制模式配置->AHB
  24. GpioInitStruct.enCtrlMode = GpioAHB;
  25. /****************************** LED指示灯***************************/
  26. GpioInitStruct.enDrv = GpioDrvH;
  27. GpioInitStruct.enDir = GpioDirOut;
  28. Gpio_Init(LED_TX_PORT, LED_TX_PIN, &GpioInitStruct);
  29. Gpio_Init(LED_RX_PORT, LED_RX_PIN, &GpioInitStruct);
  30. Gpio_WriteOutputIO(LED_TX_PORT, LED_TX_PIN, TRUE); //输出高,熄灭LED
  31. Gpio_WriteOutputIO(LED_RX_PORT, LED_RX_PIN, TRUE); //输出高,熄灭LED
  32. /******************************发射按键输入脚 *******************************/
  33. ///< 端口方向配置->输入
  34. GpioInitStruct.enDir = GpioDirIn;
  35. ///< 端口驱动能力配置->高驱动能力
  36. GpioInitStruct.enDrv = GpioDrvH;
  37. ///< 端口上下拉配置->上拉
  38. GpioInitStruct.enPu = GpioPuEnable;
  39. GpioInitStruct.enPd = GpioPdDisable;
  40. ///< 端口开漏输出配置->开漏输出关闭
  41. GpioInitStruct.enOD = GpioOdDisable;
  42. ///< 端口输入/输出值寄存器总线控制模式配置->AHB
  43. GpioInitStruct.enCtrlMode = GpioAHB;
  44. ///< KEY按键初始化
  45. Gpio_Init(GPIO_PORT_KEY, GPIO_PIN_KEY, &GpioInitStruct);
  46. /********************************* RF IRQ | RF RST ******************************************/
  47. ///< 端口方向配置->输入
  48. GpioInitStruct.enDir = GpioDirIn;
  49. ///< 端口驱动能力配置->高驱动能力
  50. GpioInitStruct.enDrv = GpioDrvH;
  51. ///< 端口上下拉配置->上拉
  52. GpioInitStruct.enPu = GpioPuDisable;
  53. GpioInitStruct.enPd = GpioPdDisable;
  54. ///< 端口开漏输出配置->开漏输出关闭
  55. GpioInitStruct.enOD = GpioOdDisable;
  56. ///< 端口输入/输出值寄存器总线控制模式配置->AHB
  57. GpioInitStruct.enCtrlMode = GpioAHB;
  58. ///< GPIO IO rf_irq 初始化
  59. Gpio_Init(RADIO_IRQ_PORT, RADIO_IRQ_PIN, &GpioInitStruct);
  60. ///< 打开并配置 rf_irq 为上升沿中断
  61. Gpio_EnableIrq(RADIO_IRQ_PORT, RADIO_IRQ_PIN, GpioIrqRising);
  62. ///< 使能端口系统中断
  63. EnableNvic(PORTA_IRQn, IrqLevel3, TRUE);
  64. ///< 端口方向配置->输出
  65. GpioInitStruct.enDir = GpioDirOut;
  66. ///< GPIO IO rf_reset初始化
  67. Gpio_Init(RADIO_RST_POT, RADIO_RST_PIN, &GpioInitStruct);
  68. }
  69. void App_LowPowerModeGpioSet(void)
  70. {
  71. ///< 打开GPIO外设时钟门控
  72. Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
  73. //swd as gpio
  74. //Sysctrl_SetFunc(SysctrlSWDUseIOEn, TRUE);
  75. ///< 配置为数字端口
  76. M0P_GPIO->PAADS = 0;
  77. M0P_GPIO->PBADS = 0;
  78. M0P_GPIO->PCADS = 0;
  79. M0P_GPIO->PDADS = 0;
  80. ///< 配置为端口输入
  81. M0P_GPIO->PADIR = 0XFFFF;
  82. M0P_GPIO->PBDIR = 0XFFFF;
  83. M0P_GPIO->PCDIR = 0XFFFF;
  84. M0P_GPIO->PDDIR = 0XFFFF;
  85. ///< 输入下拉
  86. M0P_GPIO->PAPD = 0xFFFF;
  87. M0P_GPIO->PBPD = 0xFFFF;
  88. M0P_GPIO->PCPD = 0xFFFF;
  89. M0P_GPIO->PDPD = 0xFFFF;
  90. }