Пример #1
0
ptu32_t led_flash1(void)
{
    u32 my_para;
    while(1)
    {
        Djy_GetEventPara(&my_para,NULL);
        switch(my_para)
        {
            case 1:
                GPIO_SettoLow(CN_GPIO_C, (1<<4)|(1<<6)|(1<<8));
                GPIO_SettoHigh(CN_GPIO_C, (1<<9));
                break;
            case 2:
                GPIO_SettoLow(CN_GPIO_C, (1<<4)|(1<<6)|(1<<9));
                GPIO_SettoHigh(CN_GPIO_C, (1<<8));
               break;
            case 3:
                GPIO_SettoLow(CN_GPIO_C, (1<<6)|(1<<9)|(1<<8));
                GPIO_SettoHigh(CN_GPIO_C, (1<<4));
                break;
            case 4:
                GPIO_SettoLow(CN_GPIO_C, (1<<9)|(1<<4)|(1<<8));
                GPIO_SettoHigh(CN_GPIO_C, (1<<6));
                break;
            default:break;
        }
        Djy_ParaUsed(0);
        Djy_WaitEvttPop(Djy_MyEvttId(),NULL,CN_TIMEOUT_FOREVER);
    }
}
Пример #2
0
// =============================================================================
// 功能: I/O模拟的方式 释放没有复位和使能引脚的IIC器件
// 参数: port I/O口 如 CN_GPIO_B
//      TS_SDA:引脚号
//      TS_SCK:引脚号
// 返回: true/false
// =============================================================================
static bool_t _IIC_Busfree(u32 port,u32 sda_pin,u32 sck_pin)
{
     u32 timeout=0;
     GPIO_CfgPinFunc(port,sda_pin,CN_GPIO_MODE_IN_FLOATING);//TS_SDA
     GPIO_CfgPinFunc(port,sck_pin,CN_GPIO_MODE_GPIO_OUT_OD_50Mhz);//TS_SCK

     while(1)
     {
          timeout++;
          GPIO_SettoLow(port,1<<sck_pin);
          Djy_DelayUs(10);

          GPIO_SettoHigh(port,1<<sck_pin);
          Djy_DelayUs(10);

          if(timeout>=CONFIG_I2C_TIMEOUT)
              return false;
          if( GPIO_GetData(port)&(1<<sda_pin))
              break;
    }

    GPIO_CfgPinFunc(port,sda_pin,CN_GPIO_MODE_GPIO_OUT_OD_50Mhz);//TS_SDA
    //产生停止信号 iic总线释放
    GPIO_SettoLow(port,1<<sda_pin);
    Djy_DelayUs(10);
    GPIO_SettoHigh(port,1<<sda_pin);
    Djy_DelayUs(10);

    return true;
}
Пример #3
0
// =============================================================================
// 功能:根据具体的板件配置SPI的GPIO的引脚功能,这是与板件相关,所以该函数放在该文件,CPU
//      SPI驱动直接调用该函数来初始化串口的GPIO引脚
//      主要包括GPIO端口和外设时钟使能、GPIO配置、重映射、时钟等
// 参数:无
// 返回:true
// =============================================================================
bool_t Board_SpiGpioInit(u8 SPIx)
{
	if(SPIx == CN_SPI1)
	{
		RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN; // 使能PORTB时钟
		RCC->APB2ENR |= RCC_APB2ENR_SPI1EN; // 使能SPI1时钟

		RCC->AHB1ENR |= 1<<6; // 使能PORTG时钟

		RCC->APB2RSTR |= RCC_APB2RSTR_SPI1;	// 复位SPI1
		RCC->APB2RSTR &= ~RCC_APB2RSTR_SPI1; // 停止复位SPI1

    	GPIO_CfgPinFunc(GPIO_B,PIN4|PIN5|PIN3,GPIO_MODE_AF,GPIO_OTYPE_PP,
    			GPIO_SPEED_50M,GPIO_PUPD_PU); // GPB3、4和5为SCK、MISO和MOSI
       	GPIO_AFSet(GPIO_B,3,5);
    	GPIO_AFSet(GPIO_B,4,5);
    	GPIO_AFSet(GPIO_B,5,5);
#if 0 // CS由设备确定
    	GPIO_CfgPinFunc(GPIO_B,PIN14,GPIO_MODE_OUT,GPIO_OTYPE_PP,
    			GPIO_SPEED_50M,GPIO_PUPD_PU); // GPB14为CS用于NOR

    	GPIO_CfgPinFunc(GPIOG,PIN7,GPIO_MODE_OUT,GPIO_OTYPE_PP,
    			GPIO_SPEED_100M,GPIO_PUPD_PU); // GPG7为CS用于无线模式
    	GPIOG->ODR|=1<<7;

    	GPIO_SettoHigh(GPIO_B,PIN14);// CS为高
#endif
	}
	else
	{
		return false;
	}
	return true;
}
Пример #4
0
ptu32_t led_flash(void)
{
    while(1)
    {
        GPIO_SettoLow(CN_GPIO_C, (1<<4)|(1<<6)|(1<<8));
        GPIO_SettoHigh(CN_GPIO_C, (1<<9));
        Djy_EventDelay(500*mS);

        GPIO_SettoLow(CN_GPIO_C, (1<<4)|(1<<6)|(1<<9));
        GPIO_SettoHigh(CN_GPIO_C, (1<<8));
        Djy_EventDelay(500*mS);

        GPIO_SettoLow(CN_GPIO_C, (1<<6)|(1<<9)|(1<<8));
        GPIO_SettoHigh(CN_GPIO_C, (1<<4));
        Djy_EventDelay(500*mS);

        GPIO_SettoLow(CN_GPIO_C, (1<<9)|(1<<4)|(1<<8));
        GPIO_SettoHigh(CN_GPIO_C, (1<<6));
        Djy_EventDelay(500*mS);
    }
}
Пример #5
0
void lcd_backlight_off(void)
{
    GPIO_SettoHigh(CN_GPIO_F,0x400);
}
Пример #6
0
void lcd_reset(void)
{
    GPIO_SettoLow(CN_GPIO_G,0x100);
    Djy_DelayUs(5000);
    GPIO_SettoHigh(CN_GPIO_G,0x100);
}