Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
V
VC66_7C
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
ISUZU
VC66_7C
Commits
c4d9c18b
Commit
c4d9c18b
authored
Jan 13, 2022
by
hu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
调整蜂鸣器播放驱动,声音部分音源不对
parent
a6bafc8a
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
242 additions
and
483 deletions
+242
-483
Services_ODO_user.c
source/Application/APP/Data_ODO/Services_ODO_user.c
+2
-2
Popups.c
source/Application/Alarm/Popups.c
+16
-1
Sound_Player.c
source/Application/Sound_Alarm/Sound_Player.c
+78
-79
Sound_Source.h
source/Application/Sound_Alarm/Sound_Source.h
+27
-27
Buzzer.c
source/Driver/Buzzer/Buzzer.c
+96
-273
Buzzer.h
source/Driver/Buzzer/Buzzer.h
+20
-97
Sound_Tracks.h
source/Driver/Buzzer/Sound_Tracks.h
+1
-1
tasks.c
source/System/tasks.c
+2
-3
No files found.
source/Application/APP/Data_ODO/Services_ODO_user.c
View file @
c4d9c18b
...
@@ -50,11 +50,11 @@ void Data_User_Mileage_KL30Init(void)
...
@@ -50,11 +50,11 @@ void Data_User_Mileage_KL30Init(void)
ODOInit
.
Offset
=
TempBuf
[
2
];
ODOInit
.
Offset
=
TempBuf
[
2
];
Data_ODO_KL30_Init
(
DataODOBuf
,
&
ODOInit
,
Func
.
EEPromWrite_Cbk
);
Data_ODO_KL30_Init
(
DataODOBuf
,
&
ODOInit
,
Func
.
EEPromWrite_Cbk
);
Data_User_EEPROM_Read
(
EEPROM_BLOCK_TRIP_STAMP
,
TempBuf
+
3
,
4
);
Data_User_EEPROM_Read
(
EEPROM_BLOCK_TRIP_STAMP
,
TempBuf
+
3
,
9
);
TripInit
[
EM_TRIP_A
].
Stamp
=
TempBuf
[
3
];
TripInit
[
EM_TRIP_A
].
Stamp
=
TempBuf
[
3
];
TripInit
[
EM_TRIP_A
].
MaxValue
=
9999999u
;
TripInit
[
EM_TRIP_A
].
MaxValue
=
9999999u
;
TripInit
[
EM_TRIP_A
].
IsRestart
=
1u
;
/*1-循环 0-最大值保持*/
TripInit
[
EM_TRIP_A
].
IsRestart
=
1u
;
TripInit
[
EM_TRIP_B
].
Stamp
=
TempBuf
[
4
];
TripInit
[
EM_TRIP_B
].
Stamp
=
TempBuf
[
4
];
TripInit
[
EM_TRIP_B
].
MaxValue
=
9999999u
;
TripInit
[
EM_TRIP_B
].
MaxValue
=
9999999u
;
...
...
source/Application/Alarm/Popups.c
View file @
c4d9c18b
...
@@ -1122,6 +1122,7 @@ void Popups_Sound_Playing(uint8_t PopupSnd)
...
@@ -1122,6 +1122,7 @@ void Popups_Sound_Playing(uint8_t PopupSnd)
* Return : None
* Return : None
* onther : None
* onther : None
--------------------------------------------------------------------------*/
--------------------------------------------------------------------------*/
uint16_t
Sound_test
=
0
;
void
Popup_Alone_Sound_Server
(
void
)
void
Popup_Alone_Sound_Server
(
void
)
{
{
COMMON_PowerStatus_t
u8IG_st
;
COMMON_PowerStatus_t
u8IG_st
;
...
@@ -1152,6 +1153,7 @@ void Popup_Alone_Sound_Server(void)
...
@@ -1152,6 +1153,7 @@ void Popup_Alone_Sound_Server(void)
{
{
if
(
u8IG_st
==
COMMON_POWER_ON
)
if
(
u8IG_st
==
COMMON_POWER_ON
)
{
{
/*00 忘拔钥匙*/
/*00 忘拔钥匙*/
Sound_Delete
(
SND_Key_Notremoved
);
Sound_Delete
(
SND_Key_Notremoved
);
...
@@ -1420,6 +1422,19 @@ void Popup_Alone_Sound_Server(void)
...
@@ -1420,6 +1422,19 @@ void Popup_Alone_Sound_Server(void)
{
{
Sound_Delete
(
SND_Fuel_Saving
);
Sound_Delete
(
SND_Fuel_Saving
);
}
}
/*音源测试程序*/
// if(Sound_test&0x001) Sound_Request (SND_Key_Notremoved, 1); else Sound_Delete(SND_Key_Notremoved );
// if(Sound_test&0x002) Sound_Request (SND_Braking, 1); else Sound_Delete(SND_Braking );
// if(Sound_test&0x004) Sound_Request (SND_Air_Brake, 1); else Sound_Delete(SND_Air_Brake );
// if(Sound_test&0x008) Sound_Request (SND_BRAKE_LOCK, 1); else Sound_Delete(SND_BRAKE_LOCK );
// if(Sound_test&0x010) Sound_Request (SND_Parking_Brake, 1); else Sound_Delete(SND_Parking_Brake );
// if(Sound_test&0x020) Sound_Request (SND_Car_Dump_SPEED, 1); else Sound_Delete(SND_Car_Dump_SPEED );
// if(Sound_test&0x040) Sound_Request (SND_Temp_High, 1); else Sound_Delete(SND_Temp_High );
// if(Sound_test&0x080) Sound_Request (SND_Coolant_Low, 1); else Sound_Delete(SND_Coolant_Low );
// if(Sound_test&0x100) Sound_Request (SND_Oil_pressure_Low, 1); else Sound_Delete(SND_Oil_pressure_Low );
// if(Sound_test&0x200) Sound_Request (SND_ACC_AIR, 1); else Sound_Delete(SND_ACC_AIR );
// if(Sound_test&0x400) Sound_Request (SND_BackUP_SPEED, 1); else Sound_Delete(SND_BackUP_SPEED );
}
}
else
/*IG-OFF*/
else
/*IG-OFF*/
{
{
...
...
source/Application/Sound_Alarm/Sound_Player.c
View file @
c4d9c18b
...
@@ -5,26 +5,26 @@
...
@@ -5,26 +5,26 @@
SoundPlayCtrlStruct
SoundPlayCtrl
;
SoundPlayCtrlStruct
SoundPlayCtrl
;
void
Sound_Player_Init
(
void
)
void
Sound_Player_Init
(
void
)
{
{
SoundPlayCtrl
.
Playing
=
SND_SRC_NONE
;
//加载要播放的声音
SoundPlayCtrl
.
Playing
=
SND_SRC_NONE
;
//加载要播放的声音
SoundPlayCtrl
.
Timer
=
0
;
SoundPlayCtrl
.
Timer
=
0
;
SoundPlayCtrl
.
Cycle
=
0
;
SoundPlayCtrl
.
Cycle
=
0
;
SoundPlayCtrl
.
Status
=
SND_PLAYER_IDLE
;
SoundPlayCtrl
.
Status
=
SND_PLAYER_IDLE
;
SoundPlayCtrl
.
VolInit
=
1
;
SoundPlayCtrl
.
VolInit
=
1
;
Buzzer_
Init
();
Buzzer_
Start_Up
();
}
}
uint8_t
Sound_Play
(
uint8_t
SoundID
)
uint8_t
Sound_Play
(
uint8_t
SoundID
)
{
{
if
(
SoundPlayCtrl
.
VolInit
)
//首次播放时初始化音量
if
(
SoundPlayCtrl
.
VolInit
)
//首次播放时初始化音量
{
{
SoundPlayCtrl
.
VolInit
=
0
;
SoundPlayCtrl
.
VolInit
=
0
;
}
}
if
(
SoundID
<
SND_TOTAL_NUM
)
if
(
SoundID
<
SND_TOTAL_NUM
)
{
{
if
(
SoundPlayCtrl
.
Status
!=
SND_PLAYER_IDLE
)
//如果有声音正在播放,则返回播放失败
if
(
SoundPlayCtrl
.
Status
!=
SND_PLAYER_IDLE
)
//如果有声音正在播放,则返回播放失败
return
1
;
return
1
;
SoundPlayCtrl
.
Playing
=
SoundID
;
//加载要播放的声音
SoundPlayCtrl
.
Playing
=
SoundID
;
//加载要播放的声音
...
@@ -37,15 +37,15 @@ uint8_t Sound_Play ( uint8_t SoundID )
...
@@ -37,15 +37,15 @@ uint8_t Sound_Play ( uint8_t SoundID )
return
2
;
//返回错误状态
return
2
;
//返回错误状态
}
}
uint8_t
Sound_Stop
(
uint8_t
SoundID
)
uint8_t
Sound_Stop
(
uint8_t
SoundID
)
{
{
if
(
SoundID
<
SND_TOTAL_NUM
)
if
(
SoundID
<
SND_TOTAL_NUM
)
{
{
if
(
(
SoundPlayCtrl
.
Status
==
SND_PLAYER_IDLE
)
||
\
if
(
(
SoundPlayCtrl
.
Status
==
SND_PLAYER_IDLE
)
||
(
SoundPlayCtrl
.
Playing
!=
SoundID
)
)
//如果播放器已停止播放或正在播放的声音不是请求停止播放的声音
(
SoundPlayCtrl
.
Playing
!=
SoundID
))
//如果播放器已停止播放或正在播放的声音不是请求停止播放的声音
return
0
;
//返回停止成功
return
0
;
//返回停止成功
if
(
SoundPlayCtrl
.
Status
==
SND_PLAYER_PLAY_REQ
)
//请求停止播放的声音是刚请求播放的声音
if
(
SoundPlayCtrl
.
Status
==
SND_PLAYER_PLAY_REQ
)
//请求停止播放的声音是刚请求播放的声音
{
{
SoundPlayCtrl
.
Playing
=
SND_SRC_NONE
;
SoundPlayCtrl
.
Playing
=
SND_SRC_NONE
;
SoundPlayCtrl
.
Timer
=
0
;
SoundPlayCtrl
.
Timer
=
0
;
...
@@ -61,11 +61,11 @@ uint8_t Sound_Stop ( uint8_t SoundID )
...
@@ -61,11 +61,11 @@ uint8_t Sound_Stop ( uint8_t SoundID )
return
2
;
//返回错误状态
return
2
;
//返回错误状态
}
}
void
Sound_Clear
(
void
)
void
Sound_Clear
(
void
)
{
{
if
(
SoundPlayCtrl
.
Status
==
SND_PLAYER_IDLE
)
if
(
SoundPlayCtrl
.
Status
==
SND_PLAYER_IDLE
)
return
;
return
;
else
if
(
SoundPlayCtrl
.
Status
==
SND_PLAYER_PLAY_REQ
)
else
if
(
SoundPlayCtrl
.
Status
==
SND_PLAYER_PLAY_REQ
)
{
{
SoundPlayCtrl
.
Playing
=
SND_SRC_NONE
;
SoundPlayCtrl
.
Playing
=
SND_SRC_NONE
;
SoundPlayCtrl
.
Timer
=
0
;
SoundPlayCtrl
.
Timer
=
0
;
...
@@ -75,12 +75,12 @@ void Sound_Clear ( void )
...
@@ -75,12 +75,12 @@ void Sound_Clear ( void )
}
}
else
else
{
{
if
(
SoundPlayCtrl
.
Playing
<
SND_TOTAL_NUM
)
if
(
SoundPlayCtrl
.
Playing
<
SND_TOTAL_NUM
)
{
{
if
(
SndAttributeTable
[
SoundPlayCtrl
.
Playing
].
Mode
==
SND_MODE_SINGLE
)
if
(
SndAttributeTable
[
SoundPlayCtrl
.
Playing
].
Mode
==
SND_MODE_SINGLE
)
Buzzer_Stop_
All_Track
();
Buzzer_Stop_
Play
();
else
else
Buzzer_Stop_All_Track
()
;
;
}
}
SoundPlayCtrl
.
Playing
=
SND_SRC_NONE
;
SoundPlayCtrl
.
Playing
=
SND_SRC_NONE
;
...
@@ -90,42 +90,42 @@ void Sound_Clear ( void )
...
@@ -90,42 +90,42 @@ void Sound_Clear ( void )
}
}
}
}
uint8_t
Sound_Priority_Query
(
uint8_t
SoundID
)
uint8_t
Sound_Priority_Query
(
uint8_t
SoundID
)
{
{
if
(
SoundID
==
SND_SRC_CURRENT
)
if
(
SoundID
==
SND_SRC_CURRENT
)
{
{
if
(
SoundPlayCtrl
.
Playing
<
SND_TOTAL_NUM
)
if
(
SoundPlayCtrl
.
Playing
<
SND_TOTAL_NUM
)
return
SndAttributeTable
[
SoundPlayCtrl
.
Playing
].
Priority
;
return
SndAttributeTable
[
SoundPlayCtrl
.
Playing
].
Priority
;
else
else
return
0xFF
;
return
0xFF
;
}
}
else
if
(
SoundID
<
SND_TOTAL_NUM
)
else
if
(
SoundID
<
SND_TOTAL_NUM
)
return
SndAttributeTable
[
SoundID
].
Priority
;
return
SndAttributeTable
[
SoundID
].
Priority
;
else
else
return
0xFF
;
return
0xFF
;
}
}
//10ms
//
10ms
void
Sound_Play_Service
(
void
)
void
Sound_Play_Service
(
void
)
{
{
if
(
SoundPlayCtrl
.
Status
==
SND_PLAYER_IDLE
)
if
(
SoundPlayCtrl
.
Status
==
SND_PLAYER_IDLE
)
return
;
return
;
if
(
SoundPlayCtrl
.
Timer
>=
10
)
if
(
SoundPlayCtrl
.
Timer
>=
10
)
SoundPlayCtrl
.
Timer
-=
10
;
SoundPlayCtrl
.
Timer
-=
10
;
else
if
(
SoundPlayCtrl
.
Timer
>
0
)
else
if
(
SoundPlayCtrl
.
Timer
>
0
)
SoundPlayCtrl
.
Timer
=
0
;
SoundPlayCtrl
.
Timer
=
0
;
if
(
(
SoundPlayCtrl
.
Status
==
SND_PLAYER_PLAYING
)
||
(
SoundPlayCtrl
.
Status
==
SND_PLAYER_PLAY_REQ
)
)
if
(
(
SoundPlayCtrl
.
Status
==
SND_PLAYER_PLAYING
)
||
(
SoundPlayCtrl
.
Status
==
SND_PLAYER_PLAY_REQ
)
)
{
{
if
(
SoundPlayCtrl
.
Timer
==
0
)
if
(
SoundPlayCtrl
.
Timer
==
0
)
{
{
if
(
SoundPlayCtrl
.
Cycle
==
0
)
if
(
SoundPlayCtrl
.
Cycle
==
0
)
{
{
if
(
SoundPlayCtrl
.
Playing
<
SND_TOTAL_NUM
)
if
(
SoundPlayCtrl
.
Playing
<
SND_TOTAL_NUM
)
{
{
if
(
SndAttributeTable
[
SoundPlayCtrl
.
Playing
].
Mode
!=
SND_MODE_SINGLE
)
if
(
SndAttributeTable
[
SoundPlayCtrl
.
Playing
].
Mode
!=
SND_MODE_SINGLE
)
Buzzer_Stop_
All_Track
();
Buzzer_Stop_
Play
();
}
}
SoundPlayCtrl
.
Playing
=
SND_SRC_NONE
;
SoundPlayCtrl
.
Playing
=
SND_SRC_NONE
;
...
@@ -133,20 +133,20 @@ void Sound_Play_Service ( void )
...
@@ -133,20 +133,20 @@ void Sound_Play_Service ( void )
}
}
else
else
{
{
if
(
SoundPlayCtrl
.
Playing
<
SND_TOTAL_NUM
)
if
(
SoundPlayCtrl
.
Playing
<
SND_TOTAL_NUM
)
{
{
if
(
SndAttributeTable
[
SoundPlayCtrl
.
Playing
].
Mode
==
SND_MODE_SINGLE
)
if
(
SndAttributeTable
[
SoundPlayCtrl
.
Playing
].
Mode
==
SND_MODE_SINGLE
)
Buzzer_Play_
Sound
(
SndAttributeTable
[
SoundPlayCtrl
.
Playing
].
Index
);
Buzzer_Play_
Track
(
SndAttributeTable
[
SoundPlayCtrl
.
Playing
].
Index
);
else
else
{
{
if
(
SoundPlayCtrl
.
Status
==
SND_PLAYER_PLAY_REQ
)
if
(
SoundPlayCtrl
.
Status
==
SND_PLAYER_PLAY_REQ
)
Buzzer_
Play_Sound
(
SndAttributeTable
[
SoundPlayCtrl
.
Playing
].
Index
);
Buzzer_
Repeat_Play_Track
(
SndAttributeTable
[
SoundPlayCtrl
.
Playing
].
Index
);
}
}
SoundPlayCtrl
.
Timer
=
SndAttributeTable
[
SoundPlayCtrl
.
Playing
].
Period
;
SoundPlayCtrl
.
Timer
=
SndAttributeTable
[
SoundPlayCtrl
.
Playing
].
Period
;
SoundPlayCtrl
.
Status
=
SND_PLAYER_PLAYING
;
SoundPlayCtrl
.
Status
=
SND_PLAYER_PLAYING
;
if
(
SoundPlayCtrl
.
Cycle
!=
SND_CYCLE_NONSTOP
)
if
(
SoundPlayCtrl
.
Cycle
!=
SND_CYCLE_NONSTOP
)
SoundPlayCtrl
.
Cycle
--
;
SoundPlayCtrl
.
Cycle
--
;
}
}
else
else
...
@@ -160,18 +160,18 @@ void Sound_Play_Service ( void )
...
@@ -160,18 +160,18 @@ void Sound_Play_Service ( void )
}
}
else
//当前声音被请求停止播放
else
//当前声音被请求停止播放
{
{
if
(
SoundPlayCtrl
.
Playing
<
SND_TOTAL_NUM
)
if
(
SoundPlayCtrl
.
Playing
<
SND_TOTAL_NUM
)
{
{
if
(
SndAttributeTable
[
SoundPlayCtrl
.
Playing
].
Mode
!=
SND_MODE_SINGLE
)
if
(
SndAttributeTable
[
SoundPlayCtrl
.
Playing
].
Mode
!=
SND_MODE_SINGLE
)
{
{
Buzzer_Stop_
All_Track
();
Buzzer_Stop_
Play
();
SoundPlayCtrl
.
Playing
=
SND_SRC_NONE
;
SoundPlayCtrl
.
Playing
=
SND_SRC_NONE
;
SoundPlayCtrl
.
Cycle
=
0
;
SoundPlayCtrl
.
Cycle
=
0
;
SoundPlayCtrl
.
Status
=
SND_PLAYER_IDLE
;
SoundPlayCtrl
.
Status
=
SND_PLAYER_IDLE
;
}
}
else
else
{
{
if
(
SoundPlayCtrl
.
Timer
==
0
)
if
(
SoundPlayCtrl
.
Timer
==
0
)
{
{
SoundPlayCtrl
.
Playing
=
SND_SRC_NONE
;
SoundPlayCtrl
.
Playing
=
SND_SRC_NONE
;
SoundPlayCtrl
.
Cycle
=
0
;
SoundPlayCtrl
.
Cycle
=
0
;
...
@@ -181,4 +181,3 @@ void Sound_Play_Service ( void )
...
@@ -181,4 +181,3 @@ void Sound_Play_Service ( void )
}
}
}
}
}
}
source/Application/Sound_Alarm/Sound_Source.h
View file @
c4d9c18b
...
@@ -66,7 +66,7 @@ typedef enum
...
@@ -66,7 +66,7 @@ typedef enum
******************************************************************************/
******************************************************************************/
typedef
struct
typedef
struct
{
{
BUZZER_Track_Index_en_t
Index
;
uint8_t
Index
;
uint8_t
Priority
;
uint8_t
Priority
;
uint8_t
Cycle
;
uint8_t
Cycle
;
uint8_t
Mode
;
uint8_t
Mode
;
...
@@ -81,32 +81,32 @@ static const SndAttributeStruct SndAttributeTable[SND_SRC_INDEX_MAX] =
...
@@ -81,32 +81,32 @@ static const SndAttributeStruct SndAttributeTable[SND_SRC_INDEX_MAX] =
/*================================================================================================
/*================================================================================================
音源名称 | 音源序号 | 优先级 | 循环次数 | 播放模式 | 周期(ms)
音源名称 | 音源序号 | 优先级 | 循环次数 | 播放模式 | 周期(ms)
------------------------------------------------------------------------------------------------*/
------------------------------------------------------------------------------------------------*/
{
/*00 SND_SRC_Key_Notremoved */
BUZZER_Track_Index_Tic
,
1
,
1
,
SND_MODE_SINGLE
,
1000U
,
},
/*00 1HZ 忘拔钥匙 */
{
/*00 SND_SRC_Key_Notremoved */
0x01u
,
1
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
1000U
,
},
/*00 1HZ 忘拔钥匙 */
{
/*01 SND_SRC_Braking */
BUZZER_Track_Index_Tic
,
2
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*01 连续 制动 */
{
/*01 SND_SRC_Braking */
0x02u
,
2
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
100U
,
},
/*01 连续 制动 */
{
/*02 SND_SRC_Air_Brake */
BUZZER_Track_Index_Tic
,
3
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*02 连续 制动气压 */
{
/*02 SND_SRC_Air_Brake */
0x03u
,
3
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
100U
,
},
/*02 连续 制动气压 */
{
/*03 SND_SRC_BRAKE_LOCK */
BUZZER_Track_Index_Tic
,
4
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*03 BRAKE LOCK */
{
/*03 SND_SRC_BRAKE_LOCK */
0x04u
,
4
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
100U
,
},
/*03 BRAKE LOCK */
{
/*04 SND_SRC_Parking_Brake */
BUZZER_Track_Index_Tic
,
5
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*04 停车制动忘记复位*/
{
/*04 SND_SRC_Parking_Brake */
0x05u
,
5
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
100U
,
},
/*04 停车制动忘记复位*/
{
/*05 SND_SRC_Car_Dump_SPEED */
BUZZER_Track_Index_Tic
,
6
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*05 车厢报警自卸蜂鸣器*/
{
/*05 SND_SRC_Car_Dump_SPEED */
0x06u
,
6
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
100U
,
},
/*05 车厢报警自卸蜂鸣器*/
{
/*06 SND_SRC_Temp_High */
BUZZER_Track_Index_Tic
,
7
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*06 连续 水温过热 */
{
/*06 SND_SRC_Temp_High */
0x07u
,
7
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
100U
,
},
/*06 连续 水温过热 */
{
/*07 SND_SRC_Coolant_Low */
BUZZER_Track_Index_Tic
,
8
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*07 连续 冷却水量 */
{
/*07 SND_SRC_Coolant_Low */
0x08u
,
8
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
100U
,
},
/*07 连续 冷却水量 */
{
/*08 SND_SRC_Oil_pressure_Low*/
BUZZER_Track_Index_Tic
,
9
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*08 -(预留:油压)*/
{
/*08 SND_SRC_Oil_pressure_Low*/
0x09u
,
9
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
100U
,
},
/*08 -(预留:油压)*/
{
/*09 SND_SRC_ACC_AIR */
BUZZER_Track_Index_Tic
,
10
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*09 连续 ACC AIR */
{
/*09 SND_SRC_ACC_AIR */
0x0au
,
10
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
100U
,
},
/*09 连续 ACC AIR */
{
/*10 SND_SRC_BackUP_SPEED */
BUZZER_Track_Index_Tic
,
11
,
1
,
SND_MODE_SINGLE
,
1000U
,
},
/*10 1HZ 倒车警报 */
{
/*10 SND_SRC_BackUP_SPEED */
0x0bu
,
11
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
1000U
,
},
/*10 1HZ 倒车警报 */
{
/*11 SND_SRC_DS_SPEED */
BUZZER_Track_Index_Tic
,
12
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*11 DS 警报 */
{
/*11 SND_SRC_DS_SPEED */
0x00u
,
12
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
100U
,
},
/*11 DS 警报 */
{
/*12 SND_SRC_ROWS_SPEED */
BUZZER_Track_Index_Tic
,
13
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*12 ROWS 警报 */
{
/*12 SND_SRC_ROWS_SPEED */
0x00u
,
13
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
100U
,
},
/*12 ROWS 警报 */
{
/*13 SND_SRC_Roll_SPEED */
BUZZER_Track_Index_Tic
,
14
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*13 Roll 警报 */
{
/*13 SND_SRC_Roll_SPEED */
0x00u
,
14
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
100U
,
},
/*13 Roll 警报 */
{
/*14 SND_SRC_EVSC_SPEED */
BUZZER_Track_Index_Tic
,
15
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*14 4HZ EVSC */
{
/*14 SND_SRC_EVSC_SPEED */
0x00u
,
15
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
100U
,
},
/*14 4HZ EVSC */
{
/*15 SND_SRC_DPD_SPEED */
BUZZER_Track_Index_Tic
,
16
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*15 1HZ 3 DPD 手动再生 */
{
/*15 SND_SRC_DPD_SPEED */
0x00u
,
16
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
100U
,
},
/*15 1HZ 3 DPD 手动再生 */
{
/*15 SND_SRC_DPD_SPEED */
BUZZER_Track_Index_Tic
,
16
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*15 2HZ 3 DPD 手动再生 */
{
/*15 SND_SRC_DPD_SPEED */
0x00u
,
16
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
100U
,
},
/*15 2HZ 3 DPD 手动再生 */
{
/*15 SND_SRC_DPD_SPEED */
BUZZER_Track_Index_Tic
,
16
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*15 4HZ 3 DPD 手动再生 */
{
/*15 SND_SRC_DPD_SPEED */
0x00u
,
16
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
100U
,
},
/*15 4HZ 3 DPD 手动再生 */
{
/*16 SND_SRC_NEES */
BUZZER_Track_Index_Tic
,
17
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*16 NEES */
{
/*16 SND_SRC_NEES */
0x00u
,
17
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
100U
,
},
/*16 NEES */
{
/*17 SND_SRC_ECO_STOP */
BUZZER_Track_Index_Tic
,
18
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*17 eco stop */
{
/*17 SND_SRC_ECO_STOP */
0x00u
,
18
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
100U
,
},
/*17 eco stop */
{
/*18 SND_SRC_Cyclone_High */
BUZZER_Track_Index_Tic
,
19
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*18 4HZ 气悬车高调整 */
{
/*18 SND_SRC_Cyclone_High */
0x00u
,
19
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
100U
,
},
/*18 4HZ 气悬车高调整 */
{
/*18 SND_SRC_Cyclone_High */
BUZZER_Track_Index_Tic
,
19
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*18 0.5HZ 气悬车高调整 */
{
/*18 SND_SRC_Cyclone_High */
0x00u
,
19
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
100U
,
},
/*18 0.5HZ 气悬车高调整 */
{
/*19 SND_SRC_SEATBELT_SPEED */
BUZZER_Track_Index_Tic
,
20
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*19 2HZ 安全带 */
{
/*19 SND_SRC_SEATBELT_SPEED */
0x00u
,
20
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
100U
,
},
/*19 2HZ 安全带 */
{
/*20 SND_SRC_Fuel_Saving */
BUZZER_Track_Index_Tic
,
21
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*20 1HZ省油耗建议 */
{
/*20 SND_SRC_Fuel_Saving */
0x00u
,
21
,
SND_CYCLE_NONSTOP
,
SND_MODE_SINGLE
,
100U
,
},
/*20 1HZ省油耗建议 */
{
/*21 SND_SRC_TICK */
0
000
u
,
22
,
1
,
SND_MODE_SINGLE
,
100U
,
},
{
/*21 SND_SRC_TICK */
0
x05
u
,
22
,
1
,
SND_MODE_SINGLE
,
100U
,
},
{
/*22 SND_SRC_TOCK */
0
001
u
,
23
,
1
,
SND_MODE_SINGLE
,
100U
,
},
{
/*22 SND_SRC_TOCK */
0
x06
u
,
23
,
1
,
SND_MODE_SINGLE
,
100U
,
},
/*==============================================================================================*/
/*==============================================================================================*/
};
};
...
...
source/Driver/Buzzer/Buzzer.c
View file @
c4d9c18b
...
@@ -10,278 +10,117 @@
...
@@ -10,278 +10,117 @@
#include "TimerB.h"
#include "TimerB.h"
#include "Sound_Tracks.h"
#define BUZZER_PWM_CHANNEL TIMERB_0_CH11
#define BUZZER_PWM_CHANNEL TIMERB_0_CH11
/******************************************************************************
单音列表
******************************************************************************/
const
SingleSoundStruct
SingleSound
[]
=
{
{
2381
,
210
,
23
,
0
},
//Tic
{
2174
,
230
,
41
,
0
},
//Tac
{
200
,
600
,
7812
,
1500
},
//Dong
{
75
,
380
,
7844
,
1000
},
//Pling
{
96
,
180
,
5755
,
1000
},
//Plong
{
127
,
640
,
1094
,
1094
},
//Park Beep
};
/******************************************************************************
BuzzerPlayCtrlStruct
BuzzerPlayCtrl
;
复合音列表
******************************************************************************/
const
ComplexSoundStruct
ComplexSound
[]
=
{
{{
BUZZER_SINGLE_SOUND_TIC
},
1
},
//Tic
{{
BUZZER_SINGLE_SOUND_TAC
},
1
},
//Tac
{{
BUZZER_SINGLE_SOUND_DONG
},
1
},
//Dong
{{
BUZZER_SINGLE_SOUND_PLING
},
1
},
//Pling
{{
BUZZER_SINGLE_SOUND_PLONG
},
1
},
//Plong
{{
BUZZER_SINGLE_SOUND_PARK_BEEP
},
1
},
//Park Beep
{{
BUZZER_SINGLE_SOUND_PLING
,
BUZZER_SINGLE_SOUND_PLONG
},
2
},
//Pling-Plong
};
/******************************************************************************
/******************************************************************************
全局变量f
函数名:Buzzer_Start_Up
******************************************************************************/
功 能:启动并初始化蜂鸣器
uint8_t
BuzzerSoundPlayStat
;
蜂鸣器PWM使用CLKSA/CLKSB时钟源,推荐的时钟源频率为50kHz~100kHz
uint8_t
BuzzerSoundUpdate
;
参 数:无
uint8_t
*
pBuzzerSoundID
;
uint8_t
BuzzerSoundCnt
;
uint16_t
BuzzerPrechargeTimer
;
uint16_t
BuzzerSoundPlayTime
;
uint16_t
BuzzerSoundFadeOutTime
;
TrackInfoStruct
BuzTrack
[
BUZZER_TRACK_CNT
];
/******************************************************************************
函数名:Buzzer_Track_Play
功 能:蜂鸣器播放某一音轨
如果同一时间内有两条或多条音轨同时被播放,只有音轨编号较大的音轨将被播放
出来
参 数:TrackID :音轨编号
返回值:无
返回值:无
******************************************************************************/
******************************************************************************/
void
Buzzer_
Track_Play
(
uint8_t
TrackID
)
void
Buzzer_
Start_Up
(
void
)
{
{
Buz
Track
[
TrackID
].
RepeatTimer
=
0
;
Buz
zerPlayCtrl
.
Mode
=
BUZZER_MODE_IDLE
;
if
(
BuzTrack
[
TrackID
].
RepeatNum
==
0
)
BuzzerPlayCtrl
.
Track
=
0
;
BuzTrack
[
TrackID
].
Mode
=
BUZZER_SOUND_PLAY_NONSTOP
;
BuzzerPlayCtrl
.
Note
=
0
;
else
BuzzerPlayCtrl
.
Timer
=
0
;
BuzTrack
[
TrackID
].
Mode
=
BUZZER_SOUND_PLAY_REPEAT
;
BuzzerPlayCtrl
.
Fade
=
0
;
}
/******************************************************************************
函数名:Buzzer_Track_Pause
功 能:蜂鸣器暂停播放某一音轨
参 数:TrackID :音轨编号
返回值:无
******************************************************************************/
void
Buzzer_Track_Pause
(
uint8_t
TrackID
)
{
BuzTrack
[
TrackID
].
Mode
=
BUZZER_SOUND_PLAY_IDLE
;
}
/******************************************************************************
BUZZER_CTRL
=
0
;
函数名:Buzzer_Track_Pause
TimerB_PWM_Channel_Stop
(
BUZZER_PWM_CHANNEL
);
功 能:蜂鸣器停止播放某一音轨
TimerB_PWM_Channel_Init
(
BUZZER_PWM_CHANNEL
,
TIMERB_CLOCK_0
,
TIMERB_HIGH
);
参 数:TrackID :音轨编号
返回值:无
******************************************************************************/
void
Buzzer_Track_Stop
(
uint8_t
TrackID
)
{
BuzTrack
[
TrackID
].
Mode
=
BUZZER_SOUND_PLAY_IDLE
;
BuzTrack
[
TrackID
].
RepeatCnt
=
BuzTrack
[
TrackID
].
RepeatNum
;
}
}
/******************************************************************************
/******************************************************************************
函数名:Buzzer_S
top_All_Track
函数名:Buzzer_S
hutdown
功 能:
停止播放所有音轨
功 能:
关闭蜂鸣器
参 数:无
参 数:无
返回值:无
返回值:无
******************************************************************************/
******************************************************************************/
void
Buzzer_S
top_All_Track
(
void
)
void
Buzzer_S
hutdown
(
void
)
{
{
uint8_t
i
;
BuzzerPlayCtrl
.
Mode
=
BUZZER_MODE_IDLE
;
for
(
i
=
0
;
i
<
BUZZER_TRACK_CNT
;
i
++
)
BuzzerPlayCtrl
.
Track
=
0
;
{
BuzzerPlayCtrl
.
Note
=
0
;
BuzTrack
[
i
].
Mode
=
BUZZER_SOUND_PLAY_IDLE
;
BuzzerPlayCtrl
.
Timer
=
0
;
BuzTrack
[
i
].
RepeatCnt
=
BuzTrack
[
i
].
RepeatNum
;
BuzzerPlayCtrl
.
Fade
=
0
;
}
}
/******************************************************************************
BUZZER_CTRL
=
0
;
函数名:Buzzer_Get_Track_Status
TimerB_PWM_Channel_Stop
(
BUZZER_PWM_CHANNEL
);
功 能:获取蜂鸣器某一音轨的状态
参 数:TrackID :音轨编号
返回值:0 - 空闲 1 - 播放中
******************************************************************************/
uint8_t
Buzzer_Get_Track_Status
(
uint8_t
TrackID
)
{
if
(
BuzTrack
[
TrackID
].
Mode
==
BUZZER_SOUND_PLAY_IDLE
)
return
0
;
else
return
1
;
}
}
/******************************************************************************
/******************************************************************************
函数名:Buzzer_
Get_All_Track_Status
函数名:Buzzer_
Play_Track
功 能:
获取蜂鸣器全部音轨的状态
功 能:
单次播放指定音轨
参 数:
无
参 数:
TrackID - 音轨编号
返回值:
0 - 空闲 1 - 有某一音轨播放中
返回值:
无
******************************************************************************/
******************************************************************************/
uint8_t
Buzzer_Get_All_Track_Status
(
void
)
void
Buzzer_Play_Track
(
uint8_t
TrackID
)
{
{
uint8_t
i
;
if
(
BuzzerPlayCtrl
.
Mode
)
i
=
BUZZER_TRACK_CNT
;
return
;
while
(
i
)
if
(
TrackID
>=
SND_TRACK_TOTAL_NUM
)
{
return
;
i
--
;
if
(
BuzTrack
[
i
].
Mode
!=
BUZZER_SOUND_PLAY_IDLE
)
BUZZER_CTRL
=
1
;
return
1
;
}
return
0
;
BuzzerPlayCtrl
.
Track
=
TrackID
;
}
BuzzerPlayCtrl
.
Note
=
0
;
BuzzerPlayCtrl
.
Timer
=
(
uint16_t
)
SndTracks
[
TrackID
].
PreCharge
*
20
;
BuzzerPlayCtrl
.
Fade
=
0
;
/******************************************************************************
BuzzerPlayCtrl
.
Mode
=
BUZZER_MODE_SINGLE
;
函数名:Buzzer_Get_Track_Remaining_Repeat_Num
功 能:获取蜂鸣器某一音轨的剩余重复次数
参 数:TrackID :音轨编号
返回值:当返回值 大于0 时表示剩余的重复次数
当返回值 等于0 时 且 该音轨正在播放中 表示当前音轨处于不停的播放状态
******************************************************************************/
uint8_t
Buzzer_Get_Track_Remaining_Repeat_Num
(
uint8_t
TrackID
)
{
return
BuzTrack
[
TrackID
].
RepeatCnt
;
}
}
/******************************************************************************
/******************************************************************************
函数名:Buzzer_Set_Track_Remaining_Repeat_Num
函数名:Buzzer_Play_Track
功 能:重新设定蜂鸣器某一音轨的剩余重复次数
功 能:循环播放指定音轨
参 数:TrackID :音轨编号
参 数:TrackID - 音轨编号
RepeatNum :重复次数
返回值:无
返回值:无
******************************************************************************/
******************************************************************************/
void
Buzzer_Set_Track_Remaining_Repeat_Num
(
uint8_t
TrackID
,
uint8_t
RepeatNum
)
void
Buzzer_Repeat_Play_Track
(
uint8_t
TrackID
)
{
BuzTrack
[
TrackID
].
RepeatCnt
=
RepeatNum
;
}
/******************************************************************************
函数名:Buzzer_Track_Init
功 能:蜂鸣器单音连续播放
参 数:TrackID :音轨编号,编号数越大,优先级越高
SoundID :播放的声音的ID
RepeatNum :重复播放次数,0表示不停的播放直到调用停止播放函数为止
RepeatCycle:重复播放周期,周期 = RepeatCycle * 20ms
返回值:无
******************************************************************************/
void
Buzzer_Track_Init
(
uint8_t
TrackID
,
uint8_t
SoundID
,
uint8_t
RepeatNum
,
uint8_t
RepeatCycle
)
{
BuzTrack
[
TrackID
].
Mode
=
BUZZER_SOUND_PLAY_IDLE
;
BuzTrack
[
TrackID
].
SoundID
=
SoundID
;
BuzTrack
[
TrackID
].
RepeatNum
=
RepeatNum
;
BuzTrack
[
TrackID
].
RepeatCnt
=
RepeatNum
;
BuzTrack
[
TrackID
].
RepeatCycle
=
RepeatCycle
;
}
/******************************************************************************
函数名:Buzzer_Track_Play_Service
功 能:蜂鸣器音轨播放服务函数,用于蜂鸣器播放音轨的后台控制
参 数:无
返回值:无
******************************************************************************
注 意:该服务函数必须每20ms被调用一次
******************************************************************************/
void
Buzzer_Track_Play_Service
(
void
)
{
{
uint8_t
i
;
if
(
BuzzerPlayCtrl
.
Mode
)
i
=
BUZZER_TRACK_CNT
;
return
;
while
(
i
)
{
i
--
;
if
(
BuzTrack
[
i
].
Mode
!=
BUZZER_SOUND_PLAY_IDLE
)
{
if
(
BuzTrack
[
i
].
RepeatTimer
==
0
)
{
Buzzer_Play_Sound
(
BuzTrack
[
i
].
SoundID
);
BuzTrack
[
i
].
RepeatTimer
=
BuzTrack
[
i
].
RepeatCycle
;
if
(
BuzTrack
[
i
].
Mode
==
BUZZER_SOUND_PLAY_REPEAT
)
{
BuzTrack
[
i
].
RepeatCnt
--
;
if
(
BuzTrack
[
i
].
RepeatCnt
==
0
)
{
BuzTrack
[
i
].
Mode
=
BUZZER_SOUND_PLAY_IDLE
;
BuzTrack
[
i
].
RepeatCnt
=
BuzTrack
[
i
].
RepeatNum
;
}
}
}
else
BuzTrack
[
i
].
RepeatTimer
--
;
if
(
TrackID
>=
SND_TRACK_TOTAL_NUM
)
return
;
return
;
}
}
}
/******************************************************************************
BUZZER_CTRL
=
1
;
函数名:Buzzer_Play_Sound
功 能:控制蜂鸣器播放一个复合音
BuzzerPlayCtrl
.
Track
=
TrackID
;
参 数:播放的声音的ID
BuzzerPlayCtrl
.
Note
=
0
;
返回值:无
BuzzerPlayCtrl
.
Timer
=
(
uint16_t
)
SndTracks
[
TrackID
].
PreCharge
*
20
;
******************************************************************************/
BuzzerPlayCtrl
.
Fade
=
0
;
void
Buzzer_Play_Sound
(
uint8_t
SoundID
)
{
if
(
BuzzerSoundPlayStat
!=
0
)
//(如果当前有声音在播放)打断当前声音播放
{
TimerB_PWM_Channel_Stop
(
BUZZER_PWM_CHANNEL
);
LINE_BUZZER
=
1
;
BuzzerSoundPlayStat
=
0
;
BuzzerPrechargeTimer
=
640
;
//500; //这时电容可能未充满电,需要一段预充电时间
}
else
BuzzerPrechargeTimer
=
0
;
//首次播放不需要预充电
BuzzerSoundUpdate
=
1
;
BuzzerPlayCtrl
.
Mode
=
BUZZER_MODE_LOOP
;
pBuzzerSoundID
=
(
uint8_t
*
)
ComplexSound
[
SoundID
].
SoundTable
;
BuzzerSoundCnt
=
ComplexSound
[
SoundID
].
SoundCnt
;
//播放声音
BuzzerSoundPlayStat
=
1
;
}
}
/******************************************************************************
/******************************************************************************
函数名:Buzzer_
Init
函数名:Buzzer_
Stop_Play
功 能:
蜂鸣器播放初始化程序
功 能:
停止播放音轨
参 数:无
参 数:无
返回值:无
返回值:无
******************************************************************************/
******************************************************************************/
void
Buzzer_Stop_Play
(
void
)
void
Buzzer_Init
(
void
)
{
{
LINE_BUZZER
=
0
;
BuzzerPlayCtrl
.
Mode
=
BUZZER_MODE_IDLE
;
TimerB_PWM_Channel_Stop
(
BUZZER_PWM_CHANNEL
);
TimerB_PWM_Channel_Init
(
BUZZER_PWM_CHANNEL
,
TIMERB_CLOCK_0
,
TIMERB_HIGH
);
BuzzerSoundPlayStat
=
0
;
}
BuzzerPlayCtrl
.
Track
=
0
;
/******************************************************************************
BuzzerPlayCtrl
.
Note
=
0
;
函数名:Buzzer_Shutdown
BuzzerPlayCtrl
.
Timer
=
0
;
功 能:关闭蜂鸣器
BuzzerPlayCtrl
.
Fade
=
0
;
参 数:无
返回值:无
BUZZER_CTRL
=
0
;
******************************************************************************/
void
Buzzer_Shutdown
(
void
)
{
LINE_BUZZER
=
0
;
TimerB_PWM_Channel_Stop
(
BUZZER_PWM_CHANNEL
);
TimerB_PWM_Channel_Stop
(
BUZZER_PWM_CHANNEL
);
BuzzerSoundPlayStat
=
0
;
}
}
/******************************************************************************
/******************************************************************************
...
@@ -290,63 +129,47 @@ void Buzzer_Shutdown ( void )
...
@@ -290,63 +129,47 @@ void Buzzer_Shutdown ( void )
参 数:无
参 数:无
返回值:无
返回值:无
******************************************************************************
******************************************************************************
注 意:该服务函数必须嵌入到
64
us定时中断内
注 意:该服务函数必须嵌入到
50
us定时中断内
******************************************************************************/
******************************************************************************/
void
Buzzer_Play_ISR
(
void
)
void
Buzzer_Play_ISR
(
void
)
{
{
if
(
BuzzerSoundPlayStat
)
if
(
BuzzerPlayCtrl
.
Mode
)
{
{
if
(
BuzzerPrechargeTimer
)
if
(
BuzzerPlayCtrl
.
Timer
)
BuzzerPrechargeTimer
--
;
BuzzerPlayCtrl
.
Timer
--
;
else
if
(
BuzzerPlayCtrl
.
Timer
==
0
)
{
{
if
(
BuzzerSoundUpdate
)
if
(
BuzzerPlayCtrl
.
Note
<
SndTracks
[
BuzzerPlayCtrl
.
Track
].
NoteNum
)
{
{
TimerB_PWM_Channel_Fre_Set
(
BUZZER_PWM_CHANNEL
,
SingleSound
[
*
pBuzzerSoundID
].
Freq
,
SingleSound
[
*
pBuzzerSoundID
].
Duty
);
BUZZER_CTRL
=
1
;
//TimerB_PWM_Channel_Duty_Set(BUZZER_PWM_CHANNEL, SingleSound[*pBuzzerSoundID].Duty);
if
(
SndTracks
[
BuzzerPlayCtrl
.
Track
].
Note
[
BuzzerPlayCtrl
.
Note
].
Freq
)
{
TimerB_PWM_Channel_Fre_Set
(
BUZZER_PWM_CHANNEL
,
SndTracks
[
BuzzerPlayCtrl
.
Track
].
Note
[
BuzzerPlayCtrl
.
Note
].
Freq
,
SndTracks
[
BuzzerPlayCtrl
.
Track
].
Note
[
BuzzerPlayCtrl
.
Note
].
Duty
);
// TimerB_PWM_Channel_Duty_Set(BUZZER_PWM_CHANNEL, SndTracks[BuzzerPlayCtrl.Track].Note[BuzzerPlayCtrl.Note].Duty);
TimerB_PWM_Channel_Start
(
BUZZER_PWM_CHANNEL
);
TimerB_PWM_Channel_Start
(
BUZZER_PWM_CHANNEL
);
BuzzerSoundPlayTime
=
SingleSound
[
*
pBuzzerSoundID
].
PlayTime
;
BuzzerSoundFadeOutTime
=
SingleSound
[
*
pBuzzerSoundID
].
FadeOutTime
;
BuzzerSoundUpdate
=
0
;
}
}
else
TimerB_PWM_Channel_Stop
(
BUZZER_PWM_CHANNEL
);
BuzzerSoundPlayTime
--
;
BuzzerPlayCtrl
.
Timer
=
SndTracks
[
BuzzerPlayCtrl
.
Track
].
Note
[
BuzzerPlayCtrl
.
Note
].
Interval
*
20
;
BuzzerPlayCtrl
.
Fade
=
SndTracks
[
BuzzerPlayCtrl
.
Track
].
Note
[
BuzzerPlayCtrl
.
Note
].
Fade
*
20
;
if
(
BuzzerSoundPlayTime
<
BuzzerSoundFadeOutTime
)
BuzzerPlayCtrl
.
Note
++
;
LINE_BUZZER
=
0
;
}
else
if
(
BuzzerSoundPlayTime
==
0
)
{
{
LINE_BUZZER
=
1
;
//重新对蜂鸣器电容充电
if
(
BuzzerPlayCtrl
.
Mode
==
BUZZER_MODE_LOOP
)
TimerB_PWM_Channel_Stop
(
BUZZER_PWM_CHANNEL
);
//关闭蜂鸣器频率输出
BuzzerPlayCtrl
.
Note
=
0
;
BuzzerSoundCnt
--
;
else
if
(
BuzzerSoundCnt
)
{
{
B
uzzerPrechargeTimer
=
640
;
//500; //增加预充电时间32ms
B
UZZER_CTRL
=
0
;
BuzzerSoundUpdate
=
1
;
TimerB_PWM_Channel_Stop
(
BUZZER_PWM_CHANNEL
)
;
pBuzzerSoundID
++
;
BuzzerPlayCtrl
.
Mode
=
BUZZER_MODE_IDLE
;
}
}
else
BuzzerSoundPlayStat
=
0
;
}
}
}
}
else
if
(
BuzzerPlayCtrl
.
Timer
<
BuzzerPlayCtrl
.
Fade
)
BUZZER_CTRL
=
0
;
}
}
}
}
\ No newline at end of file
void
Warning_Sound_Init
(
void
)
{
Buzzer_Track_Init
(
0
,
BUZZER_SOUND_TIC
,
1
,
25
);
// Track0 Tic x1 @500ms 转向灯上升沿
Buzzer_Track_Init
(
1
,
BUZZER_SOUND_TAC
,
1
,
25
);
// Track1 Tac x1 @500ms 转向灯下降沿
Buzzer_Track_Init
(
2
,
BUZZER_SOUND_PLING
,
120
,
48
);
// Track2 Pling x120 @1000ms 安全带
Buzzer_Track_Init
(
3
,
BUZZER_SOUND_PLING
,
5
,
48
);
// Track3 Pling x∞ @1000ms 超速
Buzzer_Track_Init
(
4
,
BUZZER_SOUND_DONG
,
60
,
48
);
// Track4 Dong x60 @1000ms 门开
Buzzer_Track_Init
(
5
,
BUZZER_SOUND_DONG
,
60
,
48
);
// Track5 Dong x60 @1000ms 手刹
Buzzer_Track_Init
(
6
,
BUZZER_SOUND_DONG
,
0
,
48
);
// Track6 Dong x∞ @1000ms 小灯未关
Buzzer_Track_Init
(
7
,
BUZZER_SOUND_PLING_PLONG
,
3
,
50
);
// Track7 Pling-Plong x3 @1900ms 通用
Buzzer_Track_Init
(
8
,
BUZZER_SOUND_DONG
,
3
,
50
);
// Track8 Dong x3 @1000ms 通用
Buzzer_Track_Init
(
9
,
BUZZER_SOUND_PARK_BEEP
,
0
,
48
);
// Track8 Park Beep x∞ @1000ms 雷达
}
source/Driver/Buzzer/Buzzer.h
View file @
c4d9c18b
...
@@ -5,117 +5,40 @@
...
@@ -5,117 +5,40 @@
版 本:V1.0
版 本:V1.0
日 期:2016.5.18
日 期:2016.5.18
******************************************************************************/
******************************************************************************/
#ifndef _BUZZER_H_
#ifndef _BUZZER_H_
#define _BUZZER_H_
#define _BUZZER_H_
#include "GPIO.h"
#include "GPIO.h"
#include "r_typedefs.h"
#include "r_typedefs.h"
/*****************************************************************************
音轨总数
*****************************************************************************/
#define BUZZER_TRACK_CNT ((uint8_t)10)
/*****************************************************************************
声音重定义
*****************************************************************************/
#define BUZZER_SOUND_TIC ((uint8_t)0)
#define BUZZER_SOUND_TAC ((uint8_t)1)
#define BUZZER_SOUND_DONG ((uint8_t)2)
#define BUZZER_SOUND_PLING ((uint8_t)3)
#define BUZZER_SOUND_PLONG ((uint8_t)4)
#define BUZZER_SOUND_PARK_BEEP ((uint8_t)5)
#define BUZZER_SOUND_PLING_PLONG ((uint8_t)6)
/*****************************************************************************
单音重定义
*****************************************************************************/
#define BUZZER_SINGLE_SOUND_TIC ((uint8_t)0)
#define BUZZER_SINGLE_SOUND_TAC ((uint8_t)1)
#define BUZZER_SINGLE_SOUND_DONG ((uint8_t)2)
#define BUZZER_SINGLE_SOUND_PLING ((uint8_t)3)
#define BUZZER_SINGLE_SOUND_PLONG ((uint8_t)4)
#define BUZZER_SINGLE_SOUND_PARK_BEEP ((uint8_t)5)
typedef
enum
{
BUZZER_Track_Index_Tic
=
0x00
,
BUZZER_Track_Index_Tac
,
BUZZER_Track_Index_Dong
,
BUZZER_Track_Index_Pling
,
BUZZER_Track_Index_Plong
,
BUZZER_Track_Index_ParkBeep
,
BUZZER_Track_Index_3900hz_500Dty
,
BUZZER_Track_Index_2300hz_500Dty
,
BUZZER_Track_Index_3900hz_280Dty
,
BUZZER_Track_Index_2300hz_280Dty
,
BUZZER_Track_Index_3900hz_190Dty
,
BUZZER_Track_Index_2600hz_167Dty
,
BUZZER_Track_Index_2000hz_500Dty
,
BUZZER_Track_Index_0800hz_500Dty
,
BUZZER_Track_Index_MAX
,
}
BUZZER_Track_Index_en_t
;
/*****************************************************************************
#define BUZZER_PWM_CHANNEL 4
播放类型
*****************************************************************************/
#define BUZZER_SOUND_PLAY_IDLE ((uint8_t)0)
#define BUZZER_SOUND_PLAY_REPEAT ((uint8_t)1)
#define BUZZER_SOUND_PLAY_NONSTOP ((uint8_t)2)
/******************************************************************************
信号重定义
******************************************************************************/
#define LINE_BUZZER BUZZER_ACC_OUT_EN
#define LINE_BUZZER BUZZER_ACC_OUT_EN
//#define BUZZER_PWM_EN PWME_PWME4
//#define BUZZER_FREQ_CTRL PWMPER4 //蜂鸣器频率 = 100kHz / BUZZER_FREQ_CTRL
//#define BUZZER_DUTY_CTRL PWMDTY4
/******************************************************************************
#ifndef BUZZER_CTRL
结构定义
#define BUZZER_CTRL LINE_BUZZER
******************************************************************************/
#endif
typedef
struct
{
uint16_t
Freq
;
//频率控制字 设定值 = 100kHz / 单音频率
uint16_t
Duty
;
uint16_t
PlayTime
;
//单音播放时间 设定值 = 单音播放时间 / 64us
uint16_t
FadeOutTime
;
//单音淡出时间 设定值 = 单音淡出时间 / 64us
}
SingleSoundStruct
;
typedef
struct
#define BUZZER_MODE_IDLE 0
{
#define BUZZER_MODE_SINGLE 1
uint8_t
SoundTable
[
7
];
//复合音各单音列表
#define BUZZER_MODE_LOOP 2
uint8_t
SoundCnt
;
//复合音包含的单音总数
}
ComplexSoundStruct
;
typedef
struct
typedef
struct
{
{
uint8_t
Mode
;
uint8_t
Mode
;
uint8_t
SoundID
;
uint8_t
Track
;
uint8_t
RepeatNum
;
uint8_t
Note
;
uint8_t
RepeatCnt
;
uint16_t
Timer
;
uint8_t
RepeatCycle
;
uint16_t
Fade
;
uint8_t
RepeatTimer
;
}
BuzzerPlayCtrlStruct
;
}
TrackInfoStruct
;
/******************************************************************************
/******************************************************************************
函数声明
函数声明
******************************************************************************/
******************************************************************************/
void
Buzzer_Init
(
void
);
void
Buzzer_Start_Up
(
void
);
void
Buzzer_Shutdown
(
void
);
void
Buzzer_Shutdown
(
void
);
void
Buzzer_Play_ISR
(
void
);
//嵌入到64us中断中
void
Buzzer_Play_Track
(
uint8_t
TrackID
);
void
Warning_Sound_Init
(
void
);
void
Buzzer_Repeat_Play_Track
(
uint8_t
TrackID
);
void
Buzzer_Stop_All_Track
(
void
);
void
Buzzer_Stop_Play
(
void
);
void
Buzzer_Track_Play_Service
(
void
);
//每20ms调用一次
void
Buzzer_Play_ISR
(
void
);
void
Buzzer_Track_Play
(
uint8_t
TrackID
);
void
Buzzer_Track_Stop
(
uint8_t
TrackID
);
void
Buzzer_Track_Pause
(
uint8_t
TrackID
);
void
Buzzer_Play_Sound
(
uint8_t
SoundID
);
void
Buzzer_Set_Track_Remaining_Repeat_Num
(
uint8_t
TrackID
,
uint8_t
RepeatNum
);
void
Buzzer_Track_Init
(
uint8_t
TrackID
,
uint8_t
SoundID
,
uint8_t
RepeatNum
,
uint8_t
RepeatCycle
);
uint8_t
Buzzer_Get_All_Track_Status
(
void
);
uint8_t
Buzzer_Get_Track_Status
(
uint8_t
TrackID
);
uint8_t
Buzzer_Get_Track_Remaining_Repeat_Num
(
uint8_t
TrackID
);
#endif
#endif
source/Driver/Buzzer/Sound_Tracks.h
View file @
c4d9c18b
source/System/tasks.c
View file @
c4d9c18b
...
@@ -142,7 +142,7 @@ void Sys_Run_Mode_10ms_Tasks(void)
...
@@ -142,7 +142,7 @@ void Sys_Run_Mode_10ms_Tasks(void)
Popup_Alone_Sound_Server
();
Popup_Alone_Sound_Server
();
Telltales_Left_Right_Management_Service
();
Telltales_Left_Right_Management_Service
();
Telltales_Management
();
Telltales_Management
();
//Test_LED_AllLight();
//
Test_LED_AllLight();
Key_Service
();
Key_Service
();
CAN_BUSOFF_Recover
();
CAN_BUSOFF_Recover
();
...
@@ -170,10 +170,9 @@ void Sys_Run_Mode_20ms_Tasks(void)
...
@@ -170,10 +170,9 @@ void Sys_Run_Mode_20ms_Tasks(void)
Voltmeter_Processing_Service
();
Voltmeter_Processing_Service
();
Sound_Management_Service
();
Sound_Management_Service
();
CD4051B_Debounce_Service
();
CD4051B_Debounce_Service
();
Seg_Display_Service
();
/*段码显示逻辑*/
Seg_Display_Service
();
/*段码显示逻辑*/
Seg_Buffer_Commit
();
Seg_Buffer_Commit
();
BU98R10_Update_Request
();
BU98R10_Update_Request
();
Buzzer_Track_Play_Service
();
}
}
/*============================================================================*/
/*============================================================================*/
...
...
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