Compare commits

...

1 Commits

Author SHA1 Message Date
709c6e76d2 实现 WT588FXXA 语音播报 2024-01-05 20:45:40 +08:00
13 changed files with 440 additions and 739 deletions

2
.gitignore vendored
View File

@ -3,7 +3,7 @@ WpfApp1/WpfApp1/obj/*
WpfApp1/WpfApp1/bin/* WpfApp1/WpfApp1/bin/*
GD32F103C8T6/App/Output/* GD32F103C8T6/App/Output/*
GD32F103C8T6/Bootloader/Output/* GD32F103C8T6/Bootloader/Output/*
GD32F103C8T6/._GD32F10x.emProject *.emProject
*.emSession *.emSession
*.jlink *.jlink
._* ._*

View File

@ -22,7 +22,7 @@
#define API_FRAME_RESPONSE (0x01) /* 响应帧 */ #define API_FRAME_RESPONSE (0x01) /* 响应帧 */
#define API_FRAME_NOTIFICATION (0x02) /* 通知帧 */ #define API_FRAME_NOTIFICATION (0x02) /* 通知帧 */
#define SOFTWARE_VERSION ("V1.28") #define SOFTWARE_VERSION ("V1.29")
#define HARDWARE_VERSION ("V1.01") #define HARDWARE_VERSION ("V1.01")
extern uint8_t api_upgrade_mode; extern uint8_t api_upgrade_mode;

View File

@ -1,328 +0,0 @@
#include "qgel50x.h"
#ifdef USE_QGEL50X
/* 0: 未播放; 1: 正在播放 */
static uint8_t qgel50x_status = 0; /* 播放状态(模块) */
static uint8_t qgel50x_play_status = 0; /* 播放状态(用户) */
static uint8_t qgel50x_send_count = 0;
static uint8_t qgel50x_status_stop_try_count = 0;
static uint8_t qgel50x_status_playing_try_count = 0;
static uint8_t qgel50x_door_opening_warning_task_uuid = 0;
static uint8_t qgel50x_left_turn_warning_task_uuid = 0;
static uint8_t qgel50x_right_turn_warning_task_uuid = 0;
static uint8_t qgel50x_reverse_warning_task_uuid = 0;
static uint8_t qgel50x_arrival_warning_task_uuid = 0;
static uint8_t qgel50x_departure_warning_task_uuid = 0;
static uint8_t qgel50x_please_note_that_task_uuid = 0;
static void qgel50x_door_opening_warning_task(uint8_t uuid);
static void qgel50x_left_turn_warning_task(uint8_t uuid);
static void qgel50x_right_turn_warning_task(uint8_t uuid);
static void qgel50x_reverse_warning_task(uint8_t uuid);
static void qgel50x_arrival_warning_task(uint8_t uuid);
static void qgel50x_departure_warning_task(uint8_t uuid);
static void qgel50x_please_note_that_task(uint8_t uuid);
static void qgel50x_status_parsing_task(uint8_t uuid);
void qgel50x_init(void)
{
/* 创建任务, 并挂起 */
qgel50x_door_opening_warning_task_uuid = task_create(qgel50x_door_opening_warning_task, 200);
task_suspend(qgel50x_door_opening_warning_task_uuid);
qgel50x_left_turn_warning_task_uuid = task_create(qgel50x_left_turn_warning_task, 200);
task_suspend(qgel50x_left_turn_warning_task_uuid);
qgel50x_right_turn_warning_task_uuid = task_create(qgel50x_right_turn_warning_task, 200);
task_suspend(qgel50x_right_turn_warning_task_uuid);
qgel50x_reverse_warning_task_uuid = task_create(qgel50x_reverse_warning_task, 200);
task_suspend(qgel50x_reverse_warning_task_uuid);
qgel50x_arrival_warning_task_uuid = task_create(qgel50x_arrival_warning_task, 200);
task_suspend(qgel50x_arrival_warning_task_uuid);
qgel50x_departure_warning_task_uuid = task_create(qgel50x_departure_warning_task, 200);
task_suspend(qgel50x_departure_warning_task_uuid);
qgel50x_please_note_that_task_uuid = task_create(qgel50x_please_note_that_task, 100);
task_suspend(qgel50x_please_note_that_task_uuid);
task_create(qgel50x_status_parsing_task, 10);
}
void qgel50x_send_pulse(uint8_t count)
{
for (uint8_t i = 0; i < count; i++)
{
gpio_bit_write(QGEL50X_TG1_PERIPH, QGEL50X_TG1_PIN, SET);
delay_us(100);
gpio_bit_write(QGEL50X_TG1_PERIPH, QGEL50X_TG1_PIN, RESET);
delay_us(100);
}
}
/**
* @brief +
*/
void qgel50x_volume_up(void)
{
qgel50x_send_pulse(3);
}
/**
* @brief -
*/
void qgel50x_volume_down(void)
{
qgel50x_send_pulse(4);
}
/**
* @brief
*/
void qgel50x_stop(void)
{
/* 停止 */
qgel50x_send_pulse(1);
delay_ms(100);
qgel50x_play_status = 0;
/* 挂起任务 */
task_suspend(qgel50x_door_opening_warning_task_uuid);
task_suspend(qgel50x_left_turn_warning_task_uuid);
task_suspend(qgel50x_right_turn_warning_task_uuid);
task_suspend(qgel50x_reverse_warning_task_uuid);
task_suspend(qgel50x_arrival_warning_task_uuid);
task_suspend(qgel50x_departure_warning_task_uuid);
task_suspend(qgel50x_please_note_that_task_uuid);
}
/**
* @brief
*/
void qgel50x_door_opening_warning(void)
{
task_resume(qgel50x_door_opening_warning_task_uuid);
}
void qgel50x_left_turn_warning(void)
{
task_resume(qgel50x_left_turn_warning_task_uuid);
}
void qgel50x_right_turn_warning(void)
{
task_resume(qgel50x_right_turn_warning_task_uuid);
}
void qgel50x_reverse_warning(void)
{
task_resume(qgel50x_reverse_warning_task_uuid);
}
void qgel50x_arrival_warning(void)
{
task_resume(qgel50x_arrival_warning_task_uuid);
}
void qgel50x_departure_warning(void)
{
//task_resume(qgel50x_status_parsing_task_uuid);
}
void qgel50x_please_note_that(void)
{
/* 开始任务 */
task_resume(qgel50x_please_note_that_task_uuid);
}
static void qgel50x_door_opening_warning_task(uint8_t uuid)
{
/* 默认以200ms间隔检测 */
task_set_frequency(uuid, 200);
/* 未播放语音 */
if(qgel50x_status == 0)
{
if(qgel50x_play_status == 0)
{
/* 车辆上下客,请勿靠近 */
qgel50x_send_pulse(27);
/* 正在播放, 此时 模块状态 应为 1 */
qgel50x_play_status = 1;
}
else
{
/* 未播放 */
qgel50x_play_status = 0;
task_set_frequency(uuid, 2000);
}
}
}
static void qgel50x_left_turn_warning_task(uint8_t uuid)
{
/* 默认以200ms间隔检测 */
task_set_frequency(uuid, 200);
/* 未播放语音 */
if(qgel50x_status == 0)
{
if(qgel50x_play_status == 0)
{
/* 车辆左转,请注意避让 */
qgel50x_send_pulse(31);
/* 正在播放, 此时 模块状态 应为 1 */
qgel50x_play_status = 1;
}
else
{
/* 未播放 */
qgel50x_play_status = 0;
task_set_frequency(uuid, 2000);
}
}
}
void qgel50x_right_turn_warning_task(uint8_t uuid)
{
/* 默认以200ms间隔检测 */
task_set_frequency(uuid, 200);
/* 未播放语音 */
if(qgel50x_status == 0)
{
if(qgel50x_play_status == 0)
{
/* 车辆右转,请注意避让 */
qgel50x_send_pulse(30);
/* 正在播放, 此时 模块状态 应为 1 */
qgel50x_play_status = 1;
}
else
{
/* 未播放 */
qgel50x_play_status = 0;
task_set_frequency(uuid, 2000);
}
}
}
void qgel50x_reverse_warning_task(uint8_t uuid)
{
/* 默认以200ms间隔检测 */
task_set_frequency(uuid, 200);
/* 未播放语音 */
if(qgel50x_status == 0)
{
if(qgel50x_play_status == 0)
{
/* 倒车,请注意避让 */
qgel50x_send_pulse(28);
/* 正在播放, 此时 模块状态 应为 1 */
qgel50x_play_status = 1;
}
else
{
/* 未播放 */
qgel50x_play_status = 0;
task_set_frequency(uuid, 2000);
}
}
}
static void qgel50x_arrival_warning_task(uint8_t uuid)
{
/* 默认以200ms间隔检测 */
task_set_frequency(uuid, 200);
/* 未播放语音 */
if(qgel50x_status == 0)
{
if(qgel50x_play_status == 0)
{
/* 车辆进站,请注意 */
qgel50x_send_pulse(26);
/* 正在播放, 此时 模块状态 应为 1 */
qgel50x_play_status = 1;
}
else
{
/* 未播放 */
qgel50x_play_status = 0;
task_set_frequency(uuid, 2000);
}
}
}
static void qgel50x_departure_warning_task(uint8_t uuid)
{
}
static void qgel50x_please_note_that_task(uint8_t uuid)
{
qgel50x_send_count++;
switch (qgel50x_send_count)
{
case 1:
qgel50x_send_pulse(15); /* 请 */
task_set_frequency(uuid, 300);
break;
case 2:
qgel50x_send_pulse(16); /* 注意 */
task_set_frequency(uuid, 500);
break;
case 3:
qgel50x_send_count = 0;
task_set_frequency(uuid, 2000);
break;
}
}
static void qgel50x_status_parsing_task(uint8_t uuid)
{
/* 正在播放 */
if(gpio_input_bit_get(QGEL50X_TG4_PERIPH, QGEL50X_TG4_PIN) == SET)
{
qgel50x_status_playing_try_count++;
if(qgel50x_status_playing_try_count > 4)
{
qgel50x_status = SET;
qgel50x_status_playing_try_count = 0;
}
}
else
{
qgel50x_status_stop_try_count++;
if(qgel50x_status_stop_try_count > 4)
{
qgel50x_status = RESET;
qgel50x_status_stop_try_count = 0;
}
}
}
#endif

