| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- /**
- * 配置gpio
- */
- /****************************************************************************/
- #include "hw_types.h"
- #include "soc_C6748.h"
- #include "hw_syscfg0_C6748.h"
- #include "nim_config.h"
- int flag = 0;
- /****************************************************************************/
- /* */
- /* 宏定义 */
- /* */
- /****************************************************************************/
- #define PINMUX0_GPIO0_11_ENABLE (SYSCFG_PINMUX0_PINMUX0_19_16_GPIO0_11 << \
- SYSCFG_PINMUX0_PINMUX0_19_16_SHIFT)
- #define PINMUX4_GPIO1_0_ENABLE (SYSCFG_PINMUX4_PINMUX4_31_28_GPIO1_0 << \
- SYSCFG_PINMUX4_PINMUX4_31_28_SHIFT)
- #define PINMUX4_GPIO1_1_ENABLE (SYSCFG_PINMUX4_PINMUX4_27_24_GPIO1_1 << \
- SYSCFG_PINMUX4_PINMUX4_27_24_SHIFT)
- #define PINMUX4_GPIO1_2_ENABLE (SYSCFG_PINMUX4_PINMUX4_23_20_GPIO1_2 << \
- SYSCFG_PINMUX4_PINMUX4_23_20_SHIFT)
- #define PINMUX4_GPIO1_3_ENABLE (SYSCFG_PINMUX4_PINMUX4_19_16_GPIO1_3 << \
- SYSCFG_PINMUX4_PINMUX4_19_16_SHIFT)
- #define PINMUX12_GPIO5_5_ENABLE (SYSCFG_PINMUX12_PINMUX12_11_8_GPIO5_5 << \
- SYSCFG_PINMUX12_PINMUX12_11_8_SHIFT)
- static void Bank0Handle(void);
- static void GPIOBank0InterruptInit();
- /****************************************************************************/
- /* */
- /* 管脚复用配置 */
- /* */
- /****************************************************************************/
- void GOIOBank0Pin11MuxMuxSetup(void)
- {
- unsigned int savePinmux = 0;
- savePinmux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(0)) &
- ~(SYSCFG_PINMUX0_PINMUX0_19_16));
- HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(0)) =
- (PINMUX0_GPIO0_11_ENABLE | savePinmux);
- }
- void GOIOBank1Pin0MuxMuxSetup(void)
- {
- unsigned int savePinmux = 0;
- savePinmux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) &
- ~(SYSCFG_PINMUX4_PINMUX4_31_28));
- HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) =
- (PINMUX4_GPIO1_0_ENABLE | savePinmux);
- }
- void GOIOBank1Pin1MuxMuxSetup(void)
- {
- unsigned int savePinmux = 0;
- savePinmux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) &
- ~(SYSCFG_PINMUX4_PINMUX4_27_24));
- HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) =
- (PINMUX4_GPIO1_1_ENABLE | savePinmux);
- }
- void GOIOBank1Pin2MuxMuxSetup(void)
- {
- unsigned int savePinmux = 0;
- savePinmux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) &
- ~(SYSCFG_PINMUX4_PINMUX4_23_20));
- HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) =
- (PINMUX4_GPIO1_2_ENABLE | savePinmux);
- }
- void GOIOBank1Pin3MuxMuxSetup(void)
- {
- unsigned int savePinmux = 0;
- savePinmux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) &
- ~(SYSCFG_PINMUX4_PINMUX4_19_16));
- HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) =
- (PINMUX4_GPIO1_3_ENABLE | savePinmux);
- }
- void GOIOBank5Pin5MuxMuxSetup(void)
- {
- unsigned int savePinmux = 0;
- savePinmux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(12)) &
- ~(SYSCFG_PINMUX12_PINMUX12_11_8));
- HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(12)) =
- (PINMUX12_GPIO5_5_ENABLE | savePinmux);
- }
- /**
- * GPIO0[11] 配置程输入模式,触控
- */
- void GPIOBank0Pin11Init()
- {
- GOIOBank0Pin11MuxMuxSetup();
- // 触控输入
- GPIODirModeSet(SOC_GPIO_0_REGS, 12, GPIO_DIR_INPUT); // GPIO0[11]
- GPIOBank0InterruptInit();
- }
- /**
- * GPIO5[5] 配置程输入模式,GUI电源
- */
- void GPIOBank5Pin5Init()
- {
- GOIOBank5Pin5MuxMuxSetup();
- // gui控制
- GPIODirModeSet(SOC_GPIO_0_REGS, 86, GPIO_DIR_OUTPUT); // GPIO5[5]
- GPIOPinWrite(SOC_GPIO_0_REGS, 86, GPIO_PIN_LOW);
- }
- static void GPIOBank0InterruptInit()
- {
- // 配置 触控 为上升沿及下降沿触发
- GPIOIntTypeSet(SOC_GPIO_0_REGS, 12, GPIO_INT_TYPE_BOTHEDGE);
- // 使能 GPIO BANK0 中断
- GPIOBankIntEnable(SOC_GPIO_0_REGS, 0);
- IntRegister(C674X_MASK_INT11, Bank0Handle);
- IntEventMap(C674X_MASK_INT11, SYS_INT_GPIO_B0INT);
- IntEnable(C674X_MASK_INT11);
- }
- static void Bank0Handle(void)
- {
- // 禁用 GPIO BANK 0 中断
- GPIOBankIntDisable(SOC_GPIO_0_REGS, 0);
- // 清除 GPIO BANK 0 中断事件
- IntEventClear(SYS_INT_GPIO_B0INT);
- if(GPIOPinIntStatus(SOC_GPIO_0_REGS, 12) == GPIO_INT_PEND)
- {
- // 清除中断状态
- GPIOPinIntClear(SOC_GPIO_0_REGS, 12);
- int value = GPIOPinRead(SOC_GPIO_0_REGS, 12);
- touch_switch(value);
- }
- // 使能 GPIO BANK 0 中断
- GPIOBankIntEnable(SOC_GPIO_0_REGS, 0);
- }
|