Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
R
RT_RMR42E
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
时昊
RT_RMR42E
Commits
2ede2ca0
Commit
2ede2ca0
authored
Feb 16, 2025
by
李冠华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
🦄
refactor:背光改为使用背光库
parent
50121044
Changes
9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
662 additions
and
94 deletions
+662
-94
RMR42E.uvguix.Administrator
...t/Cmsemicon/BAT32A239/MDK_ARM/RMR42E.uvguix.Administrator
+28
-28
RMR42E.uvprojx
Firmware/Project/Cmsemicon/BAT32A239/MDK_ARM/RMR42E.uvprojx
+10
-0
Application.h
Firmware/Source/Application/Application.h
+1
-1
BackLight.c
Firmware/Source/Application/BackLight/BackLight.c
+290
-59
BackLight.h
Firmware/Source/Application/BackLight/BackLight.h
+58
-6
BackLight_User.c
Firmware/Source/Application/BackLight/BackLight_User.c
+211
-0
BackLight_User.h
Firmware/Source/Application/BackLight/BackLight_User.h
+62
-0
PowerManag_user.c
Firmware/Source/Component/PowerManagement/PowerManag_user.c
+1
-0
Sys_Task_List.c
Firmware/Source/System/Sys_Task_List.c
+1
-0
No files found.
Firmware/Project/Cmsemicon/BAT32A239/MDK_ARM/RMR42E.uvguix.Administrator
View file @
2ede2ca0
This diff is collapsed.
Click to expand it.
Firmware/Project/Cmsemicon/BAT32A239/MDK_ARM/RMR42E.uvprojx
View file @
2ede2ca0
...
...
@@ -518,6 +518,16 @@
<FileType>
5
</FileType>
<FilePath>
..\..\..\..\Source\Application\Driving_Information\Data_Gear.h
</FilePath>
</File>
<File>
<FileName>
BackLight_User.c
</FileName>
<FileType>
1
</FileType>
<FilePath>
..\..\..\..\Source\Application\BackLight\BackLight_User.c
</FilePath>
</File>
<File>
<FileName>
BackLight_User.h
</FileName>
<FileType>
5
</FileType>
<FilePath>
..\..\..\..\Source\Application\BackLight\BackLight_User.h
</FilePath>
</File>
</Files>
</Group>
<Group>
...
...
Firmware/Source/Application/Application.h
View file @
2ede2ca0
...
...
@@ -15,6 +15,6 @@
#include "Data_Fuel\Data_Fuel.h"
#include "Driving_Information\Data_Time.h"
#include "Driving_Information\Data_Gear.h"
#include "BackLight\BackLight_User.h"
#endif
Firmware/Source/Application/BackLight/BackLight.c
View file @
2ede2ca0
This diff is collapsed.
Click to expand it.
Firmware/Source/Application/BackLight/BackLight.h
View file @
2ede2ca0
#ifndef _BACKLIGHT_H_
#define _BACKLIGHT_H_
#include "common.h"
extern
uint8_t
interact_PWM_Low_Duty
;
void
BackLight_Process
(
void
);
void
Interact_Light_Process
(
void
);
void
BackLight_Clock_All_Process
(
void
);
extern
uint8_t
Get_Interact_Light_State
(
void
);
#ifdef Platform_16Bit
#define Light_uint8_t unsigned char
#define Light_uint16_t unsigned int
#define Light_uint32_t unsigned long
#else
#define Light_uint8_t unsigned char
#define Light_uint16_t unsigned short
#define Light_uint32_t unsigned int
#define Light_uint64_t unsigned long long
#endif
#define Backlight_NTC_Max 10
/* 背光NTC阻值表格元素最大值 */
#define BacklightLevel_Max 10
/* 背光等级表格元素最大值 */
#define BackLight_Up_Timer 400
/* 背光精度上升1%的时间 单位 10ms */
#define BackLight_Down_Timer 200
/* 背光精度下降1%的时间 单位 10ms */
typedef
struct
//__attribute__((aligned(4)))
{
Light_uint16_t
Temperature
;
/* 温度 */
Light_uint16_t
Resistance
;
/* 阻值 */
}
_st_Backlight_NtcTable
;
typedef
struct
//__attribute__((aligned(4)))
{
Light_uint16_t
BacklightLevel
;
/* 背光等级 */
Light_uint16_t
BacklightDuty
;
/* 背光占空比 */
}
_st_BacklightLevel
;
typedef
void
(
*
SetPwm
)(
Light_uint16_t
Pwm
);
typedef
Light_uint8_t
(
*
SetPwmEnable
)(
void
);
typedef
Light_uint8_t
(
*
SetPwmLevel
)(
void
);
typedef
Light_uint16_t
(
*
GetNtcRes
)(
void
);
typedef
struct
//__attribute__((aligned(4)))
{
SetPwm
SetPwmCbk
;
/* 设置PWM回调函数 */
SetPwmEnable
SetPwmEnCbk
;
/* 设置PWM使能回调函数 */
SetPwmLevel
SetPwmLevelCbk
;
/* 背光等级回调函数 */
GetNtcRes
NtcResCbk
;
/* 获取NTC电阻值回调函数 如无NTC传入空 */
_st_Backlight_NtcTable
*
BacklightNTCTable
;
/* NTC 数据表 */
_st_BacklightLevel
*
BacklightLevelTable
;
/* 背光等级数据表 */
}
_st_BackLight_Init
;
/**
* @brief 初始化背光模块,KL30/唤醒初始化调用一次即可
* @param backlightInit 背光初始化配置结构体指针,包含所需的回调函数和数据表。
* @note 调用此初始化前需先初始化硬件相关
*/
extern
void
Backlight_KL30_WakeUp_Init
(
_st_BackLight_Init
*
backlightInit
);
/**
* @brief 初始化背光模块,休眠初始化调用一次即可
* @note 调用此初始化前需先初始化硬件相关
*/
extern
void
BackLight_Sleep_Init
(
void
);
/**
* @brief 背光服务函数 必须10ms调用
*/
extern
void
BackLight_Service
(
void
);
#endif
Firmware/Source/Application/BackLight/BackLight_User.c
0 → 100644
View file @
2ede2ca0
#include "BackLight_User.h"
#include "BackLight.h"
#include "TrmerM\TrmerM.h"
#define BACK_LIGHT_DAY 200
#define openLED_flag ((Get_CAN_Power_State() != PKEY_ON) && (Get_CAN_Power_State() != KEY_OFF) && (Get_CAN_Power_State() != POWER_CHECK_NULL))
uint8_t
interact_PWM_Low_Duty
=
0
;
Backlight_User_OPT3004_st_t
opt3004
;
uint8_t
g_u8BacklightUserDayTimecount
=
0
;
uint16_t
u16Backlightcount
=
0U
;
uint8_t
u8BacklightLevel
=
0U
;
/* 填写NTC阻值温度对应表*/
_st_Backlight_NtcTable
BacklightNTCTable
[
Backlight_NTC_Max
]
=
{
/*温度 阻值 */
{
550
,
2709
},
{
600
,
2224
},
{
650
,
1832
},
{
700
,
1518
},
{
750
,
1263
},
{
800
,
1056
},
{
850
,
887
},
{
900
,
748
},
{
950
,
633
},
{
1000
,
538
},
};
/* 填写背光等级及占空比对应表 */
_st_BacklightLevel
BacklightLevelTable
[
BacklightLevel_Max
]
=
{
/*背光等级 背光占空比 */
{
1
,
50
},
/*夜间背光1级*/
{
2
,
100
},
/*夜间背光2级*/
{
3
,
150
},
/*夜间背光3级*/
{
4
,
200
},
/*夜间背光4级*/
{
5
,
250
},
/*夜间背光5级*/
{
6
,
100
},
/*白天背光1级*/
{
7
,
200
},
/*白天背光2级*/
{
8
,
300
},
/*白天背光3级*/
{
9
,
400
},
/*白天背光4级*/
{
10
,
500
},
/*白天背光5级*/
};
/**
* @brief 获取背光使能回调函数
* 用于控制背光开启关闭
*/
uint8_t
Get_BackLight_En
(
void
)
{
if
((
Common_Get_IG_Sts
()
==
COMMON_POWER_ON
)
&&
(
openLED_flag
))
{
return
1
;
}
else
{
return
0
;
}
}
/**
* @brief 设置PWM回调函数
*/
void
Set_Pwm_Cbk
(
uint16_t
PWM
)
{
TimerM_PWM_set_duty
(
TIMERM_COUNTER1
,
TIMERM_CHB
,
PWM
);
}
/**
* @brief 获取当前背光等级回调函数
*/
uint8_t
Get_BackLight_Level
(
void
)
{
// uint16_t u8PositionStatus = 0U;
// // u8PositionStatus = (Line_In_Get_Status(LINE_IN_PositionLight));
// if (u8PositionStatus == 1U)
// {
// return u8BacklightLevel;
// }
// else
// {
// return u8BacklightLevel + 5U;
// }
return
5
;
}
/**
* @brief 获取当前显示背光等级函数
*/
uint8_t
Get_BackLight_Level_Display
(
void
)
{
return
u8BacklightLevel
;
}
// /**
// * @brief 获取当前NTC阻值 ,本项目没有NTC热敏电阻采集
// */
// uint16_t Get_NTC_Rec(void)
// {
// // uint16_t u16NTCresistance = 0U;
// // u16NTCresistance = ADC_Read_Signal(ADC_CH_NTC_R);
// // return u16NTCresistance;
// }
void
BackLight_User_Init
(
void
)
{
_st_BackLight_Init
BackLightInit
;
BackLightInit
.
SetPwmCbk
=
Set_Pwm_Cbk
;
BackLightInit
.
SetPwmEnCbk
=
Get_BackLight_En
;
BackLightInit
.
SetPwmLevelCbk
=
Get_BackLight_Level
;
BackLightInit
.
NtcResCbk
=
((
void
*
)
0
);
BackLightInit
.
BacklightNTCTable
=
&
BacklightNTCTable
[
0
];
BackLightInit
.
BacklightLevelTable
=
&
BacklightLevelTable
[
0
];
Backlight_KL30_WakeUp_Init
(
&
BackLightInit
);
// opt3004.u8DayandNightSts = DAY_SCREEN;
// opt3004.u32Result = 0;
u8BacklightLevel
=
3U
;
}
void
BackLight_Process
(
void
)
{
if
(
openLED_flag
)
{
//电量
if
((
Get_EleDial_AllSOC_lenth
()
==
2
)
||
(
checkself_seg_Flag
==
1
))
{
RTE_GPIO_Set_Level
(
RTE_GPIO_PORT03_PIN00
,
RTE_GPIO_LEVEL_HIGH
);
//百位
RTE_GPIO_Set_Level
(
RTE_GPIO_PORT02_PIN04
,
RTE_GPIO_LEVEL_HIGH
);
}
else
if
(
Get_EleDial_AllSOC_lenth
()
==
1
)
{
RTE_GPIO_Set_Level
(
RTE_GPIO_PORT03_PIN00
,
RTE_GPIO_LEVEL_LOW
);
RTE_GPIO_Set_Level
(
RTE_GPIO_PORT02_PIN04
,
RTE_GPIO_LEVEL_HIGH
);
}
else
{
RTE_GPIO_Set_Level
(
RTE_GPIO_PORT03_PIN00
,
RTE_GPIO_LEVEL_LOW
);
RTE_GPIO_Set_Level
(
RTE_GPIO_PORT02_PIN04
,
RTE_GPIO_LEVEL_LOW
);
}
}
else
{
RTE_GPIO_Set_Level
(
RTE_GPIO_PORT03_PIN00
,
RTE_GPIO_LEVEL_LOW
);
RTE_GPIO_Set_Level
(
RTE_GPIO_PORT02_PIN04
,
RTE_GPIO_LEVEL_LOW
);
}
}
void
BackLight_Clock_All_Process
(
void
)
{
if
(
openLED_flag
&&
(
Charge_OFF_Flag
==
0
))
{
//总计时间
if
((
Get_Clock_All_lenth
()
==
2
)
||
(
checkself_seg_Flag
==
1
))
{
RTE_GPIO_Set_Level
(
RTE_GPIO_PORT01_PIN05
,
RTE_GPIO_LEVEL_HIGH
);
//总计工作时长统计千位_MCU_OUT
RTE_GPIO_Set_Level
(
RTE_GPIO_PORT01_PIN06
,
RTE_GPIO_LEVEL_HIGH
);
//总计工作时长统计百十位_MCU_OUT
}
else
if
(
Get_Clock_All_lenth
()
==
1
)
{
RTE_GPIO_Set_Level
(
RTE_GPIO_PORT01_PIN05
,
RTE_GPIO_LEVEL_LOW
);
//总计工作时长统计千位_MCU_OUT
RTE_GPIO_Set_Level
(
RTE_GPIO_PORT01_PIN06
,
RTE_GPIO_LEVEL_HIGH
);
//总计工作时长统计百十位_MCU_OUT
}
else
{
RTE_GPIO_Set_Level
(
RTE_GPIO_PORT01_PIN05
,
RTE_GPIO_LEVEL_LOW
);
//总计工作时长统计千位_MCU_OUT
RTE_GPIO_Set_Level
(
RTE_GPIO_PORT01_PIN06
,
RTE_GPIO_LEVEL_LOW
);
//总计工作时长统计百十位_MCU_OUT
}
}
else
{
RTE_GPIO_Set_Level
(
RTE_GPIO_PORT01_PIN05
,
RTE_GPIO_LEVEL_LOW
);
//总计工作时长统计千位_MCU_OUT
RTE_GPIO_Set_Level
(
RTE_GPIO_PORT01_PIN06
,
RTE_GPIO_LEVEL_LOW
);
//总计工作时长统计百十位_MCU_OUT
}
}
void
Interact_Light_Process
(
void
)
{
if
((
Get_CAN_Power_State
()
!=
KEY_OFF
)
&&
(
Get_CAN_Power_State
()
!=
POWER_CHECK_NULL
)
&&
(
Charge_OFF_Flag
==
0
))
{
TimerM_PWM_set_duty
(
TIMERM_COUNTER0
,
TIMERM_CHD
,
interact_PWM_Low_Duty
*
10
);
}
else
{
TimerM_PWM_set_duty
(
TIMERM_COUNTER0
,
TIMERM_CHD
,
1000
);
}
}
uint8_t
Get_Interact_Light_State
(
void
)
{
uint8_t
stata
=
0x0
;
if
(
interact_PWM_Low_Duty
==
0
)
{
stata
=
0x1
;
}
else
if
(
interact_PWM_Low_Duty
==
30
)
{
stata
=
0x2
;
}
else
if
(
interact_PWM_Low_Duty
==
50
)
{
stata
=
0x3
;
}
return
stata
;
}
Firmware/Source/Application/BackLight/BackLight_User.h
0 → 100644
View file @
2ede2ca0
#ifndef BACKLIGHT_USER_H__
#define BACKLIGHT_USER_H__
#include "Application.h"
#include "Components.h"
/*NTC 降背光策略采用BYD策略
L超过60℃需要有背光策略,背光策略优先依据BYD策略
L温度要设计≥2℃的温度回差
注:BYD策略,如下:
采集温度达到60度 输出背光=当前背光等级亮度*95%
采集温度达到65度 输出背光=当前背光等级亮度*90%
采集温度达到70度 输出背光=当前背光等级亮度*85%
采集温度达到75度 输出背光=当前背光等级亮度*80%
采集温度达到80度 输出背光=当前背光等级亮度*75%
采集温度达到85度 输出背光=当前背光等级亮度*70%
采集温度达到88度 输出背光=当前背光等级亮度*20%
采集温度达到90度 输出背光=当前背光等级亮度*10
温度上升
2S下降1%
温度下降
4S上升1%
*/
#define BACKLIGHT_DELAY_NUM 15U
/*背光延迟点亮等待时长 = (BACKLIGHT_DELAY_NUM * 10ms) */
#define BLACK_TO_WHITE_LUMINOUS_VALUE 2000U
/*从黑背景切换到白背景时的临界光感值*/
#define WHITE_TO_BLACK_LUMINOUS_VALUE 900U
/*从白背景切换到黑背景时的临界光感值*/
#define SCREEN_SWITCHOVER_DELAY_NUM 15U
/*白天夜间模式切换光感滤波时间 = SCREEN_SWITCHOVER_HOLD_NUM * 100ms) */
typedef
enum
{
DAY_SCREEN
=
0
,
/*白天模式、白背景*/
NIGHT_SCREEN
,
/*夜间模式、黑背景*/
}
BackLight_Screen_Status_en_t
;
/*光感数据存储结构体*/
typedef
struct
__attribute__
((
aligned
(
4
)))
{
uint32_t
u32Result
;
uint8_t
u8DayandNightSts
;
}
Backlight_User_OPT3004_st_t
;
extern
Backlight_User_OPT3004_st_t
opt3004
;
extern
uint16_t
u16Backlightcount
;
extern
uint8_t
u8BacklightLevel
;
extern
void
BackLight_User_Init
(
void
);
extern
uint8_t
Get_BackLight_Level_Display
(
void
);
extern
uint8_t
interact_PWM_Low_Duty
;
void
BackLight_Process
(
void
);
void
Interact_Light_Process
(
void
);
void
BackLight_Clock_All_Process
(
void
);
extern
uint8_t
Get_Interact_Light_State
(
void
);
#endif
Firmware/Source/Component/PowerManagement/PowerManag_user.c
View file @
2ede2ca0
...
...
@@ -52,6 +52,7 @@ static void Power_KL30_Init(void)
Sys_KL30_Init
();
Checkself_Init
();
LINE_IN_Init
();
BackLight_User_Init
();
LED_Driver_Init_Example
();
//注意顺序2
LED_Driver_Service_Immediate
();
Telltales_Init
();
...
...
Firmware/Source/System/Sys_Task_List.c
View file @
2ede2ca0
...
...
@@ -35,6 +35,7 @@ void Sys_10ms_Tasks(void)
Line_In_Debounce_Service
(
10u
);
Can_BusOff_Recover
(
10u
);
Data_CumulativeWorkHours_EEPROM_Write
();
BackLight_Service
();
}
void
Sys_20ms_Tasks
(
void
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment