//----初始化键盘硬件----------------------------------------------------------- //功能: 如题,初始化后才能扫描键盘 //参数: 无 //返回: 无 //---------------------------------------------------------------------------- bool_t key_hard_init(void) { GPIO_PowerOn(CN_GPIO_C); GPIO_CfgPinFunc(CN_GPIO_C,10,CN_GPIO_MODE_IN_PULLUP); GPIO_CfgPinFunc(CN_GPIO_C,11,CN_GPIO_MODE_IN_PULLUP); GPIO_CfgPinFunc(CN_GPIO_C,12,CN_GPIO_MODE_IN_PULLUP); GPIO_CfgPinFunc(CN_GPIO_C,13,CN_GPIO_MODE_IN_PULLUP); return true; }
void led_init(void) { GPIO_PowerOn(CN_GPIO_C); GPIO_CfgPinFunc(CN_GPIO_C, 6, CN_GPIO_MODE_GPIO_OUT_PP_2Mhz); GPIO_CfgPinFunc(CN_GPIO_C, 4, CN_GPIO_MODE_GPIO_OUT_PP_2Mhz); GPIO_CfgPinFunc(CN_GPIO_C, 8, CN_GPIO_MODE_GPIO_OUT_PP_2Mhz); GPIO_CfgPinFunc(CN_GPIO_C, 9, CN_GPIO_MODE_GPIO_OUT_PP_2Mhz); evtt_led = Djy_EvttRegist(EN_CORRELATIVE, CN_PRIO_RRS, 0, 1, led_flash, NULL,1000, "hello led"); if (evtt_led != CN_EVTT_ID_INVALID) { event_led = Djy_EventPop(evtt_led, NULL, 0, NULL, 0, 0); } }
// ============================================================================= // 功能: 设置对应UART的IO口,包括时钟和IO配置 // 参数: SerialNo,串口号 // 返回: 无 // ============================================================================= static void __UART_GpioConfig(u8 SerialNo) { GPIO_PowerOn(1); switch(SerialNo) { case CN_UART0: SIM->SCGC4 |= SIM_SCGC4_UART0_MASK; PORT_MuxConfig(PORT_PORT_A,PORT_PIN(1),PORT_PINMUX_ALT2); PORT_MuxConfig(PORT_PORT_A,PORT_PIN(2),PORT_PINMUX_ALT2); break; case CN_UART1: SIM->SCGC4 |= SIM_SCGC4_UART1_MASK; PORT_MuxConfig(PORT_PORT_E,PORT_PIN(0),PORT_PINMUX_ALT3); PORT_MuxConfig(PORT_PORT_E,PORT_PIN(1),PORT_PINMUX_ALT3); break; case CN_UART2: SIM->SCGC4 |= SIM_SCGC4_UART2_MASK; PORT_MuxConfig(PORT_PORT_E,PORT_PIN(16),PORT_PINMUX_ALT3); PORT_MuxConfig(PORT_PORT_E,PORT_PIN(17),PORT_PINMUX_ALT3); break; case CN_UART3: SIM->SCGC4 |= SIM_SCGC4_UART3_MASK; PORT_MuxConfig(PORT_PORT_E,PORT_PIN(4),PORT_PINMUX_ALT3); PORT_MuxConfig(PORT_PORT_E,PORT_PIN(5),PORT_PINMUX_ALT3); break; case CN_UART4: SIM->SCGC1 |= SIM_SCGC1_UART4_MASK; PORT_MuxConfig(PORT_PORT_E,PORT_PIN(24),PORT_PINMUX_ALT3); PORT_MuxConfig(PORT_PORT_E,PORT_PIN(25),PORT_PINMUX_ALT3); break; case CN_UART5: SIM->SCGC1 |= SIM_SCGC1_UART5_MASK; PORT_MuxConfig(PORT_PORT_E,PORT_PIN(8),PORT_PINMUX_ALT3); PORT_MuxConfig(PORT_PORT_E,PORT_PIN(9),PORT_PINMUX_ALT3); break; default: break; } }
/*--------------------------------------------------------------------------- 功能: lcd 初始化 ---------------------------------------------------------------------------*/ void __lcd_ili9325_init(void) { GPIO_PowerOn(CN_GPIO_F); GPIO_PowerOn(CN_GPIO_G); GPIO_CfgPinFunc(CN_GPIO_F,10,CN_GPIO_MODE_GPIO_OUT_OD_2Mhz); GPIO_CfgPinFunc(CN_GPIO_G,8,CN_GPIO_MODE_GPIO_OUT_PP_2Mhz); lcd_backlight_off(); lcd_reset(); Djy_DelayUs(100000); if( __ili9325_read_reg() != 0x9325) { return; } __ili9325_write_reg(0x0000, 0x0001); //Start internal OSC __ili9325_write_reg(0x0001, 0x0000); // set SS=0 and SM=0 S1---S720 __ili9325_write_reg(0x0002, 0x0700); // set 1 line inversion __ili9325_write_reg(0x0003, 0x1030); // set GRAM write direction and BGR=1. __ili9325_write_reg(0x0004, 0x0000); // Resize register __ili9325_write_reg(0x0008, 0x0207); // set the back porch and front porch __ili9325_write_reg(0x0009, 0x0000); // set non-display area refresh cycle ISC[3:0] __ili9325_write_reg(0x000a, 0x0000); // FMARK function __ili9325_write_reg(0x000c, 0x0000); // RGB interface setting __ili9325_write_reg(0x000d, 0x0000); // Frame marker Position __ili9325_write_reg(0x000f, 0x0000); // RGB interface polarity //-------------power on sequence------------ __ili9325_write_reg(0x0010, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB __ili9325_write_reg(0x0011, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0] __ili9325_write_reg(0x0012, 0x0000); // VREG1OUT voltage __ili9325_write_reg(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude Djy_DelayUs(5000); __ili9325_write_reg(0x0010, 0x1690); // SAP, BT[3:0], AP, DSTB, SLP, STB __ili9325_write_reg(0x0011, 0x0227); // R11H=0x0221 at VCI=3.3V, DC1[2:0], DC0[2:0], VC[2:0] Djy_DelayUs(5000); __ili9325_write_reg(0x0012, 0x001d); // External reference voltage= Vci;001d Djy_DelayUs(5000); __ili9325_write_reg(0x0013, 0x0800); // R13H=1D00 when R12H=009D;VDV[4:0] for VCOM amplitude __ili9325_write_reg(0x0029, 0x0014); // R29H=0013 when R12H=009D;VCM[5:0] for VCOMH __ili9325_write_reg(0x002b, 0x000B); // Frame Rate = 96Hz Djy_DelayUs(5000); __ili9325_write_reg(0x0020, 0x0000); // GRAM horizontal Address __ili9325_write_reg(0x0021, 0x0000); // GRAM Vertical Address // ----------- Adjust the Gamma Curve ---------- __ili9325_write_reg(0x0030, 0x0007); __ili9325_write_reg(0x0031, 0x0707); __ili9325_write_reg(0x0032, 0x0006); __ili9325_write_reg(0x0035, 0x0704); __ili9325_write_reg(0x0036, 0x1F04); __ili9325_write_reg(0x0037, 0x0004); __ili9325_write_reg(0x0038, 0x0000); __ili9325_write_reg(0x0039, 0x0706); __ili9325_write_reg(0x003c, 0x0701); __ili9325_write_reg(0x003d, 0x000F); // ------------------ Set GRAM area --------------- __ili9325_write_reg(0x0050, 0x0000); // Horizontal GRAM Start Address __ili9325_write_reg(0x0051, 239); // Horizontal GRAM End Address __ili9325_write_reg(0x0052, 0x0000); // Vertical GRAM Start Address __ili9325_write_reg(0x0053, 319); // Vertical GRAM Start Address __ili9325_write_reg(0x0060, 0x2700); // GS=0 320 line __ili9325_write_reg(0x0061, 0x0001); // NDL,VLE(滚屏允许), REV(灰度翻转) __ili9325_write_reg(0x006a, 0x0000); // set scrolling line // -------------- Partial Display Control --------- __ili9325_write_reg(0x0080, 0x0000); __ili9325_write_reg(0x0081, 0x0000); __ili9325_write_reg(0x0082, 0x0000); __ili9325_write_reg(0x0083, 0x0000); __ili9325_write_reg(0x0084, 0x0000); __ili9325_write_reg(0x0085, 0x0000); // -------------- Panel Control ------------------- __ili9325_write_reg(0x0090, 0x0010); __ili9325_write_reg(0x0092, 0x0000); __ili9325_write_reg(0x0093, 0x0003); __ili9325_write_reg(0x0095, 0x0110); __ili9325_write_reg(0x0097, 0x0000); __ili9325_write_reg(0x0098, 0x0000); // Set GRAM write direction and BGR = 1 // I/D=11 (Horizontal : increment, Vertical : increment) // AM=0 (address is updated in Horizontal writing direction) __ili9325_write_reg(0x0003, 0x1030); __ili9325_write_reg(0x0007, 0x0173); // 262K color and display ON lcd_backlight_on(); }
void SRAM_GPIO_Init(void) { RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE ); GPIO_PowerOn(CN_GPIO_D); GPIO_PowerOn(CN_GPIO_E); GPIO_PowerOn(CN_GPIO_F); GPIO_PowerOn(CN_GPIO_G); GPIO_CfgPinFunc(CN_GPIO_D, 14, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //d0 GPIO_CfgPinFunc(CN_GPIO_D, 15, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //d1 GPIO_CfgPinFunc(CN_GPIO_D, 0, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //d2 GPIO_CfgPinFunc(CN_GPIO_D, 1, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //d3 GPIO_CfgPinFunc(CN_GPIO_E, 7, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //d4 GPIO_CfgPinFunc(CN_GPIO_E, 8, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //d5 GPIO_CfgPinFunc(CN_GPIO_E, 9, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //d6 GPIO_CfgPinFunc(CN_GPIO_E, 10, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //d7 GPIO_CfgPinFunc(CN_GPIO_E, 11, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //d8 GPIO_CfgPinFunc(CN_GPIO_E, 12, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //d9 GPIO_CfgPinFunc(CN_GPIO_E, 13, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //d10 GPIO_CfgPinFunc(CN_GPIO_E, 14, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //d11 GPIO_CfgPinFunc(CN_GPIO_E, 15, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //d12 GPIO_CfgPinFunc(CN_GPIO_D, 8, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //d13 GPIO_CfgPinFunc(CN_GPIO_D, 9, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //d14 GPIO_CfgPinFunc(CN_GPIO_D, 10, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //d15 GPIO_CfgPinFunc(CN_GPIO_F, 0, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //a0 GPIO_CfgPinFunc(CN_GPIO_F, 1, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //a1 GPIO_CfgPinFunc(CN_GPIO_F, 2, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //a2 GPIO_CfgPinFunc(CN_GPIO_F, 3, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //a3 GPIO_CfgPinFunc(CN_GPIO_F, 4, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //a4 GPIO_CfgPinFunc(CN_GPIO_F, 5, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //a5 GPIO_CfgPinFunc(CN_GPIO_F, 12, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //a6 GPIO_CfgPinFunc(CN_GPIO_F, 13, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //a7 GPIO_CfgPinFunc(CN_GPIO_F, 14, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //a8 GPIO_CfgPinFunc(CN_GPIO_F, 15, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //a9 GPIO_CfgPinFunc(CN_GPIO_G, 0, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //a10 GPIO_CfgPinFunc(CN_GPIO_G, 1, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //a11 GPIO_CfgPinFunc(CN_GPIO_G, 2, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //a12 GPIO_CfgPinFunc(CN_GPIO_G, 3, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //a13 GPIO_CfgPinFunc(CN_GPIO_G, 4, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //a14 GPIO_CfgPinFunc(CN_GPIO_G, 5, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //a15 GPIO_CfgPinFunc(CN_GPIO_D, 11, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //a16 GPIO_CfgPinFunc(CN_GPIO_D, 12, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //a17 GPIO_CfgPinFunc(CN_GPIO_D, 13, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //a18 GPIO_CfgPinFunc(CN_GPIO_E, 3, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //a19 GPIO_CfgPinFunc(CN_GPIO_E, 4, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //a20 GPIO_CfgPinFunc(CN_GPIO_E, 5, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //a21 GPIO_CfgPinFunc(CN_GPIO_D, 5, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //we GPIO_CfgPinFunc(CN_GPIO_D, 4, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //re GPIO_CfgPinFunc(CN_GPIO_D, 7, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //cs1 for sram GPIO_CfgPinFunc(CN_GPIO_G, 9, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //cs2 for nand GPIO_CfgPinFunc(CN_GPIO_G, 10, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //cs3 for lcd GPIO_CfgPinFunc(CN_GPIO_G, 12, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //cs4 for dm9000a GPIO_CfgPinFunc(CN_GPIO_E, 0, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //lb GPIO_CfgPinFunc(CN_GPIO_E, 1, CN_GPIO_MODE_PERI_OUT_PP_50Mhz); //ub }