コード例 #1
0
ファイル: main.c プロジェクト: DemonTu/ALL_FrameWrok_M4
/*******************************************************************************
* Function Name  : modeCommon
* Description    : 系统公共模式.
* Input          : 事件
* Output         : None
* Return         : None
*******************************************************************************/
static void modeCommon(u8 evt)
{
    switch(evt)
    {
        case evtRxReaddy:
            {
                u16 len;
                u8 rxbuf[usart1_rx_buf_Number];

                len = USART1_GetRxBufDat(rxbuf);
                if(len)
                {
                    #ifdef INCLUDE_BUZZER
                    BuzzerBeep(4);
                    #endif
                    USART1_Putbuf(rxbuf,len);
                }
            }
            break;
        case evtTime1s:
			#ifndef INCLUDE_IIC_DRIVER
			printf("%02x\r\n", SMB_Read(VOLTAGE));
			printf("%02x\r\n", SMB_Read(DESIGN_CAPACITY+1));
			printf("%02x\r\n", SMB_Read(DESIGN_CAPACITY+2));
			printf("%02x\r\n", SMB_Read(DESIGN_CAPACITY+3));
			printf("%02x\r\n", SMB_Read(TEMPERATURE));
			
			#else
			printf("0x%x\r\n", SMB_Read2Byte(DESIGN_CAPACITY+2));
			#endif
            //USART1_Putchar(0X55);
			{
				static uint8_t flashFlag;
				if (flashFlag){
					flashFlag = 0;
					GPIO_SetBits(GPIOA, GPIO_Pin_8);
				}else{
					flashFlag = 1;
					GPIO_ResetBits(GPIOA, GPIO_Pin_8);
				}
			}
            break;

            default:
                break;

    }
}
コード例 #2
0
// 以下1-9每1秒执行一次
static void Pollint1Sec(void)
{
    switch(r_pollint._100msCount)
    {
        case 1:
			#if 0
			{
				uint8_t smbBuf[3];
				uartWriteDebug("Test=", 5);
				SMB_Read(RELATIVE_SOC, smbBuf, 1);
				uartWriteDebug(smbBuf, 1);
				SMB_Read(ABSOLUTE_SOC, smbBuf, 1);
				uartWriteDebug(smbBuf, 1);
				SMB_Read(BATTERY_STATUS, smbBuf, 2);
				uartWriteDebug(smbBuf, 2);
				SMB_Read(BATTERY_MODE, smbBuf, 2);
				uartWriteDebug(smbBuf, 2);
			}
			#endif
            break;
        case 2:
			if (systemState.delayPowerOffTime)
			{
				if (--systemState.delayPowerOffTime == 0)
				{
					systemState.powerOffFlag = 0;
					//开启外部中断
					KEY_EnableIRQ();

					//关掉时钟
					uartWriteDebug("tmout", 5);
					Util_stopClock(&periodicClock_10ms);
				}
			}
			else if (systemState.powerOffFlag!=1 || systemState.keyUpFlag==1)
			{
				/* 
				在长按关机时,还没松开前默认是关机的所以不能显示图标
				
				在长按开机时,以为短按触发中断系统开启,但此时不是开机事件,
				所以也不能显示图标
				*/
				
				systemState.lowBatteryFlag = userAppShowCharge();

				if (2 == systemState.lowBatteryFlag)
				{
					OLED_ShowString(40, 0, "           ");
					OLED_ShowString(40, 0, "No battery ");  
				}
				else if (1 == systemState.lowBatteryFlag)
				{
					// 没电 图标闪烁警告
				}
				else
				{
					//正常显示
				}
				//OLED_testShowGengeeRoll(3);
			}
            break;
        case 3:
			if(CHARGING == chargeStateRead())
			{
				systemState.keyUpFlag=1;
			}
            break;
        default:
            break;
    }
}
コード例 #3
0
/*******************************************************************************
 * @fn      userAppShowCharge
 *
 * @brief   电池图标和百分比的显示
 *
 * @param   void
 *
 * @return  0 有电,1 没电
 */
uint8_t userAppShowCharge(void)
{
	uint8_t smbBuf[4];
	uint8_t charge;
	uint8_t chargeState = 6;
	uint8_t bmpMov = 0;
	
	SMB_Read(RELATIVE_SOC, &charge, 1);
	//uartWriteDebug(&charge, 1);

	OLED_ShowString(40,0, "          ");	// 清电池显示区域
	
	if (charge >100)
	{
		return 2;
	}
	if (100 == charge)
	{
		uartWriteDebug("T", 1);
		bmpMov = 8;
		chargeState = 0;
	}
	else if (charge > 90)
	{
		chargeState = 0;
	}
	else if(charge > 76)
	{
		chargeState = 1;
	}
	else if(charge > 62)
	{
		chargeState = 2;
	}
	else if(charge > 48)
	{
		chargeState = 3;
	}
	else if(charge > 34)
	{
		chargeState = 4;
	}
	else if(charge > 10)
	{
		chargeState = 5;
	}
	else
	{
		sprintf((char *)smbBuf, "%02d%", charge);
		OLED_ShowString(104,0, smbBuf);	
		return 1;
	}
	
	sprintf((char *)smbBuf, "%02d%", charge);
	if (0 == isChargePowerUp())
	{
		
		OLED_showBatteryBmp(0, 88-bmpMov, chargeState);

	}
	else
	{
		if (charge == 100)
		{
			
			uartWriteDebug("I", 1);
			OLED_showBatteryBmp(0, 88-bmpMov, chargeState);
			//chargedLedState();
		}
		else
		{
			uartWriteDebug("O", 1);
			OLED_showBatteryBmp(0, 88-bmpMov, 7);	// 显示充电图标
		}
		
	}
	OLED_ShowString(104-bmpMov, 0, smbBuf);	
	return 0;
}