Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Z
Z3dev-AllToOneFanPanel
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
limm
Z3dev-AllToOneFanPanel
Commits
4f2cd626
Commit
4f2cd626
authored
Dec 28, 2020
by
limm
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
V1.2
parent
e7d3c114
Changes
19
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
301 additions
and
326 deletions
+301
-326
Code/海顿-多合一新风面板/APP/AllToOneThernmostatPannel.uvgui.11730
Code/海顿-多合一新风面板/APP/AllToOneThernmostatPannel.uvgui.11730
+0
-0
Code/海顿-多合一新风面板/APP/AllToOneThernmostatPannel.uvopt
Code/海顿-多合一新风面板/APP/AllToOneThernmostatPannel.uvopt
+51
-26
Code/海顿-多合一新风面板/APP/AllToOneThernmostatPannel.uvproj
Code/海顿-多合一新风面板/APP/AllToOneThernmostatPannel.uvproj
+2
-2
Code/海顿-多合一新风面板/APP/Nu_Link_Driver.ini
Code/海顿-多合一新风面板/APP/Nu_Link_Driver.ini
+3
-3
Code/海顿-多合一新风面板/APP/User/inc/CC2530_transparent_analyze.h
Code/海顿-多合一新风面板/APP/User/inc/CC2530_transparent_analyze.h
+2
-2
Code/海顿-多合一新风面板/APP/User/inc/Key.h
Code/海顿-多合一新风面板/APP/User/inc/Key.h
+2
-18
Code/海顿-多合一新风面板/APP/User/inc/control_comm.h
Code/海顿-多合一新风面板/APP/User/inc/control_comm.h
+2
-0
Code/海顿-多合一新风面板/APP/User/inc/display_common.h
Code/海顿-多合一新风面板/APP/User/inc/display_common.h
+4
-2
Code/海顿-多合一新风面板/APP/User/inc/mfg_factory.h
Code/海顿-多合一新风面板/APP/User/inc/mfg_factory.h
+2
-2
Code/海顿-多合一新风面板/APP/User/src/CC2530_transparent_analyze.c
Code/海顿-多合一新风面板/APP/User/src/CC2530_transparent_analyze.c
+8
-3
Code/海顿-多合一新风面板/APP/User/src/Key.c
Code/海顿-多合一新风面板/APP/User/src/Key.c
+0
-0
Code/海顿-多合一新风面板/APP/User/src/air_condition.c
Code/海顿-多合一新风面板/APP/User/src/air_condition.c
+49
-109
Code/海顿-多合一新风面板/APP/User/src/control_comm.c
Code/海顿-多合一新风面板/APP/User/src/control_comm.c
+0
-0
Code/海顿-多合一新风面板/APP/User/src/display_common.c
Code/海顿-多合一新风面板/APP/User/src/display_common.c
+35
-21
Code/海顿-多合一新风面板/APP/User/src/mfg_factort.c
Code/海顿-多合一新风面板/APP/User/src/mfg_factort.c
+1
-0
Code/海顿-多合一新风面板/APP/main.c
Code/海顿-多合一新风面板/APP/main.c
+1
-21
Code/海顿-多合一新风面板/Library/StdDriver/src/clk.c
Code/海顿-多合一新风面板/Library/StdDriver/src/clk.c
+25
-3
Code/海顿-多合一新风面板/Library/StdDriver/src/retarget.c
Code/海顿-多合一新风面板/Library/StdDriver/src/retarget.c
+3
-3
Code/海顿-多合一新风面板/Library/StdDriver/src/uart.c
Code/海顿-多合一新风面板/Library/StdDriver/src/uart.c
+111
-111
No files found.
Code/海顿-多合一新风面板/APP/AllToOneThernmostatPannel.uvgui.11730
View file @
4f2cd626
This source diff could not be displayed because it is too large. You can
view the blob
instead.
Code/海顿-多合一新风面板/APP/AllToOneThernmostatPannel.uvopt
View file @
4f2cd626
...
...
@@ -101,7 +101,7 @@
<sRunDeb>
0
</sRunDeb>
<sLrtime>
1
</sLrtime>
<bEvRecOn>
1
</bEvRecOn>
<nTsel>
19
</nTsel>
<nTsel>
7
</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
...
...
@@ -112,7 +112,7 @@
<tDlgDll></tDlgDll>
<tDlgPa></tDlgPa>
<tIfile></tIfile>
<pMon>
Bin
\Nu_Link.dll
</pMon>
<pMon>
NULink
\Nu_Link.dll
</pMon>
</DebugOpt>
<TargetDriverDllRegistry>
<SetRegEntry>
...
...
@@ -140,89 +140,89 @@
<Bp>
<Number>
0
</Number>
<Type>
0
</Type>
<LineNumber>
293
</LineNumber>
<LineNumber>
65
</LineNumber>
<EnabledFlag>
1
</EnabledFlag>
<Address>
212
</Address>
<Address>
5624
</Address>
<ByteObject>
0
</ByteObject>
<HtxType>
0
</HtxType>
<ManyObjects>
0
</ManyObjects>
<SizeOfObject>
0
</SizeOfObject>
<BreakByAccess>
0
</BreakByAccess>
<BreakIfRCount>
1
</BreakIfRCount>
<Filename>
..
\Library\StdDriver\src\retarget.c
</Filename>
<Filename>
D:\Users\11730\SimplicityStudio\v4_workspace\KKAll-In-OneThermostatPanelMG21V1\z3s_thermostatallinonemg21sdk665v2\Code\娴烽】-澶氬悎涓€鏂伴闈㈡澘
\Library\StdDriver\src\retarget.c
</Filename>
<ExecCommand></ExecCommand>
<Expression>
\\AllToOneThermostatPannel\../Library/StdDriver/src/retarget.c\
293
</Expression>
<Expression>
\\AllToOneThermostatPannel\../Library/StdDriver/src/retarget.c\
65
</Expression>
</Bp>
<Bp>
<Number>
1
</Number>
<Type>
0
</Type>
<LineNumber>
1
09
</LineNumber>
<LineNumber>
1
218
</LineNumber>
<EnabledFlag>
1
</EnabledFlag>
<Address>
27080
</Address>
<Address>
4294
</Address>
<ByteObject>
0
</ByteObject>
<HtxType>
0
</HtxType>
<ManyObjects>
0
</ManyObjects>
<SizeOfObject>
0
</SizeOfObject>
<BreakByAccess>
0
</BreakByAccess>
<BreakIfRCount>
1
</BreakIfRCount>
<Filename>
D:\Users\11730\SimplicityStudio\v4_workspace\KKAll-In-OneThermostatPanelMG21V1\z3s_thermostatallinonemg21sdk665v2\Code\娴烽】-澶氬悎涓€鏂伴闈㈡澘\APP\User\src\
mfg_factort
.c
</Filename>
<Filename>
D:\Users\11730\SimplicityStudio\v4_workspace\KKAll-In-OneThermostatPanelMG21V1\z3s_thermostatallinonemg21sdk665v2\Code\娴烽】-澶氬悎涓€鏂伴闈㈡澘\APP\User\src\
display_common
.c
</Filename>
<ExecCommand></ExecCommand>
<Expression>
\\AllToOneThermostatPannel\User/src/
mfg_factort.c\109
</Expression>
<Expression>
\\AllToOneThermostatPannel\User/src/
display_common.c\1218
</Expression>
</Bp>
<Bp>
<Number>
2
</Number>
<Type>
0
</Type>
<LineNumber>
105
</LineNumber>
<LineNumber>
303
</LineNumber>
<EnabledFlag>
1
</EnabledFlag>
<Address>
2
7076
</Address>
<Address>
2
32
</Address>
<ByteObject>
0
</ByteObject>
<HtxType>
0
</HtxType>
<ManyObjects>
0
</ManyObjects>
<SizeOfObject>
0
</SizeOfObject>
<BreakByAccess>
0
</BreakByAccess>
<BreakIfRCount>
1
</BreakIfRCount>
<Filename>
D:\Users\11730\SimplicityStudio\v4_workspace\KKAll-In-OneThermostatPanelMG21V1\z3s_thermostatallinonemg21sdk665v2\Code\娴烽】-澶氬悎涓€鏂伴闈㈡澘\APP\User\src\mfg_factor
t.c
</Filename>
<Filename>
..\Library\StdDriver\src\retarge
t.c
</Filename>
<ExecCommand></ExecCommand>
<Expression>
\\AllToOneThermostatPannel\
User/src/mfg_factort.c\105
</Expression>
<Expression>
\\AllToOneThermostatPannel\
../Library/StdDriver/src/retarget.c\303
</Expression>
</Bp>
<Bp>
<Number>
3
</Number>
<Type>
0
</Type>
<LineNumber>
58
0
</LineNumber>
<LineNumber>
11
0
</LineNumber>
<EnabledFlag>
1
</EnabledFlag>
<Address>
13540
</Address>
<Address>
26502
</Address>
<ByteObject>
0
</ByteObject>
<HtxType>
0
</HtxType>
<ManyObjects>
0
</ManyObjects>
<SizeOfObject>
0
</SizeOfObject>
<BreakByAccess>
0
</BreakByAccess>
<BreakIfRCount>
1
</BreakIfRCount>
<Filename>
D:\Users\11730\SimplicityStudio\v4_workspace\KKAll-In-OneThermostatPanelMG21V1\z3s_thermostatallinonemg21sdk665v2\Code\娴烽】-澶氬悎涓€鏂伴闈㈡澘\APP\User\src\
control_comm
.c
</Filename>
<Filename>
D:\Users\11730\SimplicityStudio\v4_workspace\KKAll-In-OneThermostatPanelMG21V1\z3s_thermostatallinonemg21sdk665v2\Code\娴烽】-澶氬悎涓€鏂伴闈㈡澘\APP\User\src\
mfg_factort
.c
</Filename>
<ExecCommand></ExecCommand>
<Expression>
\\AllToOneThermostatPannel\User/src/
control_comm.c\58
0
</Expression>
<Expression>
\\AllToOneThermostatPannel\User/src/
mfg_factort.c\11
0
</Expression>
</Bp>
<Bp>
<Number>
4
</Number>
<Type>
0
</Type>
<LineNumber>
690
</LineNumber>
<LineNumber>
53
</LineNumber>
<EnabledFlag>
1
</EnabledFlag>
<Address>
24
28
4
</Address>
<Address>
24
64
4
</Address>
<ByteObject>
0
</ByteObject>
<HtxType>
0
</HtxType>
<ManyObjects>
0
</ManyObjects>
<SizeOfObject>
0
</SizeOfObject>
<BreakByAccess>
0
</BreakByAccess>
<BreakIfRCount>
1
</BreakIfRCount>
<Filename>
D:\Users\11730\SimplicityStudio\v4_workspace\KKAll-In-OneThermostatPanelMG21V1\z3s_thermostatallinonemg21sdk665v2\Code\娴烽】-澶氬悎涓€鏂伴闈㈡澘\APP\
User\src\control_comm
.c
</Filename>
<Filename>
D:\Users\11730\SimplicityStudio\v4_workspace\KKAll-In-OneThermostatPanelMG21V1\z3s_thermostatallinonemg21sdk665v2\Code\娴烽】-澶氬悎涓€鏂伴闈㈡澘\APP\
main
.c
</Filename>
<ExecCommand></ExecCommand>
<Expression>
\\AllToOneThermostatPannel\
User/src/control_comm.c\690
</Expression>
<Expression>
\\AllToOneThermostatPannel\
main.c\53
</Expression>
</Bp>
</Breakpoint>
<WatchWindow1>
<Ww>
<count>
0
</count>
<WinNumber>
1
</WinNumber>
<ItemText>
Device_status
</ItemText>
<ItemText>
temp1
</ItemText>
</Ww>
<Ww>
<count>
1
</count>
...
...
@@ -259,6 +259,31 @@
<WinNumber>
1
</WinNumber>
<ItemText>
static_transprent_buff_mfg
</ItemText>
</Ww>
<Ww>
<count>
8
</count>
<WinNumber>
1
</WinNumber>
<ItemText>
temp1
</ItemText>
</Ww>
<Ww>
<count>
9
</count>
<WinNumber>
1
</WinNumber>
<ItemText>
g_NetOptIndicator[i].offCounter
</ItemText>
</Ww>
<Ww>
<count>
10
</count>
<WinNumber>
1
</WinNumber>
<ItemText>
static_transprent_buff
</ItemText>
</Ww>
<Ww>
<count>
11
</count>
<WinNumber>
1
</WinNumber>
<ItemText>
((SysTick_Type *) ((0xE000E000UL) + 0x0010UL) )
</ItemText>
</Ww>
<Ww>
<count>
12
</count>
<WinNumber>
1
</WinNumber>
<ItemText>
SysTick
</ItemText>
</Ww>
</WatchWindow1>
<WatchWindow2>
<Ww>
...
...
@@ -315,7 +340,7 @@
<MemoryWindow1>
<Mm>
<WinNumber>
1
</WinNumber>
<SubType>
0
</SubType>
<SubType>
2
</SubType>
<ItemText>
0x200006BD
</ItemText>
<AccSizeX>
0
</AccSizeX>
</Mm>
...
...
@@ -371,7 +396,7 @@
<Group>
<GroupName>
CMSIS
</GroupName>
<tvExp>
1
</tvExp>
<tvExp>
0
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<cbSel>
0
</cbSel>
<RteFlg>
0
</RteFlg>
...
...
@@ -403,7 +428,7 @@
<Group>
<GroupName>
Library
</GroupName>
<tvExp>
0
</tvExp>
<tvExp>
1
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<cbSel>
0
</cbSel>
<RteFlg>
0
</RteFlg>
...
...
Code/海顿-多合一新风面板/APP/AllToOneThernmostatPannel.uvproj
View file @
4f2cd626
...
...
@@ -148,7 +148,7 @@
<RestoreSysVw>
1
</RestoreSysVw>
</Target>
<RunDebugAfterBuild>
0
</RunDebugAfterBuild>
<TargetSelection>
19
</TargetSelection>
<TargetSelection>
7
</TargetSelection>
<SimDlls>
<CpuDll></CpuDll>
<CpuDllArguments></CpuDllArguments>
...
...
@@ -162,7 +162,7 @@
<PeripheralDll></PeripheralDll>
<PeripheralDllArguments></PeripheralDllArguments>
<InitializationFile></InitializationFile>
<Driver>
Bin
\Nu_Link.dll
</Driver>
<Driver>
NULink
\Nu_Link.dll
</Driver>
</TargetDlls>
</DebugOption>
<Utilities>
...
...
Code/海顿-多合一新风面板/APP/Nu_Link_Driver.ini
View file @
4f2cd626
[Version]
Nu_LinkVersion
=
V5.14
[Process]
ProcessID
=
0x0000
3f04
ProcessCreationTime_L
=
0x
72edddaf
ProcessCreationTime_H
=
0x01d6
cd03
ProcessID
=
0x0000
e77c
ProcessCreationTime_L
=
0x
cec60db7
ProcessCreationTime_H
=
0x01d6
d90f
NuLinkID
=
0x18101887
NuLinkID0
=
0x18101887
NuLinkIDs_Count
=
0x00000001
...
...
Code/海顿-多合一新风面板/APP/User/inc/CC2530_transparent_analyze.h
View file @
4f2cd626
...
...
@@ -65,8 +65,8 @@ typedef enum {TP_ERROR = 0, TP_SUCCESS = !TP_ERROR} TP_ErrorStatus;
#define SOF_HIGH_BYTE_DEF 0XAA
#define SOF_LOW_BYTE_DEF 0X55
#define USART_RECIVE_LEN_DEF 4
0
//串口最多一次接受的数据量
#define USART_RECIVE_DEPTH
3
//缓存的深度
#define USART_RECIVE_LEN_DEF 4
8
//串口最多一次接受的数据量
#define USART_RECIVE_DEPTH
12
//缓存的深度
//透传数据接受最大间隔时间,超时未接收到数据,停止一串数据接收
#define DEF_TRANSPARENT_MAXIMUM_INTERVAL 100 //(ms)
...
...
Code/海顿-多合一新风面板/APP/User/inc/Key.h
View file @
4f2cd626
...
...
@@ -43,34 +43,18 @@ typedef uint16_t u16;
typedef
uint8_t
u8
;
typedef
struct
Time_To_Power_Off
{
u8
timekey_start_status
;
//按下定时键
u8
timer_status
;
//定时器开启状态
u8
power_switch_status
;
//开关按键状态
u8
time_data
;
//倒计时时间
u8
set_up_status
;
//进入长按设置状态
u8
set_up_option
;
//设置选项
s8
temperature_correct
;
//温度校准值
s16
temperature_value
;
//实际温度值
u16
temperature_set_value
;
//设定温度值
u8
system_type
;
//系统类型
u8
wind_auto_air_status
;
//风速自动通风状态
u8
lock_status
;
//按键锁定状态
}
TIMEING_INFO
;
typedef
struct
{
volatile
u32
operate_delay_off_ms
;
volatile
u32
operate_delay_off_s
;
volatile
u32
operate_delay_off_min
;
volatile
u32
operate_delay_off_h
;
u8
operate_delay_off_display_flag
;
}
Filter_Wash_Calc
;
typedef
struct
KEY_OPERATE
{
u8
operate_delay_off_status
;
//延时关机操作期间标志位判断
u8
operate_delay_off_display_flag
;
volatile
u32
operate_delay_off_ms
;
volatile
u32
operate_delay_off_s
;
volatile
u32
operate_delay_off_min
;
...
...
Code/海顿-多合一新风面板/APP/User/inc/control_comm.h
View file @
4f2cd626
...
...
@@ -43,12 +43,14 @@ typedef struct Power_Off_Time
typedef
struct
{
u8
blacklight_flag
;
u8
blacklight_display_flag
;
volatile
u32
time_blacklight_ms
;
volatile
u16
time_blacklight_s
;
}
BACKLIGHT_CONTROL
;
typedef
struct
{
u8
zigbee_uart_flag
;
u8
zigbee_uart_display_flag
;
volatile
u32
zigbee_uart_ms
;
volatile
u16
zigbee_uart_s
;
}
ZIGBEE_UART_CONTROL
;
...
...
Code/海顿-多合一新风面板/APP/User/inc/display_common.h
View file @
4f2cd626
...
...
@@ -54,8 +54,9 @@ typedef struct
u16
screen_save_time
;
//屏保时间 00 代表30
u16
filter_wash_time
;
//滤网清洗时间 3000
u8
no_disturb_mode
;
//勿扰模式 0
u8
air_product_id
;
u8
air_type
;
u8
air_product_id
;
//空调品牌
u8
air_type
;
//空调类型
u8
air_master_slavery_mode
;
//主从模式
}
OLED_AIR_DSD
;
typedef
struct
{
...
...
@@ -131,6 +132,7 @@ typedef struct{
u8
support_function_list
[
6
];
//1,风机盘管管制设置 2,温度校准 3,是否显示当前房间温度设置,4, 超时进入屏保时间设置 10 恢复出厂设置
volatile
u32
config_time_ms
;
volatile
u8
config_time_s
;
u8
config_timeout_display
;
}
Local_Config_Operation
;
typedef
enum
{
LOCAL_FUNC_FAN_PANEL_SETTING
=
1
,
...
...
Code/海顿-多合一新风面板/APP/User/inc/mfg_factory.h
View file @
4f2cd626
...
...
@@ -20,8 +20,8 @@
#define SOF_HIGH_BYTE_DEF 0XAA
#define SOF_LOW_BYTE_DEF 0X55
#define MAX_USART_RECIVE_LEN
56
//串口最多一次接受的数据量
#define USART_RECIVE_DEPTHS
3
//缓存的深度
#define MAX_USART_RECIVE_LEN
48
//串口最多一次接受的数据量
#define USART_RECIVE_DEPTHS
10
//缓存的深度
...
...
Code/海顿-多合一新风面板/APP/User/src/CC2530_transparent_analyze.c
View file @
4f2cd626
...
...
@@ -50,7 +50,7 @@ static void (*non_permeable_opcode_analysis)(PROTOCOL_DEAL protocol_data);
static
void
(
*
transparent_opcode_analysis
)(
PROTOCOL_DEAL
protocol_data
);
static
TP_ErrorStatus
transparent_protocol_analysis
(
TP_uc8
*
data
,
TP_uc8
len
);
static
u8
Record_Last_Seq
=
0xFF
;
/**************************************************************************************************************
全局变量,用于 transparent_protocol_send
***************************************************************************************************************/
...
...
@@ -435,6 +435,7 @@ static TP_u8 Usart_recive_write_buff(TP_uc8 *data,TP_uc16 len)
{
//printf("data deal too slow");
static_transprent_buff
.
Download_serial_num
=
rem_serial
;
static_transprent_buff
.
Buff_send_serial_num
=
rem_serial
;
return
0
;
}
...
...
@@ -456,7 +457,6 @@ static TP_u8 Usart_recive_write_buff(TP_uc8 *data,TP_uc16 len)
static
TP_ErrorStatus
transparent_protocol_analysis
(
TP_uc8
*
data
,
TP_uc8
len
)
{
PROTOCOL_DEAL
Usart_protocol_deal
=
{
0
};
if
((
data
==
NULL
)
||
(
len
<
5
)
||
(
len
>
USART_RECIVE_LEN_DEF
))
{
//printf("non valied msg,discard it all\r\n");
...
...
@@ -464,17 +464,22 @@ static TP_ErrorStatus transparent_protocol_analysis(TP_uc8 *data, TP_uc8 len)
}
Usart_protocol_deal
.
SEQ
=
*
(
data
+
4
);
//记录 seq 的值
if
(
Usart_protocol_deal
.
SEQ
==
Record_Last_Seq
)
return
TP_ERROR
;
if
(
BYTE_MOVE
(
*
(
data
+
len
-
2
),
*
(
data
+
len
-
1
))
!=
CreateCrc16
(
data
+
3
,
len
-
5
))
//CRC校验
{
//校验不对
send_crc_error
(
Usart_protocol_deal
.
SEQ
);
return
TP_ERROR
;
}
Record_Last_Seq
=
Usart_protocol_deal
.
SEQ
;
Usart_protocol_deal
.
Opcode
=
BYTE_MOVE
(
*
(
data
+
7
),
*
(
data
+
8
));
//赋值功能码
Usart_protocol_deal
.
Channel_ID
=
*
(
data
+
6
);
Usart_protocol_deal
.
ControlField
=
*
(
data
+
3
);
Usart_protocol_deal
.
ARG
=
(
data
+
9
);
Usart_protocol_deal
.
ARG_len
=
(
*
(
data
+
2
)
-
6
);
//根据协议,此处应该 data + 2
//DEBUG_USATR1("[cc->stm]RECIVE OPCODE: %16x \r\n",Usart_protocol_deal.Opcode);
if
((
Usart_protocol_deal
.
ControlField
&
0x80
)
==
0x80
)
//非透传的数据
...
...
Code/海顿-多合一新风面板/APP/User/src/Key.c
View file @
4f2cd626
This diff is collapsed.
Click to expand it.
Code/海顿-多合一新风面板/APP/User/src/air_condition.c
View file @
4f2cd626
...
...
@@ -5,6 +5,7 @@
#include "key.h"
#include "ZH_protocol.h"
#include "display_common.h"
#include "BL55072A.h"
/************************************************************************************************
时间:2019.9.16
作者:吴明军
...
...
@@ -12,112 +13,35 @@
参数: 传递opearoteID,productID协议的第三位,此位表示品牌编号
返回值:无
*****************************************************************************************************/
extern
Lcd_Status_Info_t
LCDShowTemp_state_t
;
u32
use_oprearoteID
=
0xff
,
use_productID
=
0xff
;
u32
use_oprearoteID
=
MIDEA_OPERATE_ID
,
use_productID
=
MIDEA_PRODUCT_ID
;
void
transfer_opearoteID_productID
(
uint8_t
brand
)
#define SIMULATOR 0 //模拟器
#define DAIKIN 1 //品牌 :大金
#define HITACHI 2 //品牌 :日立
#define TOSHIBA 3 //东芝
#define MITSUBISHI 4 //三菱重工
#define MITSUBISHI_ELECTRIC 5 //三菱电机
#define GREE 6 //格力
#define MIDEA_TRADEMARK 7 //美的
#define DAIKIN_MX 8 //大金MX
#define HITACHI_US 9 //日立US
#define DAIKIN_NEW_WIND 10 //大金新风
#define HITACHI_NEW_WIND 11 //日立新风
#define PANASONIC_NEW_WIND 12 //松下新风
#define GREE_A_PAD 13 //格力A 型风管
#define YORK 14 //约克
#define MCQUARY 15 //麦克斯韦尔
#define GREE_HOTEL_PAD 16 //格力酒店风管
#define TRANE 17 //特灵一拖一
#define HAIER 18 //海尔一拖一
#define MIDEA_COOL_WIND 19 //美的酷风
#define GREE_C1_PAD 20 //格力C1风管
#define GREE_NEW_WIND_AREFACTION 21 //格力新风除湿
void
transfer_opearoteID_productID
(
u8
brand
,
u8
type
)
{
switch
(
brand
)
{
case
SIMULATOR
:
break
;
case
DAIKIN
:
use_oprearoteID
=
DAIKIN_OPERATE_ID
;
use_productID
=
DAIKIN_PRODUCT_ID
;
break
;
case
HITACHI
:
use_oprearoteID
=
HITACHI_OPERATE_ID
;
use_productID
=
HITACHI_PRODUCT_ID
;
break
;
case
TOSHIBA
:
use_oprearoteID
=
TOSHIBA_OPERATE_ID
;
use_productID
=
TOSHIBA_PRODUCT_ID
;
break
;
case
MITSUBISHI
:
use_oprearoteID
=
MITSUBISHI_OPERATE_ID
;
use_productID
=
MITSUBISHI_PRODUCT_ID
;
break
;
case
MITSUBISHI_ELECTRIC
:
use_oprearoteID
=
MITSUBISHI_ELECTRIC_OPERATE_ID
;
use_productID
=
MITSUBISHI_ELECTRIC_PRODUCT_ID
;
break
;
case
GREE
:
use_oprearoteID
=
GREE_OPERATE_ID
;
use_productID
=
GREE_PRODUCT_ID
;
break
;
case
MIDEA_TRADEMARK
:
use_oprearoteID
=
MIDEA_OPERATE_ID
;
use_productID
=
MIDEA_PRODUCT_ID
;
break
;
case
DAIKIN_MX
:
use_oprearoteID
=
DAIKIN_MX_OPERATE_ID
;
use_productID
=
DAIKIN_MX_PRODUCT_ID
;
break
;
case
HITACHI_US
:
use_oprearoteID
=
HITACHI_US_OPERATE_ID
;
use_productID
=
HITACHI_US_PRODUCT_ID
;
break
;
case
DAIKIN_NEW_WIND
:
use_oprearoteID
=
DAIKIN_NEW_WIND_OPERATE_ID
;
use_productID
=
DAIKIN_NEW_WIND_PRODUCT_ID
;
break
;
case
HITACHI_NEW_WIND
:
use_oprearoteID
=
HITACHI_NEW_WIND_OPERATE_ID
;
use_productID
=
HITACHI_NEW_WIND_PRODUCT_ID
;
break
;
case
PANASONIC_NEW_WIND
:
use_oprearoteID
=
PANASONIC_NEW_WIND_OPERATE_ID
;
use_productID
=
PANASONIC_NEW_WIND_PRODUCT_ID
;
break
;
case
GREE_A_PAD
:
use_oprearoteID
=
GREE_A_PAD_OPERATE_ID
;
use_productID
=
GREE_A_PAD_PRODUCT_ID
;
break
;
case
YORK
:
use_oprearoteID
=
YORK_OPERATE_ID
;
use_productID
=
YORK_PRODUCT_ID
;
break
;
case
MCQUARY
:
use_oprearoteID
=
MCQUARY_PAD_OPERATE_ID
;
use_productID
=
MCQUARY_PRODUCT_ID
;
break
;
case
GREE_HOTEL_PAD
:
use_oprearoteID
=
GREE_HOTEL_PAD_OPERATE_ID
;
use_productID
=
GREE_HOTEL_PAD_PRODUCT_ID
;
break
;
case
TRANE
:
use_oprearoteID
=
TRANE_OPERATE_ID
;
use_productID
=
TRANE_PRODUCT_ID
;
break
;
case
HAIER
:
use_oprearoteID
=
HAIER_OPERATE_ID
;
use_productID
=
HAIER_PRODUCT_ID
;
break
;
case
MIDEA_COOL_WIND
:
use_oprearoteID
=
MIDEA_COOL_WIND_OPERATE_ID
;
use_productID
=
MIDEA_COOL_WIND_PRODUCT_ID
;
break
;
case
GREE_C1_PAD
:
use_oprearoteID
=
GREE_C1_PAD_OPERATE_ID
;
use_productID
=
GREE_C1_PAD_PRODUCT_ID
;
break
;
case
GREE_NEW_WIND_AREFACTION
:
use_oprearoteID
=
GREE_NEW_WIND_AREFACTION_OPERATE_ID
;
use_productID
=
GREE_NEW_WIND_AREFACTION_PRODUCT_ID
;
break
;
default
:
break
;
}
Oled_Display_Info
.
Air_Device
.
air_product_id
=
brand
;
Oled_Display_Info
.
Air_Device
.
air_cond_type
=
type
;
}
extern
KEY_OPERATE
sKey_Operation
[
3
];
static
void
air_report_process
(
void
)
...
...
@@ -125,7 +49,7 @@ static void air_report_process(void)
/*读取oprearoteID,productID*/
if
(
ZH_protocol_i
->
poll_check_receive
[
SWITCH
]
==
0xAA
)
//带此标志的专为读取oprearoteID,productID,故之后不再次解读
{
transfer_opearoteID_productID
(
ZH_protocol_i
->
poll_check_receive
[
MODE
]);
//此命令中此处存放的是品牌
transfer_opearoteID_productID
(
ZH_protocol_i
->
poll_check_receive
[
MODE
]
,
ZH_protocol_i
->
poll_check_receive
[
TEMPERATURE
]
);
//此命令中此处存放的是品牌
}
else
{
...
...
@@ -167,12 +91,11 @@ static void air_report_process(void)
if
(
(
ZH_protocol_i
->
poll_check_receive
[
TEMPERATURE
]
!=
(
Oled_Display_Info
.
Air_Device
.
set_temperature
/
10
)
)
&&
(
ZH_protocol_i
->
poll_check_receive
[
TEMPERATURE
]
!=
0xFF
))
{
if
(
sKey_Operation
[
0
].
set_temper_temp
>=
10
*
ZH_protocol_i
->
poll_check_receive
[
TEMPERATURE
])
Oled_Display_Info
.
Air_Device
.
set_temperature
=
sKey_Operation
[
0
].
set_temper_temp
;
Oled_Display_Info
.
Air_Device
.
set_temperature
=
10
*
ZH_protocol_i
->
poll_check_receive
[
TEMPERATURE
];
if
(
Oled_Display_Info
.
Air_Device
.
on_off
)
//开机状态
{
//display_set_temp(
Oled_Display_Info.Air_Device.set_temperature,0);
display_set_temp
(
0
,
Oled_Display_Info
.
Air_Device
.
set_temperature
,
0
);
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
// 上报状态
}
...
...
@@ -182,13 +105,30 @@ static void air_report_process(void)
if
((
ZH_protocol_i
->
poll_check_receive
[
SWITCH
]
!=
Oled_Display_Info
.
Air_Device
.
on_off
)
&&
(
ZH_protocol_i
->
poll_check_receive
[
SWITCH
]
!=
0xFF
))
{
Oled_Display_Info
.
Air_Device
.
on_off
=
ZH_protocol_i
->
poll_check_receive
[
SWITCH
];
printf
(
"on off =%d
\r\n
"
,
Oled_Display_Info
.
Air_Device
.
on_off
);
//
printf("on off =%d\r\n",Oled_Display_Info.Air_Device.on_off);
if
(
Oled_Display_Info
.
Air_Device
.
on_off
)
Control_OnOff_handler
(
AIR_CONDITION
,
1
);
else
{
BL55072A_Clear
();
Control_OnOff_handler
(
AIR_CONDITION
,
0
);
}
state_change_report
(
OPCODE_GENERAL_REPORT_STATUS
,
1
);
//状态改变通知
}
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
if
(
ZH_protocol_i
->
poll_check_receive
[
STATE
]
&
0x10
)
{
Oled_Display_Info
.
Air_Device
.
air_master_slavery_mode
=
1
;
if
(
!
IsLcdEnterScreenSave
()
&&
(
Oled_Display_Info
.
Air_Device
.
power_off_time
==
0
)
&&
(
Oled_Display_Info
.
Air_Device
.
on_off
))
{
LCDShowTemp_state_t
.
LCD_place
=
H_CHAR_DISPLAY
;
LCDShowTemp_state_t
.
LCD_state
=
ON
;
LcdShowCTR
(
LCDShowTemp_state_t
);
}
}
#endif
}
}
void
ZH_msg_deal
(
void
)
...
...
Code/海顿-多合一新风面板/APP/User/src/control_comm.c
View file @
4f2cd626
This diff is collapsed.
Click to expand it.
Code/海顿-多合一新风面板/APP/User/src/display_common.c
View file @
4f2cd626
...
...
@@ -7,11 +7,11 @@
extern
Lcd_Status_Info_t
LCDShowTemp_state_t
;
#if DEVICE_TYPE_AIR_CONDITION
OLED_ALL_DSD
Oled_Display_Info
=
{
1
,
0
,
1
,
0
,
0
,
0x11
,
0
,
0
,
0
,
0
,{
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
},{
1
,
0
,
0
,
0
,
260
,
0
,
3
,
0
,
5
,
0
,
2
,
1
,
0
,
0
,
3000
,
0
,
0xff
,
0xff
},{
1
,
0
,
0
,
0
,
260
,
0
,
2
,
0
,
DEV_TYPE
,
0
,
0
,
0
},{
1
,
0
,
0
,
0
,
0
,
2
,
1
,
0
,
0
,
0
,
3000
,
0
}};
OLED_ALL_DSD
Oled_Display_Info
=
{
1
,
0
,
1
,
0
,
0
,
0x11
,
0
,
0
,
0
,
0
,{
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
},{
1
,
0
,
0
,
0
,
260
,
0
,
3
,
0
,
5
,
0
,
2
,
1
,
0
,
0
,
3000
,
0
,
0xff
,
0xff
,
0
},{
1
,
0
,
0
,
0
,
260
,
0
,
2
,
0
,
DEV_TYPE
,
0
,
0
,
0
},{
1
,
0
,
0
,
0
,
0
,
2
,
1
,
0
,
0
,
0
,
3000
,
0
}};
#elif DEVICE_TYPE_FLOOR_HEATING
OLED_ALL_DSD
Oled_Display_Info
=
{
2
,
0
,
2
,
0
,
0
,
0x11
,
0
,
0
,
0
,
0
,{
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
},{
1
,
0
,
0
,
0
,
260
,
0
,
3
,
0
,
5
,
0
,
2
,
1
,
0
,
0
,
3000
,
0
,
0xff
,
0xff
},{
1
,
0
,
0
,
0
,
260
,
0
,
2
,
0
,
DEV_TYPE
,
0
,
0
,
0
},{
1
,
0
,
0
,
0
,
0
,
2
,
1
,
0
,
0
,
0
,
3000
,
0
}};
OLED_ALL_DSD
Oled_Display_Info
=
{
2
,
0
,
2
,
0
,
0
,
0x11
,
0
,
0
,
0
,
0
,{
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
},{
1
,
0
,
0
,
0
,
260
,
0
,
3
,
0
,
5
,
0
,
2
,
1
,
0
,
0
,
3000
,
0
,
0xff
,
0xff
,
0
},{
1
,
0
,
0
,
0
,
260
,
0
,
2
,
0
,
DEV_TYPE
,
0
,
0
,
0
},{
1
,
0
,
0
,
0
,
0
,
2
,
1
,
0
,
0
,
0
,
3000
,
0
}};
#elif DEVICE_TYPE_FAN
OLED_ALL_DSD
Oled_Display_Info
=
{
3
,
0
,
3
,
0
,
0
,
0x1
1
,
0
,
0
,
0
,
0
,{
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
},{
1
,
0
,
0
,
0
,
260
,
0
,
3
,
0
,
5
,
0
,
2
,
1
,
0
,
0
,
3000
,
0
,
0xff
,
0xff
},{
1
,
0
,
0
,
0
,
260
,
0
,
2
,
0
,
0
,
0
,
0
,
0
},{
1
,
0
,
0
,
0
,
0
,
2
,
1
,
0
,
0
,
0
,
3000
,
0
}};
OLED_ALL_DSD
Oled_Display_Info
=
{
3
,
0
,
3
,
0
,
0
,
0x1
2
,
0
,
0
,
0
,
0
,{
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
},{
1
,
0
,
0
,
0
,
260
,
0
,
3
,
0
,
5
,
0
,
2
,
1
,
0
,
0
,
3000
,
0
,
0xff
,
0xff
,
0
},{
1
,
0
,
0
,
0
,
260
,
0
,
2
,
0
,
0
,
0
,
0
,
0
},{
1
,
0
,
0
,
0
,
0
,
2
,
1
,
0
,
0
,
0
,
3000
,
0
}};
#endif
Key_Operation_Status
gKey_Press_Info
=
{
0
};
// .device_type = 1, //AIR_CONDITION
...
...
@@ -531,9 +531,9 @@ void Display_Up_Contend(u8 device_type)
{
display_error
(
Oled_Display_Info
.
FAN_Device
.
error
);
}
else
if
(
Oled_Display_Info
.
is_dispaly_cur_temp
)
else
if
(
(
Oled_Display_Info
.
is_dispaly_cur_temp
)
)
{
Display_Current_Temper
(
Oled_Display_Info
.
FAN_Device
.
real_temperature
);
Display_Current_Temper
(
Oled_Display_Info
.
FAN_Device
.
real_temperature
);
}
}
}
...
...
@@ -558,12 +558,15 @@ void Fan_Oled_Display()
/********************************************
显示当前风速
*********************************************/
display_set_temp
(
1
,
Oled_Display_Info
.
FAN_Device
.
wind_speed
,
1
);
if
(
!
IsLcdEnterScreenSave
())
display_set_temp
(
1
,
Oled_Display_Info
.
FAN_Device
.
wind_speed
,
1
);
else
display_set_temp
(
0
,
Oled_Display_Info
.
FAN_Device
.
real_temperature
,
0
);
//显示当前温度
/********************************************
显示延时关机、错误码、当前温度字符
*********************************************/
Display_Up_Contend
(
FAN
);
if
(
!
IsLcdEnterScreenSave
())
Display_Up_Contend
(
FAN
);
}
void
Floor_Heating_Oled_Display
()
{
...
...
@@ -591,7 +594,8 @@ void Floor_Heating_Oled_Display()
/********************************************
显示延时关机、错误码、当前温度字符
*********************************************/
Display_Up_Contend
(
FLOOR_HEATING
);
if
(
!
IsLcdEnterScreenSave
())
Display_Up_Contend
(
FLOOR_HEATING
);
}
void
Air_Oled_Display
(
void
)
{
...
...
@@ -619,7 +623,24 @@ void Air_Oled_Display(void)
/********************************************
显示延时关机、错误码、当前温度字符
*********************************************/
Display_Up_Contend
(
AIR_CONDITION
);
if
(
!
IsLcdEnterScreenSave
())
Display_Up_Contend
(
AIR_CONDITION
);
/********************************************
显示主从模式
*********************************************/
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
if
(
(
Oled_Display_Info
.
Air_Device
.
power_off_time
==
0
)
&&
(
Oled_Display_Info
.
Air_Device
.
air_master_slavery_mode
))
{
//显示H图标
if
(
!
IsLcdEnterScreenSave
())
{
LCDShowTemp_state_t
.
LCD_place
=
H_CHAR_DISPLAY
;
LCDShowTemp_state_t
.
LCD_state
=
ON
;
LcdShowCTR
(
LCDShowTemp_state_t
);
}
}
#endif
}
/*************************************************
开机显示选项
...
...
@@ -1330,16 +1351,9 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
if
((
Oled_Display_Info
.
Air_Device
.
on_off
)
&&
(
Oled_Display_Info
.
Air_Device
.
system_type
!=
SYSTEM_MODE_AIR
))
{
display_set_temp
(
0
,
set_temper
,
0
);
sKey_Operation
[
0
].
set_temper_temp
=
set_temper
;
Oled_Display_Info
.
Air_Device
.
set_temperature
=
set_temper
;
arg
[
0
]
=
0
;
if
(
(
sKey_Operation
[
0
].
set_temper_temp
/
10
)
==
(
Oled_Display_Info
.
Air_Device
.
set_temperature
/
10
))
//26.5调整到26度时,不管空调的反馈,直接上报
{
Oled_Display_Info
.
Air_Device
.
set_temperature
=
sKey_Operation
[
0
].
set_temper_temp
;
sKey_Operation
[
0
].
set_temper_temp
=
0xff
;
}
else
Oled_Display_Info
.
Air_Device
.
set_temperature
=
sKey_Operation
[
0
].
set_temper_temp
;
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_set_temp_start
();
#else
...
...
@@ -1951,7 +1965,7 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
}
}
//进入本地配置界面
Local_Config_Operation
local_config_operate
=
{
0
,
0
,
0
,
0
,
2
,{
3
,
100
},
0
,
0
};
Local_Config_Operation
local_config_operate
=
{
0
,
0
,
0
,
0
,
2
,{
3
,
100
},
0
,
0
,
0
};
/************************************************************
设置模式10秒计时
...
...
@@ -1970,7 +1984,7 @@ void Setup_Mode_Handle (void)
local_config_operate
.
config_time_s
=
0
;
//退出配置模式
local_config_operate
.
enter_config_mode
=
0
;
Control_OnOff_handler
(
Oled_Display_Info
.
device_type
,
0
);
//显示关
local_config_operate
.
config_timeout_display
=
1
;
}
}
}
...
...
Code/海顿-多合一新风面板/APP/User/src/mfg_factort.c
View file @
4f2cd626
...
...
@@ -42,6 +42,7 @@ static TP_u8 uart_recive_write_buff(TP_uc8 *data,TP_uc16 len)
{
//printf("data deal too slow");
static_transprent_buff
.
Download_serial_num
=
rem_serial
;
static_transprent_buff
.
Buff_send_serial_num
=
rem_serial
;
return
0
;
}
}
...
...
Code/海顿-多合一新风面板/APP/main.c
View file @
4f2cd626
...
...
@@ -16,26 +16,7 @@
#include "control_comm.h"
#include "hardware_init.h"
#include "BL55072A.h"
//void SYS_Init(void)
//{
// /* Unlock protected registers */
// SYS_UnlockReg();
// // Enable UART clock
// CLK_EnableModuleClock(UART0_MODULE);
// /* Update System Core Clock */
// /* User can use SystemCoreClockUpdate() to calculate SystemCoreClock and cyclesPerUs automatically. */
// SystemCoreClockUpdate();
// /* Set P1 multi-function pins for UART RXD, TXD */
// SYS->P1_MFP = SYS_MFP_P12_UART0_RXD | SYS_MFP_P13_UART0_TXD;
// /* Lock protected registers */
// SYS_LockReg();
//}
#include "CC2530_transparent_analyze.h"
Lcd_Status_Info_t
LCDShowTemp_state_t
=
{
0X00
,
0
,
ON
,
0X14
,
10
};
...
...
@@ -69,7 +50,6 @@ int main()
hardware_init
();
zero_check_init
();
printf
(
"
\n\n
CPU @ %dHz
\n
"
,
SystemCoreClock
);
while
(
1
)
{
task_process
();
...
...
Code/海顿-多合一新风面板/Library/StdDriver/src/clk.c
View file @
4f2cd626
...
...
@@ -570,17 +570,39 @@ void CLK_DisablePLL(void)
* @details Use the SysTick to generate the delay time and the UNIT is in us.
* The SysTick clock source is from HCLK, i.e the same as system core clock.
*/
//void CLK_SysTickDelay(uint32_t us)
//{
// SysTick->LOAD = us * CyclesPerUs;
// SysTick->VAL = (0x00);
// SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk;
// /* Waiting for down-count to zero */
// while((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == 0);
// SysTick->CTRL = 0;
//}
void
CLK_SysTickDelay
(
uint32_t
us
)
{
__IO
uint32_t
j
=
2
;
SysTick
->
LOAD
=
us
*
CyclesPerUs
;
SysTick
->
VAL
=
(
0x00
);
SysTick
->
CTRL
=
SysTick_CTRL_CLKSOURCE_Msk
|
SysTick_CTRL_ENABLE_Msk
;
if
(
us
==
1
)
j
=
j
+
us
;
else
if
(
us
==
5000
)
j
=
3500
+
us
;
else
j
=
5
+
us
;
/* Waiting for down-count to zero */
while
((
SysTick
->
CTRL
&
SysTick_CTRL_COUNTFLAG_Msk
)
==
0
);
//while( (SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == 0)
while
(
((
SysTick
->
CTRL
&
SysTick_CTRL_COUNTFLAG_Msk
)
==
0
)
&&
(
--
j
));
//lmm add
SysTick
->
CTRL
=
0
;
}
//void CLK_SysTickDelay(uint32_t us)
//{
// __IO uint32_t i,j;
// for(i=0;i<us;i++);
// for(j=0;j<6;j++);
//}
/**
* @brief This function check selected clock source status
* @param[in] u32ClkMask is selected clock source. Including
...
...
Code/海顿-多合一新风面板/Library/StdDriver/src/retarget.c
View file @
4f2cd626
...
...
@@ -62,13 +62,13 @@ void stackDump(uint32_t stack[])
void
Hard_Fault_Handler
(
uint32_t
stack
[])
{
printf
(
"In Hard Fault Handler
\n
"
);
//
printf("In Hard Fault Handler\n");
stackDump
(
stack
);
//Chip Reset
//
SYS_UnlockReg();
//SYS->IPRSTC1 |= SYS_IPRSTC1_CHIP_RST_Msk
;
SYS_UnlockReg
();
SYS_ResetChip
()
;
while
(
1
);
}
...
...
Code/海顿-多合一新风面板/Library/StdDriver/src/uart.c
View file @
4f2cd626
...
...
@@ -211,117 +211,117 @@ uint32_t UART_Read(UART_T* uart, uint8_t *pu8RxBuf, uint32_t u32ReadBytes)
}
/**
* @brief This function use to config UART line setting.
*
* @param[in] uart The base address of UART module.
* @param[in] u32baudrate The register value of baudrate of UART module.
* if u32baudrate = 0, UART baudrate will not change.
* @param[in] u32data_width The data length of UART module.
* @param[in] u32parity The parity setting (odd/even/none) of UART module.
* @param[in] u32stop_bits The stop bit length (1/1.5 bit) of UART module.
*
* @return None
*/
void
UART_SetLine_Config
(
UART_T
*
uart
,
uint32_t
u32baudrate
,
uint32_t
u32data_width
,
uint32_t
u32parity
,
uint32_t
u32stop_bits
)
{
uint8_t
u8UartClkSrcSel
;
uint32_t
u32Clk
=
0
;
uint32_t
u32ClkDiv
=
0
;
uint32_t
u32Baud_Div
=
0
;
u8UartClkSrcSel
=
(
CLK
->
CLKSEL1
&
CLK_CLKSEL1_UARTSEL_Msk
)
>>
CLK_CLKSEL1_UARTSEL_Pos
;
if
(
u8UartClkSrcSel
==
0
)
u32Clk
=
__XTAL
;
else
if
(
u8UartClkSrcSel
==
1
)
u32Clk
=
CLK_GetPLLClockFreq
();
else
if
(
u8UartClkSrcSel
>=
2
)
u32Clk
=
__HSI
;
u32ClkDiv
=
(
(
CLK
->
CLKDIV
&
CLK_CLKDIV_UARTDIV_Msk
)
>>
CLK_CLKDIV_UARTDIV_Pos
);
u32Clk
=
u32Clk
/
(
u32ClkDiv
+
1
);
if
(
u32baudrate
!=
0
)
{
u32Baud_Div
=
UART_BAUD_MODE2_DIVIDER
(
u32Clk
,
u32baudrate
);
if
(
u32Baud_Div
>
0xFFFF
)
uart
->
BAUD
=
(
UART_BAUD_MODE0
|
UART_BAUD_MODE0_DIVIDER
(
u32Clk
,
u32baudrate
));
else
uart
->
BAUD
=
(
UART_BAUD_MODE2
|
u32Baud_Div
);
}
uart
->
LINE
=
u32data_width
|
u32parity
|
u32stop_bits
;
}
/**
* @brief This function use to set Rx timeout count.
*
* @param[in] uart The base address of UART module.
* @param[in] u32TOC Rx timeout counter.
*
* @return None
*/
void
UART_SetTimeoutCnt
(
UART_T
*
uart
,
uint32_t
u32TOC
)
{
uart
->
TOUT
=
(
uart
->
TOUT
&
~
UART_TOUT_TOIC_Msk
)
|
(
u32TOC
);
uart
->
INTEN
|=
UART_INTEN_TOCNTEN_Msk
;
}
/**
* @brief The function is used to configure IrDA relative settings. It consists of TX or RX mode and baudrate.
*
* @param[in] uart The base address of UART module.
* @param[in] u32Buadrate The baudrate of UART module.
* @param[in] u32Direction The direction(transmit:1/receive:0) of UART module in IrDA mode.
*
* @return None
*/
void
UART_SelectIrDAMode
(
UART_T
*
uart
,
uint32_t
u32Buadrate
,
uint32_t
u32Direction
)
{
uint8_t
u8UartClkSrcSel
;
uint32_t
u32Clk
=
0
;
uint32_t
u32ClkDiv
=
0
;
u8UartClkSrcSel
=
(
CLK
->
CLKSEL1
&
CLK_CLKSEL1_UARTSEL_Msk
)
>>
CLK_CLKSEL1_UARTSEL_Pos
;
if
(
u8UartClkSrcSel
==
0
)
u32Clk
=
__XTAL
;
else
if
(
u8UartClkSrcSel
==
1
)
u32Clk
=
CLK_GetPLLClockFreq
();
else
if
(
u8UartClkSrcSel
>=
2
)
u32Clk
=
__HSI
;
u32ClkDiv
=
(
(
CLK
->
CLKDIV
&
CLK_CLKDIV_UARTDIV_Msk
)
>>
CLK_CLKDIV_UARTDIV_Pos
);
u32Clk
=
u32Clk
/
(
u32ClkDiv
+
1
);
uart
->
BAUD
=
UART_BAUD_MODE0
|
UART_BAUD_MODE0_DIVIDER
(
u32Clk
,
u32Buadrate
);
uart
->
IRDA
&=
~
UART_IRDA_TXINV_Msk
;
uart
->
IRDA
|=
UART_IRDA_RXINV_Msk
;
uart
->
IRDA
=
u32Direction
?
uart
->
IRDA
|
UART_IRDA_TXEN_Msk
:
uart
->
IRDA
&~
UART_IRDA_TXEN_Msk
;
uart
->
FUNSEL
=
(
0x2
<<
UART_FUNSEL_FUN_SEL_Pos
);
}
/**
* @brief The function is used to set RS485 relative setting.
*
* @param[in] uart The base address of UART module.
* @param[in] u32Mode The operation mode(NMM/AUD/AAD).
* @param[in] u32Addr The RS485 address.
*
* @return None
*/
void
UART_SelectRS485Mode
(
UART_T
*
uart
,
uint32_t
u32Mode
,
uint32_t
u32Addr
)
{
uart
->
FUNSEL
=
UART_FUNC_SEL_RS485
;
uart
->
ALTCTL
=
0
;
uart
->
ALTCTL
|=
u32Mode
|
(
u32Addr
<<
UART_ALTCTL_ADDRMV_Pos
);
}
//lmm modified for decrease code size
/
//
**
//
* @brief This function use to config UART line setting.
//
*
//
* @param[in] uart The base address of UART module.
//
* @param[in] u32baudrate The register value of baudrate of UART module.
//
* if u32baudrate = 0, UART baudrate will not change.
//
* @param[in] u32data_width The data length of UART module.
//
* @param[in] u32parity The parity setting (odd/even/none) of UART module.
//
* @param[in] u32stop_bits The stop bit length (1/1.5 bit) of UART module.
//
*
//
* @return None
//
*/
//
void UART_SetLine_Config(UART_T* uart, uint32_t u32baudrate, uint32_t u32data_width, uint32_t u32parity, uint32_t u32stop_bits)
//
{
//
uint8_t u8UartClkSrcSel;
//
uint32_t u32Clk = 0;
//
uint32_t u32ClkDiv = 0;
//
uint32_t u32Baud_Div = 0;
//
u8UartClkSrcSel = (CLK->CLKSEL1 & CLK_CLKSEL1_UARTSEL_Msk) >> CLK_CLKSEL1_UARTSEL_Pos;
//
if(u8UartClkSrcSel == 0)
//
u32Clk = __XTAL;
//
else if(u8UartClkSrcSel == 1)
//
u32Clk = CLK_GetPLLClockFreq();
//
else if(u8UartClkSrcSel >= 2)
//
u32Clk = __HSI;
//
u32ClkDiv = ( (CLK->CLKDIV & CLK_CLKDIV_UARTDIV_Msk) >> CLK_CLKDIV_UARTDIV_Pos );
//
u32Clk = u32Clk/(u32ClkDiv + 1);
//
if(u32baudrate != 0) {
//
u32Baud_Div = UART_BAUD_MODE2_DIVIDER(u32Clk, u32baudrate);
//
if(u32Baud_Div > 0xFFFF)
//
uart->BAUD = (UART_BAUD_MODE0 | UART_BAUD_MODE0_DIVIDER(u32Clk, u32baudrate));
//
else
//
uart->BAUD = (UART_BAUD_MODE2 | u32Baud_Div);
//
}
//
uart->LINE = u32data_width | u32parity | u32stop_bits;
//
}
/
//
**
//
* @brief This function use to set Rx timeout count.
//
*
//
* @param[in] uart The base address of UART module.
//
* @param[in] u32TOC Rx timeout counter.
//
*
//
* @return None
//
*/
//
void UART_SetTimeoutCnt(UART_T* uart, uint32_t u32TOC)
//
{
//
uart->TOUT = (uart->TOUT & ~UART_TOUT_TOIC_Msk)| (u32TOC);
//
uart->INTEN |= UART_INTEN_TOCNTEN_Msk;
//
}
/
//
**
//
* @brief The function is used to configure IrDA relative settings. It consists of TX or RX mode and baudrate.
//
*
//
* @param[in] uart The base address of UART module.
//
* @param[in] u32Buadrate The baudrate of UART module.
//
* @param[in] u32Direction The direction(transmit:1/receive:0) of UART module in IrDA mode.
//
*
//
* @return None
//
*/
//
void UART_SelectIrDAMode(UART_T* uart, uint32_t u32Buadrate, uint32_t u32Direction)
//
{
//
uint8_t u8UartClkSrcSel;
//
uint32_t u32Clk = 0;
//
uint32_t u32ClkDiv = 0;
//
u8UartClkSrcSel = (CLK->CLKSEL1 & CLK_CLKSEL1_UARTSEL_Msk) >> CLK_CLKSEL1_UARTSEL_Pos;
//
if(u8UartClkSrcSel == 0)
//
u32Clk = __XTAL;
//
else if(u8UartClkSrcSel == 1)
//
u32Clk = CLK_GetPLLClockFreq();
//
else if(u8UartClkSrcSel >= 2)
//
u32Clk = __HSI;
//
u32ClkDiv = ( (CLK->CLKDIV & CLK_CLKDIV_UARTDIV_Msk) >> CLK_CLKDIV_UARTDIV_Pos );
//
u32Clk = u32Clk/(u32ClkDiv + 1);
//
uart->BAUD = UART_BAUD_MODE0 | UART_BAUD_MODE0_DIVIDER(u32Clk, u32Buadrate);
//
uart->IRDA &= ~UART_IRDA_TXINV_Msk;
//
uart->IRDA |= UART_IRDA_RXINV_Msk;
//
uart->IRDA = u32Direction ? uart->IRDA | UART_IRDA_TXEN_Msk : uart->IRDA &~ UART_IRDA_TXEN_Msk;
//
uart->FUNSEL = (0x2 << UART_FUNSEL_FUN_SEL_Pos);
//
}
/
//
**
//
* @brief The function is used to set RS485 relative setting.
//
*
//
* @param[in] uart The base address of UART module.
//
* @param[in] u32Mode The operation mode(NMM/AUD/AAD).
//
* @param[in] u32Addr The RS485 address.
//
*
//
* @return None
//
*/
//
void UART_SelectRS485Mode(UART_T* uart, uint32_t u32Mode, uint32_t u32Addr)
//
{
//
uart->FUNSEL = UART_FUNC_SEL_RS485;
//
uart->ALTCTL = 0;
//
uart->ALTCTL |= u32Mode | (u32Addr << UART_ALTCTL_ADDRMV_Pos);
//
}
/**
...
...
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