View File

@ -1,24 +0,0 @@
#ifndef QGEL50X_H
#define QGEL50X_H
#include "main.h"
#ifdef USE_QGEL50X
void qgel50x_init(void);
void qgel50x_send_pulse(uint8_t count);
void qgel50x_volume_up(void);
void qgel50x_volume_down(void);
void qgel50x_stop(void);
void qgel50x_door_opening_warning(void);
void qgel50x_left_turn_warning(void);
void qgel50x_right_turn_warning(void);
void qgel50x_reverse_warning(void);
void qgel50x_arrival_warning(void);
void qgel50x_departure_warning(void);
void qgel50x_please_note_that(void);
#endif
#endif

View File

@ -1,326 +0,0 @@
#include "v58.h"
/* 0: 未播放; 1: 正在播放 */
static uint8_t v58_status = 0; /* 播放状态(模块) */
static uint8_t v58_play_status = 0; /* 播放状态(用户) */
static uint8_t v58_send_count = 0;
static uint8_t v58_status_stop_try_count = 0;
static uint8_t v58_status_playing_try_count = 0;
static uint8_t v58_door_opening_warning_task_uuid = 0;
static uint8_t v58_left_turn_warning_task_uuid = 0;
static uint8_t v58_right_turn_warning_task_uuid = 0;
static uint8_t v58_reverse_warning_task_uuid = 0;
static uint8_t v58_arrival_warning_task_uuid = 0;
static uint8_t v58_departure_warning_task_uuid = 0;
static uint8_t v58_please_note_that_task_uuid = 0;
static void v58_door_opening_warning_task(uint8_t uuid);
static void v58_left_turn_warning_task(uint8_t uuid);
static void v58_right_turn_warning_task(uint8_t uuid);
static void v58_reverse_warning_task(uint8_t uuid);
static void v58_arrival_warning_task(uint8_t uuid);
static void v58_departure_warning_task(uint8_t uuid);
static void v58_please_note_that_task(uint8_t uuid);
static void v58_status_parsing_task(uint8_t uuid);
void v58_init(void)
{
/* 创建任务, 并挂起 */
v58_door_opening_warning_task_uuid = task_create(v58_door_opening_warning_task, 200);
task_suspend(v58_door_opening_warning_task_uuid);
v58_left_turn_warning_task_uuid = task_create(v58_left_turn_warning_task, 200);
task_suspend(v58_left_turn_warning_task_uuid);
v58_right_turn_warning_task_uuid = task_create(v58_right_turn_warning_task, 200);
task_suspend(v58_right_turn_warning_task_uuid);
v58_reverse_warning_task_uuid = task_create(v58_reverse_warning_task, 200);
task_suspend(v58_reverse_warning_task_uuid);
v58_arrival_warning_task_uuid = task_create(v58_arrival_warning_task, 200);
task_suspend(v58_arrival_warning_task_uuid);
v58_departure_warning_task_uuid = task_create(v58_departure_warning_task, 200);
task_suspend(v58_departure_warning_task_uuid);
v58_please_note_that_task_uuid = task_create(v58_please_note_that_task, 100);
task_suspend(v58_please_note_that_task_uuid);
task_create(v58_status_parsing_task, 10);
}
void v58_send_pulse(uint8_t count)
{
for (uint8_t i = 0; i < count; i++)
{
gpio_bit_write(V58_DATA_PERIPH, V58_DATA_PIN, SET);
delay_us(100);
gpio_bit_write(V58_DATA_PERIPH, V58_DATA_PIN, RESET);
delay_us(100);
}
}
/**
* @brief +
*/
void v58_volume_up(void)
{
v58_send_pulse(2);
}
/**
* @brief -
*/
void v58_volume_down(void)
{
v58_send_pulse(3);
}
/**
* @brief
*/
void v58_stop(void)
{
delay_ms(100);
/* 停止 */
v58_send_pulse(1);
delay_ms(100);
v58_play_status = 0;
/* 挂起任务 */
task_suspend(v58_door_opening_warning_task_uuid);
task_suspend(v58_left_turn_warning_task_uuid);
task_suspend(v58_right_turn_warning_task_uuid);
task_suspend(v58_reverse_warning_task_uuid);
task_suspend(v58_arrival_warning_task_uuid);
task_suspend(v58_departure_warning_task_uuid);
task_suspend(v58_please_note_that_task_uuid);
}
/**
* @brief
*/
void v58_door_opening_warning(void)
{
task_resume(v58_door_opening_warning_task_uuid);
}
void v58_left_turn_warning(void)
{
task_resume(v58_left_turn_warning_task_uuid);
}
void v58_right_turn_warning(void)
{
task_resume(v58_right_turn_warning_task_uuid);
}
void v58_reverse_warning(void)
{
task_resume(v58_reverse_warning_task_uuid);
}
void v58_arrival_warning(void)
{
task_resume(v58_arrival_warning_task_uuid);
}
void v58_departure_warning(void)
{
// task_resume(v58_status_parsing_task_uuid);
}
void v58_please_note_that(void)
{
/* 开始任务 */
task_resume(v58_please_note_that_task_uuid);
}
static void v58_door_opening_warning_task(uint8_t uuid)
{
/* 默认以200ms间隔检测 */
task_set_frequency(uuid, 200);
/* 未播放语音 */
if (v58_status == 0)
{
if (v58_play_status == 0)
{
/* 车辆上下客,请勿靠近 */
v58_send_pulse(8);
/* 正在播放, 此时 模块状态 应为 1 */
v58_play_status = 1;
}
else
{
/* 未播放 */
v58_play_status = 0;
task_set_frequency(uuid, 2000);
}
}
}
static void v58_left_turn_warning_task(uint8_t uuid)
{
/* 默认以200ms间隔检测 */
task_set_frequency(uuid, 200);
/* 未播放语音 */
if (v58_status == 0)
{
if (v58_play_status == 0)
{
/* 车辆左转,请注意避让 */
v58_send_pulse(10);
/* 正在播放, 此时 模块状态 应为 1 */
v58_play_status = 1;
}
else
{
/* 未播放 */
v58_play_status = 0;
task_set_frequency(uuid, 2000);
}
}
}
void v58_right_turn_warning_task(uint8_t uuid)
{
/* 默认以200ms间隔检测 */
task_set_frequency(uuid, 200);
/* 未播放语音 */
if (v58_status == 0)
{
if (v58_play_status == 0)
{
/* 车辆右转,请注意避让 */
v58_send_pulse(9);
/* 正在播放, 此时 模块状态 应为 1 */
v58_play_status = 1;
}
else
{
/* 未播放 */
v58_play_status = 0;
task_set_frequency(uuid, 2000);
}
}
}
void v58_reverse_warning_task(uint8_t uuid)
{
/* 默认以200ms间隔检测 */
task_set_frequency(uuid, 200);
/* 未播放语音 */
if (v58_status == 0)
{
if (v58_play_status == 0)
{
/* 倒车,请注意避让 */
v58_send_pulse(13);
/* 正在播放, 此时 模块状态 应为 1 */
v58_play_status = 1;
}
else
{
/* 未播放 */
v58_play_status = 0;
task_set_frequency(uuid, 2000);
}
}
}
static void v58_arrival_warning_task(uint8_t uuid)
{
/* 默认以200ms间隔检测 */
task_set_frequency(uuid, 200);
/* 未播放语音 */
if (v58_status == 0)
{
if (v58_play_status == 0)
{
/* 车辆进站,请注意 */
v58_send_pulse(7);
/* 正在播放, 此时 模块状态 应为 1 */
v58_play_status = 1;
}
else
{
/* 未播放 */
v58_play_status = 0;
task_set_frequency(uuid, 2000);
}
}
}
static void v58_departure_warning_task(uint8_t uuid)
{
}
static void v58_please_note_that_task(uint8_t uuid)
{
v58_send_count++;
switch (v58_send_count)
{
case 1:
v58_send_pulse(19); /* 请 */
task_set_frequency(uuid, 360);
break;
case 2:
v58_send_pulse(39); /* 注意 */
task_set_frequency(uuid, 450);
break;
case 3:
v58_send_count = 0;
task_set_frequency(uuid, 2000);
break;
}
}
static void v58_status_parsing_task(uint8_t uuid)
{
/* 正在播放 */
if (gpio_input_bit_get(V58_STATUS_PERIPH, V58_STATUS_PIN) == SET)
{
v58_status_playing_try_count++;
if (v58_status_playing_try_count > 4)
{
v58_status = SET;
v58_status_playing_try_count = 0;
}
}
else
{
v58_status_stop_try_count++;
if (v58_status_stop_try_count > 4)
{
v58_status = RESET;
v58_status_stop_try_count = 0;
}
}
}

View File

@ -1,19 +0,0 @@
#ifndef __V58_H
#define __V58_H
#include "main.h"
void v58_init(void);
void v58_send_pulse(uint8_t count);
void v58_volume_up(void);
void v58_volume_down(void);
void v58_stop(void);
void v58_door_opening_warning(void);
void v58_left_turn_warning(void);
void v58_right_turn_warning(void);
void v58_reverse_warning(void);
void v58_arrival_warning(void);
void v58_departure_warning(void);
void v58_please_note_that(void);
#endif

View File

@ -0,0 +1,371 @@
#include "wt588fxxa.h"
// /* 0: 未播放; 1: 正在播放 */
// static uint8_t wt588fxxa_status = 0; /* 播放状态(模块) */
// static uint8_t wt588fxxa_play_status = 0; /* 播放状态(用户) */
// static uint8_t wt588fxxa_send_count = 0;
// static uint8_t wt588fxxa_status_stop_try_count = 0;
// static uint8_t wt588fxxa_status_playing_try_count = 0;
// static uint8_t wt588fxxa_door_opening_warning_task_uuid = 0;
// static uint8_t wt588fxxa_left_turn_warning_task_uuid = 0;
// static uint8_t wt588fxxa_right_turn_warning_task_uuid = 0;
// static uint8_t wt588fxxa_reverse_warning_task_uuid = 0;
// static uint8_t wt588fxxa_arrival_warning_task_uuid = 0;
// static uint8_t wt588fxxa_departure_warning_task_uuid = 0;
// static uint8_t wt588fxxa_please_note_that_task_uuid = 0;
// static void wt588fxxa_door_opening_warning_task(uint8_t uuid);
// static void wt588fxxa_left_turn_warning_task(uint8_t uuid);
// static void wt588fxxa_right_turn_warning_task(uint8_t uuid);
// static void wt588fxxa_reverse_warning_task(uint8_t uuid);
// static void wt588fxxa_arrival_warning_task(uint8_t uuid);
// static void wt588fxxa_departure_warning_task(uint8_t uuid);
// static void wt588fxxa_please_note_that_task(uint8_t uuid);
// static void wt588fxxa_status_parsing_task(uint8_t uuid);
void wt588fxxa_init(void)
{
///* 创建任务, 并挂起 */
//wt588fxxa_door_opening_warning_task_uuid = task_create(wt588fxxa_door_opening_warning_task, 200);
//task_suspend(wt588fxxa_door_opening_warning_task_uuid);
//wt588fxxa_left_turn_warning_task_uuid = task_create(wt588fxxa_left_turn_warning_task, 200);
//task_suspend(wt588fxxa_left_turn_warning_task_uuid);
//wt588fxxa_right_turn_warning_task_uuid = task_create(wt588fxxa_right_turn_warning_task, 200);
//task_suspend(wt588fxxa_right_turn_warning_task_uuid);
//wt588fxxa_reverse_warning_task_uuid = task_create(wt588fxxa_reverse_warning_task, 200);
//task_suspend(wt588fxxa_reverse_warning_task_uuid);
//wt588fxxa_arrival_warning_task_uuid = task_create(wt588fxxa_arrival_warning_task, 200);
//task_suspend(wt588fxxa_arrival_warning_task_uuid);
//wt588fxxa_departure_warning_task_uuid = task_create(wt588fxxa_departure_warning_task, 200);
//task_suspend(wt588fxxa_departure_warning_task_uuid);
//wt588fxxa_please_note_that_task_uuid = task_create(wt588fxxa_please_note_that_task, 100);
//task_suspend(wt588fxxa_please_note_that_task_uuid);
//task_create(wt588fxxa_status_parsing_task, 10);
//wt588fxxa_send_pulse(0x1D);
}
void wt588fxxa_send_pulse(uint8_t count)
{
// for (uint8_t i = 0; i < count; i++)
// {
// gpio_bit_write(wt588fxxa_DATA_PERIPH, wt588fxxa_DATA_PIN, SET);
// delay_us(100);
// gpio_bit_write(wt588fxxa_DATA_PERIPH, wt588fxxa_DATA_PIN, RESET);
// delay_us(100);
// }
uint8_t S_DATA;
uint8_t B_DATA;
S_DATA = count;
//P_DATA = 0;
gpio_bit_write(WT588FXXA_DATA_PERIPH, WT588FXXA_DATA_PIN, RESET);
delay_ms(5); // 延时 5ms
B_DATA = S_DATA & 0X01;
for (uint8_t j = 0; j < 8; j++)
{
if (B_DATA == 1)
{
//P_DATA = 1;
gpio_bit_write(WT588FXXA_DATA_PERIPH, WT588FXXA_DATA_PIN, SET);
delay_us(600); // 延时 600us
//P_DATA = 0;
gpio_bit_write(WT588FXXA_DATA_PERIPH, WT588FXXA_DATA_PIN, RESET);
delay_us(200); // 延时 200us
}
else
{
//P_DATA = 1;
gpio_bit_write(WT588FXXA_DATA_PERIPH, WT588FXXA_DATA_PIN, SET);
delay_us(200); // 延时 200us
//P_DATA = 0;
gpio_bit_write(WT588FXXA_DATA_PERIPH, WT588FXXA_DATA_PIN, RESET);
delay_us(600); // 延时 600us
}
S_DATA = S_DATA >> 1;
B_DATA = S_DATA & 0X01;
}
//P_DATA = 1;
gpio_bit_write(WT588FXXA_DATA_PERIPH, WT588FXXA_DATA_PIN, SET);
delay_ms(2);
}
/**
* @brief +
*/
void wt588fxxa_volume_up(void)
{
//wt588fxxa_send_pulse(2);
}
/**
* @brief -
*/
void wt588fxxa_volume_down(void)
{
//wt588fxxa_send_pulse(3);
}
/**
* @brief
*/
void wt588fxxa_stop(void)
{
delay_ms(100);
/* 停止 */
wt588fxxa_send_pulse(0xFE);
delay_ms(100);
//wt588fxxa_play_status = 0;
///* 挂起任务 */
//task_suspend(wt588fxxa_door_opening_warning_task_uuid);
//task_suspend(wt588fxxa_left_turn_warning_task_uuid);
//task_suspend(wt588fxxa_right_turn_warning_task_uuid);
//task_suspend(wt588fxxa_reverse_warning_task_uuid);
//task_suspend(wt588fxxa_arrival_warning_task_uuid);
//task_suspend(wt588fxxa_departure_warning_task_uuid);
//task_suspend(wt588fxxa_please_note_that_task_uuid);
}
/**
* @brief
*/
void wt588fxxa_door_opening_warning(void)
{
//task_resume(wt588fxxa_door_opening_warning_task_uuid);
wt588fxxa_send_pulse(0x06);
wt588fxxa_send_pulse(0xF2);
}
void wt588fxxa_left_turn_warning(void)
{
//task_resume(wt588fxxa_left_turn_warning_task_uuid);
wt588fxxa_send_pulse(0x08);
wt588fxxa_send_pulse(0xF2);
}
void wt588fxxa_right_turn_warning(void)
{
//task_resume(wt588fxxa_right_turn_warning_task_uuid);
wt588fxxa_send_pulse(0x07);
wt588fxxa_send_pulse(0xF2);
}
void wt588fxxa_reverse_warning(void)
{
//task_resume(wt588fxxa_reverse_warning_task_uuid);
wt588fxxa_send_pulse(0x0B);
wt588fxxa_send_pulse(0xF2);
}
void wt588fxxa_arrival_warning(void)
{
wt588fxxa_send_pulse(0x05);
wt588fxxa_send_pulse(0xF2);
}
void wt588fxxa_departure_warning(void)
{
}
void wt588fxxa_please_note_that(void)
{
// /* 开始任务 */
// task_resume(wt588fxxa_please_note_that_task_uuid);
}
// static void wt588fxxa_door_opening_warning_task(uint8_t uuid)
// {
// /* 默认以200ms间隔检测 */
// task_set_frequency(uuid, 200);
// /* 未播放语音 */
// if (wt588fxxa_status == 0)
// {
// if (wt588fxxa_play_status == 0)
// {
// /* 车辆上下客,请勿靠近 */
// wt588fxxa_send_pulse(0x06);
// /* 正在播放, 此时 模块状态 应为 1 */
// wt588fxxa_play_status = 1;
// }
// else
// {
// /* 未播放 */
// wt588fxxa_play_status = 0;
// task_set_frequency(uuid, 2000);
// }
// }
// }
// static void wt588fxxa_left_turn_warning_task(uint8_t uuid)
// {
// /* 默认以200ms间隔检测 */
// task_set_frequency(uuid, 200);
// /* 未播放语音 */
// if (wt588fxxa_status == 0)
// {
// if (wt588fxxa_play_status == 0)
// {
// /* 车辆左转,请注意避让 */
// wt588fxxa_send_pulse(0x08);
// /* 正在播放, 此时 模块状态 应为 1 */
// wt588fxxa_play_status = 1;
// }
// else
// {
// /* 未播放 */
// wt588fxxa_play_status = 0;
// task_set_frequency(uuid, 2000);
// }
// }
// }
// void wt588fxxa_right_turn_warning_task(uint8_t uuid)
// {
// /* 默认以200ms间隔检测 */
// task_set_frequency(uuid, 200);
// /* 未播放语音 */
// if (wt588fxxa_status == 0)
// {
// if (wt588fxxa_play_status == 0)
// {
// /* 车辆右转,请注意避让 */
// wt588fxxa_send_pulse(0x07);
// /* 正在播放, 此时 模块状态 应为 1 */
// wt588fxxa_play_status = 1;
// }
// else
// {
// /* 未播放 */
// wt588fxxa_play_status = 0;
// task_set_frequency(uuid, 2000);
// }
// }
// }
// void wt588fxxa_reverse_warning_task(uint8_t uuid)
// {
// /* 默认以200ms间隔检测 */
// task_set_frequency(uuid, 200);
// /* 未播放语音 */
// if (wt588fxxa_status == 0)
// {
// if (wt588fxxa_play_status == 0)
// {
// /* 倒车,请注意避让 */
// wt588fxxa_send_pulse(0x0B);
// /* 正在播放, 此时 模块状态 应为 1 */
// wt588fxxa_play_status = 1;
// }
// else
// {
// /* 未播放 */
// wt588fxxa_play_status = 0;
// task_set_frequency(uuid, 2000);
// }
// }
// }
// static void wt588fxxa_arrival_warning_task(uint8_t uuid)
// {
// /* 默认以200ms间隔检测 */
// task_set_frequency(uuid, 200);
// /* 未播放语音 */
// if (wt588fxxa_status == 0)
// {
// if (wt588fxxa_play_status == 0)
// {
// /* 车辆进站,请注意 */
// wt588fxxa_send_pulse(0x05);
// /* 正在播放, 此时 模块状态 应为 1 */
// wt588fxxa_play_status = 1;
// }
// else
// {
// /* 未播放 */
// wt588fxxa_play_status = 0;
// task_set_frequency(uuid, 2000);
// }
// }
// }
// static void wt588fxxa_departure_warning_task(uint8_t uuid)
// {
// }
// static void wt588fxxa_please_note_that_task(uint8_t uuid)
// {
// wt588fxxa_send_count++;
// switch (wt588fxxa_send_count)
// {
// case 1:
// wt588fxxa_send_pulse(19); /* 请 */
// task_set_frequency(uuid, 360);
// break;
// case 2:
// wt588fxxa_send_pulse(39); /* 注意 */
// task_set_frequency(uuid, 450);
// break;
// case 3:
// wt588fxxa_send_count = 0;
// task_set_frequency(uuid, 2000);
// break;
// }
// }
// static void wt588fxxa_status_parsing_task(uint8_t uuid)
// {
// /* 正在播放 */
// if (gpio_input_bit_get(V58_STATUS_PERIPH, V58_STATUS_PIN) == RESET)
// {
// wt588fxxa_status_playing_try_count++;
// if (wt588fxxa_status_playing_try_count > 4)
// {
// wt588fxxa_status = SET;
// wt588fxxa_status_playing_try_count = 0;
// }
// }
// else
// {
// wt588fxxa_status_stop_try_count++;
// if (wt588fxxa_status_stop_try_count > 4)
// {
// wt588fxxa_status = RESET;
// wt588fxxa_status_stop_try_count = 0;
// }
// }
// }

View File

@ -0,0 +1,19 @@
#ifndef __WT588FXXA_H
#define __WT588FXXA_H
#include "main.h"
void wt588fxxa_init(void);
void wt588fxxa_send_pulse(uint8_t count);
void wt588fxxa_volume_up(void);
void wt588fxxa_volume_down(void);
void wt588fxxa_stop(void);
void wt588fxxa_door_opening_warning(void);
void wt588fxxa_left_turn_warning(void);
void wt588fxxa_right_turn_warning(void);
void wt588fxxa_reverse_warning(void);
void wt588fxxa_arrival_warning(void);
void wt588fxxa_departure_warning(void);
void wt588fxxa_please_note_that(void);
#endif

View File

@ -148,7 +148,7 @@ void app_init(void)
api_init(); api_init();
/* 语音芯片初始化 */ /* 语音芯片初始化 */
v58_init(); wt588fxxa_init();
m62429_init(); m62429_init();
@ -507,7 +507,7 @@ static void vehicle_status_parsing_task(uint8_t uuid)
/* 优先级最高, 如果状态为触发, 关闭语音 */ /* 优先级最高, 如果状态为触发, 关闭语音 */
if (reversing_status == 0) if (reversing_status == 0)
{ {
v58_stop(); wt588fxxa_stop();
/* 修改系统当前状态 */ /* 修改系统当前状态 */
diaodu_status = 0xFF; diaodu_status = 0xFF;
@ -554,7 +554,7 @@ static void vehicle_status_parsing_task(uint8_t uuid)
if (diaodu_status == 1) if (diaodu_status == 1)
{ {
/* 关闭语音 */ /* 关闭语音 */
v58_stop(); wt588fxxa_stop();
/* 重置进站状态 */ /* 重置进站状态 */
diaodu_status_temporry = diaodu_status = 0; diaodu_status_temporry = diaodu_status = 0;
@ -601,7 +601,7 @@ static void vehicle_status_parsing_task(uint8_t uuid)
status_type = 4; status_type = 4;
/* 优先级最高,关闭语音 */ /* 优先级最高,关闭语音 */
v58_stop(); wt588fxxa_stop();
door_status = 0x01; door_status = 0x01;
turn_left_status = 0x01; turn_left_status = 0x01;
@ -752,34 +752,34 @@ EXECUTE:
strobe_light_reset(); strobe_light_reset();
/* 停止语音播报 */ /* 停止语音播报 */
v58_stop(); wt588fxxa_stop();
} }
else else
{ {
/* 停止语音播报 */ /* 停止语音播报 */
v58_stop(); wt588fxxa_stop();
/* 播报语音 */ /* 播报语音 */
switch (status_type) switch (status_type)
{ {
case 0: case 0:
v58_door_opening_warning(); wt588fxxa_door_opening_warning();
break; break;
case 1: case 1:
v58_left_turn_warning(); wt588fxxa_left_turn_warning();
break; break;
case 2: case 2:
v58_right_turn_warning(); wt588fxxa_right_turn_warning();
break; break;
case 3: case 3:
v58_reverse_warning(); wt588fxxa_reverse_warning();
break; break;
case 4: case 4:
v58_arrival_warning(); wt588fxxa_arrival_warning();
break; break;
case 5: case 5:
@ -929,7 +929,7 @@ void api_notify_get_can_type(void)
void api_notify_send_audio_pulse(uint8_t pulse_count) void api_notify_send_audio_pulse(uint8_t pulse_count)
{ {
v58_send_pulse(pulse_count); wt588fxxa_send_pulse(pulse_count);
api_response_send_audio_pulse(API_SUCCESS); api_response_send_audio_pulse(API_SUCCESS);
} }
@ -939,26 +939,31 @@ void api_notify_data_forwarding(uint8_t type, uint8_t value)
switch (type) switch (type)
{ {
case 0x00: case 0x00:
vehicle_status_trigger_mode = 1;
door_front_upload_status = 0x01; door_front_upload_status = 0x01;
door_front_status_temporary = value; door_front_status_temporary = value;
break; break;
case 0x01: case 0x01:
vehicle_status_trigger_mode = 1;
door_back_upload_status = 0x01; door_back_upload_status = 0x01;
door_back_status_temporary = value; door_back_status_temporary = value;
break; break;
case 0x02: case 0x02:
vehicle_status_trigger_mode = 1;
turn_left_upload_status = 0x01; turn_left_upload_status = 0x01;
turn_left_status_temporary = value; turn_left_status_temporary = value;
break; break;
case 0x03: case 0x03:
vehicle_status_trigger_mode = 1;
turn_right_upload_status = 0x01; turn_right_upload_status = 0x01;
turn_right_status_temporary = value; turn_right_status_temporary = value;
break; break;
case 0x04: case 0x04:
vehicle_status_trigger_mode = 1;
reversing_upload_status = 0x01; reversing_upload_status = 0x01;
reversing_status_temporary = value; reversing_status_temporary = value;
break; break;

View File

@ -60,10 +60,10 @@ static void bsp_initialization(void)
gpio_config(AMP_CTRL_PERIPH, AMP_CTRL_PIN, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, SET); gpio_config(AMP_CTRL_PERIPH, AMP_CTRL_PIN, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, SET);
/* DATA 控制脚 初始化 */ /* DATA 控制脚 初始化 */
gpio_config(V58_DATA_PERIPH, V58_DATA_PIN, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, RESET); gpio_config(WT588FXXA_DATA_PERIPH, WT588FXXA_DATA_PIN, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, RESET);
/* STATUS 控制脚 初始化 */ /* STATUS 控制脚 初始化 */
gpio_config(V58_STATUS_PERIPH, V58_STATUS_PIN, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, nullptr); gpio_config(WT588FXXA_STATUS_PERIPH, WT588FXXA_STATUS_PIN, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, nullptr);
iic_config(M62429_SDA_PERIPH, M62429_SDA_PIN, M62429_SCL_PERIPH, M62429_SCL_PIN); iic_config(M62429_SDA_PERIPH, M62429_SDA_PIN, M62429_SCL_PERIPH, M62429_SCL_PIN);

View File

@ -34,7 +34,7 @@
#include "diaodu.h" #include "diaodu.h"
#include "setting.h" #include "setting.h"
#include "m62429.h" #include "m62429.h"
#include "v58.h" #include "wt588fxxa.h"
/* 上位机 通讯串口 */ /* 上位机 通讯串口 */
#define HOST_USART_PERIPH USART1 #define HOST_USART_PERIPH USART1
@ -90,13 +90,13 @@
#define AMP_CTRL_PERIPH GPIOB #define AMP_CTRL_PERIPH GPIOB
#define AMP_CTRL_PIN GPIO_PIN_5 #define AMP_CTRL_PIN GPIO_PIN_5
/* V58 DATA 控制脚 */ /* WT588FXXA DATA 控制脚 */
#define V58_DATA_PERIPH GPIOA #define WT588FXXA_DATA_PERIPH GPIOA
#define V58_DATA_PIN GPIO_PIN_4 #define WT588FXXA_DATA_PIN GPIO_PIN_7
/* AK517 STATUS 控制脚 */ /* WT588FXXA STATUS 控制脚 */
#define V58_STATUS_PERIPH GPIOA #define WT588FXXA_STATUS_PERIPH GPIOA
#define V58_STATUS_PIN GPIO_PIN_7 #define WT588FXXA_STATUS_PIN GPIO_PIN_4
#define M62429_SCL_PERIPH GPIOB #define M62429_SCL_PERIPH GPIOB
#define M62429_SCL_PIN GPIO_PIN_10 #define M62429_SCL_PIN GPIO_PIN_10

View File

@ -33,7 +33,7 @@
arm_target_device_name="CS32F103C8" arm_target_device_name="CS32F103C8"
arm_target_interface_type="SWD" arm_target_interface_type="SWD"
c_preprocessor_definitions="ARM_MATH_CM3;GD32F10X_MD;USE_STDPERIPH_DRIVER;__GD32F103_SUBFAMILY;__GD32F10X_FAMILY;__NO_FPU_ENABLE" c_preprocessor_definitions="ARM_MATH_CM3;GD32F10X_MD;USE_STDPERIPH_DRIVER;__GD32F103_SUBFAMILY;__GD32F10X_FAMILY;__NO_FPU_ENABLE"
c_user_include_directories="$(ProjectDir);$(ProjectDir)/CMSIS_5/CMSIS/Core/Include;$(ProjectDir)/User;$(ProjectDir)/User/Peripheral/Api;$(ProjectDir)/User/Peripheral/AK517;$(ProjectDir)/User/Peripheral/CAN;$(ProjectDir)/User/Peripheral/DiaoDu;$(ProjectDir)/User/Peripheral/M62429;$(ProjectDir)/User/Peripheral/QGEL50X;$(ProjectDir)/User/Peripheral/V58;$(ProjectDir)/../../../../arm/GD32F10x/Driver/Include;$(ProjectDir)/../../../../arm/GD32F10x/System/Include;$(ProjectDir)/../../../../arm/GD32F10x/Utils/Byte" c_user_include_directories="$(ProjectDir);$(ProjectDir)/CMSIS_5/CMSIS/Core/Include;$(ProjectDir)/User;$(ProjectDir)/User/Peripheral/Api;$(ProjectDir)/User/Peripheral/AK517;$(ProjectDir)/User/Peripheral/CAN;$(ProjectDir)/User/Peripheral/DiaoDu;$(ProjectDir)/User/Peripheral/M62429;$(ProjectDir)/User/Peripheral/QGEL50X;$(ProjectDir)/User/Peripheral/V58;$(ProjectDir)/User/Peripheral/WT588FXXA;$(ProjectDir)/../../../../arm/GD32F10x/Driver/Include;$(ProjectDir)/../../../../arm/GD32F10x/System/Include;$(ProjectDir)/../../../../arm/GD32F10x/Utils/Byte"
debug_register_definition_file="$(ProjectDir)/GD32F10x_MD_Registers.xml" debug_register_definition_file="$(ProjectDir)/GD32F10x_MD_Registers.xml"
debug_stack_pointer_start="__stack_end__" debug_stack_pointer_start="__stack_end__"
debug_start_from_entry_point_symbol="Yes" debug_start_from_entry_point_symbol="Yes"
@ -41,7 +41,7 @@
gcc_entry_point="Reset_Handler" gcc_entry_point="Reset_Handler"
link_linker_script_file="$(ProjectDir)/GD32F10x_Flash.icf" link_linker_script_file="$(ProjectDir)/GD32F10x_Flash.icf"
linker_memory_map_file="$(ProjectDir)/GD32F103C8_MemoryMap.xml" linker_memory_map_file="$(ProjectDir)/GD32F103C8_MemoryMap.xml"
linker_output_format="hex" linker_output_format="bin"
linker_printf_fp_enabled="Float" linker_printf_fp_enabled="Float"
linker_section_placements_segments="FLASH1 RX 0x08000000 0x00020000;RAM1 RWX 0x20000000 0x00005000;" linker_section_placements_segments="FLASH1 RX 0x08000000 0x00020000;RAM1 RWX 0x20000000 0x00005000;"
macros="DeviceHeaderFile=$(PackagesDir)/GD32F10x/Device/Include/gd32f10x.h;DeviceSystemFile=$(PackagesDir)/GD32F10x/Device/Source/system_gd32f10x.c;DeviceVectorsFile=$(PackagesDir)/GD32F10x/Source/gd32f10x_md_Vectors.s;DeviceFamily=GD32F10x;DeviceSubFamily=GD32F103;Target=GD32F103C8" macros="DeviceHeaderFile=$(PackagesDir)/GD32F10x/Device/Include/gd32f10x.h;DeviceSystemFile=$(PackagesDir)/GD32F10x/Device/Source/system_gd32f10x.c;DeviceVectorsFile=$(PackagesDir)/GD32F10x/Source/gd32f10x_md_Vectors.s;DeviceFamily=GD32F10x;DeviceSubFamily=GD32F103;Target=GD32F103C8"
@ -165,9 +165,9 @@
<file file_name="User/Peripheral/M62429/m62429.c" /> <file file_name="User/Peripheral/M62429/m62429.c" />
<file file_name="User/Peripheral/M62429/m62429.h" /> <file file_name="User/Peripheral/M62429/m62429.h" />
</folder> </folder>
<folder Name="V58"> <folder Name="WT588FXXA">
<file file_name="User/Peripheral/V58/v58.c" /> <file file_name="User/Peripheral/WT588FxxA/wt588fxxa.c" />
<file file_name="User/Peripheral/V58/v58.h" /> <file file_name="User/Peripheral/WT588FxxA/wt588fxxa.h" />
</folder> </folder>
</folder> </folder>
<file file_name="User/app.c" /> <file file_name="User/app.c" />

View File

@ -2,7 +2,8 @@
<session> <session>
<Bookmarks/> <Bookmarks/>
<Breakpoints groups="Breakpoints" active_group="Breakpoints"> <Breakpoints groups="Breakpoints" active_group="Breakpoints">
<BreakpointListItem trigger="" line="218" counter="0" hardwareBreakpoint="" isFunctionBreakpoint="false" action="" expression="" group="Breakpoints" type="Breakpoint" state="2" filename="App/User/app.c" useHWbreakpoint="false"/> <BreakpointListItem trigger="" line="241" counter="0" hardwareBreakpoint="" isFunctionBreakpoint="false" action="" expression="" group="Breakpoints" type="Breakpoint" state="2" filename="App/User/app.c" useHWbreakpoint="false"/>
<BreakpointListItem trigger="" line="248" counter="0" hardwareBreakpoint="" isFunctionBreakpoint="false" action="" expression="" group="Breakpoints" type="Breakpoint" state="2" filename="App/User/app.c" useHWbreakpoint="false"/>
<BreakpointListItem trigger="" line="92" counter="0" hardwareBreakpoint="" isFunctionBreakpoint="false" action="" expression="" group="Breakpoints" type="Breakpoint" state="2" filename="../../../arm/GD32F10x/System/Source/task.c" useHWbreakpoint="false"/> <BreakpointListItem trigger="" line="92" counter="0" hardwareBreakpoint="" isFunctionBreakpoint="false" action="" expression="" group="Breakpoints" type="Breakpoint" state="2" filename="../../../arm/GD32F10x/System/Source/task.c" useHWbreakpoint="false"/>
</Breakpoints> </Breakpoints>
<ExecutionProfileWindow/> <ExecutionProfileWindow/>
@ -33,11 +34,13 @@
<ProjectSessionItem path="GD32F10x"/> <ProjectSessionItem path="GD32F10x"/>
<ProjectSessionItem path="GD32F10x;App"/> <ProjectSessionItem path="GD32F10x;App"/>
<ProjectSessionItem path="GD32F10x;App;Device"/> <ProjectSessionItem path="GD32F10x;App;Device"/>
<ProjectSessionItem path="GD32F10x;App;Device;Driver"/>
<ProjectSessionItem path="GD32F10x;App;Device;Driver;Include"/>
<ProjectSessionItem path="GD32F10x;App;Device;System"/> <ProjectSessionItem path="GD32F10x;App;Device;System"/>
<ProjectSessionItem path="GD32F10x;App;Device;System;Source"/> <ProjectSessionItem path="GD32F10x;App;Device;System;Source"/>
<ProjectSessionItem path="GD32F10x;App;User"/> <ProjectSessionItem path="GD32F10x;App;User"/>
<ProjectSessionItem path="GD32F10x;App;User;Api"/>
<ProjectSessionItem path="GD32F10x;App;User;Peripheral"/> <ProjectSessionItem path="GD32F10x;App;User;Peripheral"/>
<ProjectSessionItem path="GD32F10x;App;User;Peripheral;Api"/>
<ProjectSessionItem path="GD32F10x;App;User;Peripheral;M62429"/> <ProjectSessionItem path="GD32F10x;App;User;Peripheral;M62429"/>
<ProjectSessionItem path="GD32F10x;App;User;Peripheral;V58"/> <ProjectSessionItem path="GD32F10x;App;User;Peripheral;V58"/>
<ProjectSessionItem path="GD32F10x;Bootloader"/> <ProjectSessionItem path="GD32F10x;Bootloader"/>
@ -88,27 +91,27 @@
<Watches active="0" update="Never"/> <Watches active="0" update="Never"/>
</Watch4> </Watch4>
<Files> <Files>
<SessionOpenFile windowGroup="DockEditLeft" x="0" y="5" useTextEdit="1" path="App/main.c" left="0" top="0" codecName="UTF-8"/> <SessionOpenFile windowGroup="DockEditLeft" x="99" y="70" useTextEdit="1" path="App/main.c" left="0" top="45" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="22" y="111" useTextEdit="1" openedFrom="F:/Works/Tvis/AVS/GD32F103C8T6/App/User/app.c" path="App/main.h" left="0" top="61" codecName="UTF-8"/> <SessionOpenFile windowGroup="DockEditLeft" x="8" y="107" useTextEdit="1" openedFrom="/Volumes/HIKVISION/Works/Tvis/AVS/GD32F103C8T6/App/main.c" path="App/main.h" left="0" top="89" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="19" y="695" useTextEdit="1" openedFrom="X:/Works/Tvis/AVS/V1.20/App/User/Peripheral/IR/ir.c" path="App/User/app.c" left="0" selected="1" top="662" codecName="UTF-8"/> <SessionOpenFile windowGroup="DockEditLeft" x="46" y="172" useTextEdit="1" openedFrom="X:/Works/Tvis/AVS/V1.20/App/User/Peripheral/IR/ir.c" path="App/User/app.c" left="0" selected="1" top="137" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="52" y="24" useTextEdit="1" path="App/User/Api/api.h" left="0" top="18" codecName="UTF-8"/> <SessionOpenFile windowGroup="DockEditLeft" x="17" y="38" useTextEdit="1" openedFrom="G:/Works/Tvis/AVS/GD32F103C8T6/App/User/app.c" path="../../../arm/GD32F10x/System/Source/task.c" left="0" top="35" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="38" y="199" useTextEdit="1" openedFrom="X:/Works/Tvis/AVS/GD32F103C8T6/App/User/Api/api.h" path="App/User/Api/api.c" left="0" top="187" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="0" y="56" useTextEdit="1" openedFrom="F:/Works/Tvis/AVS/GD32F103C8T6(1.1)/App/main.c" path="../../../arm/GD32F10x/System/Source/task.c" left="0" top="34" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="24" y="4" useTextEdit="1" openedFrom="F:/Works/Tvis/AVS/GD32F103C8T6/App/User/Api/api.c" path="../../../arm/GD32F10x/System/Source/setting.c" left="9" top="1" codecName="UTF-8"/> <SessionOpenFile windowGroup="DockEditLeft" x="24" y="4" useTextEdit="1" openedFrom="F:/Works/Tvis/AVS/GD32F103C8T6/App/User/Api/api.c" path="../../../arm/GD32F10x/System/Source/setting.c" left="9" top="1" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="8" y="5" useTextEdit="1" openedFrom="F:/Works/arm/GD32F10x/System/Source/setting.c" path="../../../arm/GD32F10x/System/Include/setting.h" left="0" top="1" codecName="UTF-8"/> <SessionOpenFile windowGroup="DockEditLeft" x="8" y="5" useTextEdit="1" openedFrom="F:/Works/arm/GD32F10x/System/Source/setting.c" path="../../../arm/GD32F10x/System/Include/setting.h" left="0" top="1" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="26" y="20" useTextEdit="1" path="App/User/Peripheral/CAN/can_parsing.c" left="11" top="17" codecName="UTF-8"/> <SessionOpenFile windowGroup="DockEditLeft" x="26" y="20" useTextEdit="1" path="App/User/Peripheral/CAN/can_parsing.c" left="11" top="17" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="0" y="0" useTextEdit="1" path="App/User/Peripheral/DiaoDu/diaodu.c" left="0" top="0" codecName="UTF-8"/> <SessionOpenFile windowGroup="DockEditLeft" x="0" y="0" useTextEdit="1" path="App/User/Peripheral/DiaoDu/diaodu.c" left="0" top="0" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="5" y="99" useTextEdit="1" path="App/User/Peripheral/M62429/m62429.c" left="0" top="55" codecName="UTF-8"/> <SessionOpenFile windowGroup="DockEditLeft" x="29" y="22" useTextEdit="1" path="App/User/Peripheral/M62429/m62429.c" left="0" top="0" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="0" y="0" useTextEdit="1" path="App/User/Peripheral/IR/ir.h" left="0" top="0" codecName="UTF-8"/> <SessionOpenFile windowGroup="DockEditLeft" x="0" y="0" useTextEdit="1" path="App/User/Peripheral/IR/ir.h" left="0" top="0" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="55" y="72" useTextEdit="1" path="App/User/Peripheral/IR/ir.c" left="0" top="64" codecName="UTF-8"/> <SessionOpenFile windowGroup="DockEditLeft" x="55" y="72" useTextEdit="1" path="App/User/Peripheral/IR/ir.c" left="0" top="64" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="35" y="6" useTextEdit="1" path="App/User/Peripheral/M62429/m62429.h" left="20" top="3" codecName="UTF-8"/> <SessionOpenFile windowGroup="DockEditLeft" x="35" y="6" useTextEdit="1" path="App/User/Peripheral/M62429/m62429.h" left="20" top="3" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="32" y="16" useTextEdit="1" path="App/User/Peripheral/V58/v58.h" left="17" top="13" codecName="UTF-8"/> <SessionOpenFile windowGroup="DockEditLeft" x="23" y="198" useTextEdit="1" openedFrom="F:/Works/Tvis/AVS/GD32F103C8T6(1.1)/App/main.c" path="../../../arm/GD32F10x/System/Source/can.c" left="0" top="177" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="23" y="198" useTextEdit="1" openedFrom="F:/Works/Tvis/AVS/GD32F103C8T6(1.1)/App/main.c" path="../../../arm/GD32F10x/System/Source/can.c" left="0" top="173" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="0" y="122" useTextEdit="1" openedFrom="F:/Works/arm/GD32F10x/System/Source/can.c" path="../../../arm/GD32F10x/Driver/Source/gd32f10x_rcu.c" left="0" top="119" codecName="UTF-8"/> <SessionOpenFile windowGroup="DockEditLeft" x="0" y="122" useTextEdit="1" openedFrom="F:/Works/arm/GD32F10x/System/Source/can.c" path="../../../arm/GD32F10x/Driver/Source/gd32f10x_rcu.c" left="0" top="119" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="41" y="36" useTextEdit="1" path="Bootloader/main.h" left="0" top="2" codecName="UTF-8"/> <SessionOpenFile windowGroup="DockEditLeft" x="41" y="36" useTextEdit="1" path="Bootloader/main.h" left="0" top="11" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="8" y="32" useTextEdit="1" path="Bootloader/main.c" left="0" top="14" codecName="UTF-8"/> <SessionOpenFile windowGroup="DockEditLeft" x="8" y="32" useTextEdit="1" path="Bootloader/main.c" left="0" top="14" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="73" y="117" useTextEdit="1" path="GD32F10x.emProject" left="0" top="110" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="9" y="6" useTextEdit="1" path="../../../arm/GD32F10x/System/Include/system.h" left="0" top="0" codecName="UTF-8"/> <SessionOpenFile windowGroup="DockEditLeft" x="9" y="6" useTextEdit="1" path="../../../arm/GD32F10x/System/Include/system.h" left="0" top="0" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="54" y="24" useTextEdit="1" path="App/User/Peripheral/Api/api.h" left="0" top="5" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="14" y="83" useTextEdit="1" openedFrom="/Volumes/HIKVISION/Works/Tvis/AVS/GD32F103C8T6/App/User/Peripheral/V58/v58.h" path="App/User/Peripheral/V58/v58.c" left="0" top="60" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="49" y="314" useTextEdit="1" openedFrom="/Volumes/HIKVISION/Works/Tvis/AVS/GD32F103C8T6/App/User/Peripheral/V58/v58.c" path="../../../arm/GD32F10x/Driver/Include/gd32f10x.h" left="0" top="296" codecName="UTF-8"/>
<SessionOpenFile windowGroup="DockEditLeft" x="0" y="0" useTextEdit="1" path="App/User/app.h" left="0" top="0" codecName="UTF-8"/>
</Files> </Files>
<EMStudioWindow activeProject="App" fileDialogDefaultFilter="*.c" autoConnectTarget="J-Link" buildConfiguration="Debug" sessionSettings="" debugSearchFileMap="/Volumes/HIKVISION/Works/Tvis/AVS/GD32F103C8T6/App/SEGGER_THUMB_Startup.s&#xa;F:/Works/Tvis/AVS/GD32F103C8T6/App/SEGGER_THUMB_Startup.s&#xa;CMSIS_5/CMSIS/Core/Include/cmsis_gcc.h&#xa;/Volumes/HIKVISION/Works/Tvis/AVS/GD32F103C8T6/App/User/Peripheral/AK517/ak517.h&#xa;CMSIS_5/CMSIS/Core/Include/core_cm3.h&#xa;/Volumes/HIKVISION/Works/Tvis/AVS/GD32F103C8T6/App/User/Peripheral/AK517/ak517.c&#xa;User\Peripheral\V58/v58.c&#xa;/Volumes/HIKVISION/Works/Tvis/AVS/GD32F103C8T6/App/User/Peripheral/V58/v58.c" fileDialogInitialDirectory="/Volumes/HIKVISION/Works/Tvis/AVS/GD32F103C8T6/App/User/Peripheral/V58" debugSearchPath="" autoConnectCapabilities="3199"/> <EMStudioWindow activeProject="App" fileDialogDefaultFilter="*.c" autoConnectTarget="J-Link" buildConfiguration="Debug" sessionSettings="" debugSearchFileMap="/Volumes/HIKVISION/Works/Tvis/AVS/GD32F103C8T6/App/SEGGER_THUMB_Startup.s&#xa;F:/Works/Tvis/AVS/GD32F103C8T6/App/SEGGER_THUMB_Startup.s&#xa;CMSIS_5/CMSIS/Core/Include/cmsis_gcc.h&#xa;/Volumes/HIKVISION/Works/Tvis/AVS/GD32F103C8T6/App/User/Peripheral/AK517/ak517.h&#xa;CMSIS_5/CMSIS/Core/Include/core_cm3.h&#xa;/Volumes/HIKVISION/Works/Tvis/AVS/GD32F103C8T6/App/User/Peripheral/AK517/ak517.c&#xa;User/Peripheral/M62429/m62429.c&#xa;&#xa;User/Peripheral/V58/v58.c&#xa;/Volumes/HIKVISION/Works/Tvis/AVS/GD32F103C8T6/App/User/Peripheral/V58/v58.c" fileDialogInitialDirectory="/Volumes/HIKVISION/Works/Tvis/AVS/GD32F103C8T6/App/User/Peripheral/V58" debugSearchPath="" autoConnectCapabilities="3711"/>
</session> </session>