📄 blc_hw.c
字号:
/********************************************************************
Module Name: BLC_hw.c
Abstract: Hardware dependent portion
*********************************************************************/
#include <windows.h>
#include <types.h>
#include "blc_cmn.h"
#include "blc_hw.h"
#include "blc_glob.h"
#include "cken.h"
#include "xsc1.h"
#define BLMSG_TRACE 0//1 //turn off by hzh
extern ULONG gPWMValue;
extern BOOL gBLState;
extern CLKMAN_REGS *v_pCLKReg;
extern GPIO_REGS *v_pGPIOReg;
extern PWM_REGS *v_pPWM1Reg;
BOOL InitializeBacklightHardware(void)
{
RETAILMSG(BLMSG_TRACE, (TEXT("+InitializeBacklightHardware\r\n")));
// turn on backlight
v_pCLKReg->cken |= CLK_PWM1; // PWM0 clock enabled
v_pGPIOReg->GPCR_x &= ~GPIO_21;
v_pGPIOReg->GPSR_x |= GPIO_21;
v_pGPIOReg->GPDR_x |= GPIO_21;
v_pGPIOReg->GPCR_x |= GPIO_17;
v_pGPIOReg->GPDR_x |= GPIO_17; // set output mode
v_pGPIOReg->GAFR1_x &= ~GPIO_17_AF3; // set PWM alternate function
v_pGPIOReg->GAFR1_x |= GPIO_17_AF2_PWM1;
SetBacklightState(TRUE, FALSE); // set backlight state at boot.
RETAILMSG(BLMSG_TRACE, (TEXT("-InitializeBacklightHardware\r\n")));
return TRUE;
}
void SetHardwareBacklightState(void)
{
RETAILMSG(BLMSG_TRACE, (TEXT("+SetHardwareBacklightState, turning backlight %s\r\n"), gBLState ? TEXT("on") : TEXT("off")));
if (gBLState==BLSTATE_ON) // turn on backlight
{
v_pCLKReg->cken |= CLK_PWM1;
v_pPWM1Reg->pwcr = PWM1_PRESCALE_DIVISOR;
v_pPWM1Reg->pwdr = gPWMValue;
v_pPWM1Reg->pwpr = PWM1_PERIOD_CONTROL;
RETAILMSG(BLMSG_TRACE, (TEXT("SetHardwareBacklightState, v_pPWM1Reg->pwdr=0x%x, gPWMValue=0x%x\r\n"),v_pPWM1Reg->pwdr, gPWMValue));
}
else // turn off backlight
{
v_pPWM1Reg->pwcr = PWM1_PRESCALE_DIVISOR;
v_pPWM1Reg->pwdr = 0x00;
v_pPWM1Reg->pwpr = PWM1_PERIOD_CONTROL;
v_pCLKReg->cken &= ~CLK_PWM1; // PWM0 clock disabled
RETAILMSG(BLMSG_TRACE, (TEXT("SetHardwareBacklightState, turning backlight off\r\n")));
}
RETAILMSG(BLMSG_TRACE, (TEXT("-SetHardwareBacklightState\r\n")));
}
DWORD GetHardwareBacklightState(void)
{
DWORD retState;
retState = (v_pCLKReg->cken & CLK_PWM1);
return(retState);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -