修改GPS使用串口号,优化GPS计算代码
        isr.c中移除CCD采集函数,有需要可以自行添加
        修改按键驱动文件的按键端口号,适配V2.6主板
This commit is contained in:
SEEKFREE_BUDING
2023-04-08 18:29:43 +08:00
parent 6c8bca6f9e
commit a78d724217
196 changed files with 2500 additions and 2355 deletions

View File

@@ -1,3 +1,7 @@
V3.1.6
<20>޸<EFBFBD>GPSʹ<53>ô<EFBFBD><C3B4>ںţ<DABA><C5A3>Ż<EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
isr.c<><63><EFBFBD>Ƴ<EFBFBD>CCD<43>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸İ<DEB8><C4B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>İ<EFBFBD><C4B0><EFBFBD><EFBFBD>˿ںţ<DABA><C5A3><EFBFBD><EFBFBD><EFBFBD>V2.6<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V3.1.5
<20>޸<EFBFBD>Ӳ<EFBFBD><D3B2>SPI<50><49>ʼ<EFBFBD><CABC>ʱѡ<CAB1><D1A1><EFBFBD><EFBFBD>CS<43><53><EFBFBD>ţ<EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD>ʼ<EFBFBD><CABC>Ĭ<EFBFBD><C4AC>CS<43><53><EFBFBD>ŵ<EFBFBD>bug
V3.1.4

View File

@@ -43,24 +43,25 @@
* ------------------------------------
********************************************************************************************************************/
#include "math.h"
#include "zf_common_function.h"
#include "zf_common_fifo.h"
#include "zf_driver_delay.h"
#include "zf_driver_uart.h"
#include "zf_device_type.h"
#include "zf_device_gps_tau1201.h"
#define GPS_TAU1201_BUFFER_SIZE (128)
#define GPS_TAU1201_BUFFER_SIZE ( 128 )
uint8 gps_tau1201_flag; // 1<><31><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɵȴ<C9B5><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30>û<EFBFBD>вɼ<D0B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
uint8 gps_tau1201_flag = 0; // 1<><31><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɵȴ<C9B5><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30>û<EFBFBD>вɼ<D0B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
gps_info_struct gps_tau1201; // GPS<50><53><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static uint8 gps_tau1201_state = 0; // 1<><31>GPS<50><53>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static fifo_struct gps_tau1201_receiver_fifo; //
static uint8 gps_tau1201_receiver_buffer[GPS_TAU1201_BUFFER_SIZE]; // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gps_state_enum gps_gga_state; // gga<67><61><EFBFBD><EFBFBD>״̬
gps_state_enum gps_rmc_state; // rmc<6D><63><EFBFBD><EFBFBD>״̬
gps_state_enum gps_gga_state = GPS_STATE_RECEIVING; // gga <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
gps_state_enum gps_rmc_state = GPS_STATE_RECEIVING; // rmc <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
static uint8 gps_gga_buffer[GPS_TAU1201_BUFFER_SIZE];
static uint8 gps_rmc_buffer[GPS_TAU1201_BUFFER_SIZE];
@@ -75,11 +76,10 @@ static uint8 gps_rmc_buffer[GPS_TAU1201_BUFFER_SIZE];
//-------------------------------------------------------------------------------------------------------------------
static uint8 get_parameter_index (uint8 num, char *str)
{
uint8 i, j = 0;
char *temp;
uint8 len = 0, len1;
uint8 i = 0, j = 0;
char *temp = strchr(str, '\n');
uint8 len = 0, len1 = 0;
temp = strchr(str, '\n');
if(NULL != temp)
{
len = (uint8)((uint32)temp - (uint32)str + 1);
@@ -87,7 +87,7 @@ static uint8 get_parameter_index (uint8 num, char *str)
for(i = 0; i < len; i ++)
{
if(str[i] == ',')
if(',' == str[i])
{
j ++;
}
@@ -111,8 +111,8 @@ static uint8 get_parameter_index (uint8 num, char *str)
static int get_int_number (char *s)
{
char buf[10];
uint8 i;
int return_value;
uint8 i = 0;
int return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
strncpy(buf, s, i);
@@ -130,9 +130,9 @@ static int get_int_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static float get_float_number (char *s)
{
uint8 i;
uint8 i = 0;
char buf[15];
float return_value;
float return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
@@ -151,9 +151,9 @@ static float get_float_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static double get_double_number (char *s)
{
uint8 i;
uint8 i = 0;
char buf[15];
double return_value;
double return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
@@ -172,10 +172,10 @@ static double get_double_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static void utc_to_btc (gps_time_struct *time)
{
uint8 day_num;
uint8 day_num = 0;
time->hour = time->hour + 8;
if(time->hour > 23)
if(23 < time->hour)
{
time->hour -= 24;
time->day += 1;
@@ -183,7 +183,7 @@ static void utc_to_btc (gps_time_struct *time)
if(2 == time->month)
{
day_num = 28;
if((time->year % 4 == 0 && time->year % 100 != 0) || time->year % 400 == 0) // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
if((0 == time->year % 4 && 0 != time->year % 100) || 0 == time->year % 400) // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
{
day_num ++; // <20><><EFBFBD><EFBFBD> 2<><32>Ϊ29<32><39>
}
@@ -201,7 +201,7 @@ static void utc_to_btc (gps_time_struct *time)
{
time->day = 1;
time->month ++;
if(time->month > 12)
if(12 < time->month)
{
time->month -= 12;
time->year ++;
@@ -220,21 +220,21 @@ static void utc_to_btc (gps_time_struct *time)
//-------------------------------------------------------------------------------------------------------------------
static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
{
uint8 state, temp;
uint8 state = 0, temp = 0;
double latitude; // γ<><CEB3>
double longitude; // <20><><EFBFBD><EFBFBD>
double latitude = 0; // γ<><CEB3>
double longitude = 0; // <20><><EFBFBD><EFBFBD>
float lati_cent_tmp, lati_second_tmp;
float long_cent_tmp, long_second_tmp;
float speed_tmp;
double lati_cent_tmp = 0, lati_second_tmp = 0;
double long_cent_tmp = 0, long_second_tmp = 0;
float speed_tmp = 0;
char *buf = line;
uint8 return_state = 0;
state = buf[get_parameter_index(2, buf)];
gps->state = 0;
if (state == 'A') // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if('A' == state) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return_state = 1;
gps->state = 1;
@@ -247,17 +247,17 @@ static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
gps->latitude_degree = (int)latitude / 100; // γ<><CEB3>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>
lati_cent_tmp = (latitude - gps->latitude_degree * 100);
gps->latitude_cent = (int)lati_cent_tmp;
lati_second_tmp = (lati_cent_tmp - gps->latitude_cent) * 10000;
lati_second_tmp = (lati_cent_tmp - gps->latitude_cent) * 6000;
gps->latitude_second = (int)lati_second_tmp;
gps->longitude_degree = (int)longitude / 100; // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>
long_cent_tmp = (longitude - gps->longitude_degree * 100);
gps->longitude_cent = (int)long_cent_tmp;
long_second_tmp = (long_cent_tmp - gps->longitude_cent) * 10000;
long_second_tmp = (long_cent_tmp - gps->longitude_cent) * 6000;
gps->longitude_second = (int)long_second_tmp;
gps->latitude = gps->latitude_degree + (double)gps->latitude_cent / 60 + (double)gps->latitude_second / 600000;
gps->longitude = gps->longitude_degree + (double)gps->longitude_cent / 60 + (double)gps->longitude_second / 600000;
gps->latitude = gps->latitude_degree + lati_cent_tmp / 60;
gps->longitude = gps->longitude_degree + long_cent_tmp / 60;
speed_tmp = get_float_number(&buf[get_parameter_index(7, buf)]); // <20>ٶ<EFBFBD>(<28><><EFBFBD><EFBFBD>/Сʱ)
gps->speed = speed_tmp * 1.85f; // ת<><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>/Сʱ
@@ -288,13 +288,13 @@ static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
//-------------------------------------------------------------------------------------------------------------------
static uint8 gps_gngga_parse (char *line, gps_info_struct *gps)
{
uint8 state;
uint8 state = 0;
char *buf = line;
uint8 return_state = 0;
state = buf[get_parameter_index(2, buf)];
if (state != ',')
if(',' != state)
{
gps->satellite_used = (uint8)get_int_number(&buf[get_parameter_index(7, buf)]);
gps->height = get_float_number(&buf[get_parameter_index(9, buf)]) + get_float_number(&buf[get_parameter_index(11, buf)]); // <20>߶<EFBFBD> = <20><><EFBFBD>θ߶<CEB8> + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ˮ׼<CBAE><D7BC><EFBFBD>ĸ߶<C4B8>
@@ -317,13 +317,13 @@ static uint8 gps_gngga_parse (char *line, gps_info_struct *gps)
double get_two_points_distance (double latitude1, double longitude1, double latitude2, double longitude2)
{
const double EARTH_RADIUS = 6378137; // <20><><EFBFBD><EFBFBD><EFBFBD>뾶(<28><>λ<EFBFBD><CEBB>m)
double rad_latitude1;
double rad_latitude2;
double rad_longitude1;
double rad_longitude2;
double distance;
double a;
double b;
double rad_latitude1 = 0;
double rad_latitude2 = 0;
double rad_longitude1 = 0;
double rad_longitude2 = 0;
double distance = 0;
double a = 0;
double b = 0;
rad_latitude1 = ANGLE_TO_RAD(latitude1); // <20><><EFBFBD>ݽǶȼ<C7B6><C8BC><EFBFBD><E3BBA1>
rad_latitude2 = ANGLE_TO_RAD(latitude2);
@@ -359,7 +359,7 @@ double get_two_points_azimuth (double latitude1, double longitude1, double latit
double x = sin(longitude2 - longitude1) * cos(latitude2);
double y = cos(latitude1) * sin(latitude2) - sin(latitude1) * cos(latitude2) * cos(longitude2 - longitude1);
double angle = RAD_TO_ANGLE(atan2(x, y));
return ((angle > 0) ? angle : (angle + 360));
return ((0 < angle) ? angle : (angle + 360));
}
//-------------------------------------------------------------------------------------------------------------------
@@ -375,16 +375,16 @@ uint8 gps_data_parse (void)
uint8 check_buffer[5] = {'0', 'x', 0x00, 0x00, 0x00};
uint8 bbc_xor_origin = 0;
uint8 bbc_xor_calculation = 0;
uint32 data_len;
uint32 data_len = 0;
do
{
if(GPS_STATE_RECEIVED == gps_rmc_state)
{
gps_rmc_state = GPS_STATE_PARSING;
strncpy((char *)&check_buffer[2], strchr((const char *)gps_rmc_buffer, '*')+1, 2);
strncpy((char *)&check_buffer[2], strchr((const char *)gps_rmc_buffer, '*') + 1, 2);
bbc_xor_origin = (uint8)func_str_to_hex((char *)check_buffer);
for(bbc_xor_calculation = gps_rmc_buffer[1], data_len = 2; gps_rmc_buffer[data_len] != '*'; data_len ++)
for(bbc_xor_calculation = gps_rmc_buffer[1], data_len = 2; '*' != gps_rmc_buffer[data_len]; data_len ++)
{
bbc_xor_calculation ^= gps_rmc_buffer[data_len];
}
@@ -402,10 +402,10 @@ uint8 gps_data_parse (void)
if(GPS_STATE_RECEIVED == gps_gga_state)
{
gps_gga_state = GPS_STATE_PARSING;
strncpy((char *)&check_buffer[2], strchr((const char *)gps_gga_buffer, '*')+1, 2);
strncpy((char *)&check_buffer[2], strchr((const char *)gps_gga_buffer, '*') + 1, 2);
bbc_xor_origin = (uint8)func_str_to_hex((char *)check_buffer);
for(bbc_xor_calculation = gps_gga_buffer[1], data_len = 2; gps_gga_buffer[data_len] != '*'; data_len ++)
for(bbc_xor_calculation = gps_gga_buffer[1], data_len = 2; '*' != gps_gga_buffer[data_len]; data_len ++)
{
bbc_xor_calculation ^= gps_gga_buffer[data_len];
}
@@ -435,7 +435,7 @@ uint8 gps_data_parse (void)
void gps_uart_callback (void)
{
uint8 temp_gps[6];
uint32 temp_length;
uint32 temp_length = 0;
if(gps_tau1201_state)
{
@@ -507,8 +507,7 @@ uint8 gps_init (void)
fifo_init(&gps_tau1201_receiver_fifo, FIFO_DATA_8BIT, gps_tau1201_receiver_buffer, GPS_TAU1201_BUFFER_SIZE);
system_delay_ms(500); // <20>ȴ<EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ʼ<EFBFBD><CABC>
uart_init(GPS_TAU1201_UART, 115200, GPS_TAU1201_RX, GPS_TAU1201_TX);
set_wireless_type(GPS_TAU1201, gps_uart_callback);
uart_rx_interrupt(GPS_TAU1201_UART, 0);
uart_write_buffer(GPS_TAU1201_UART, (uint8 *)set_rate, sizeof(set_rate)); // <20><><EFBFBD><EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ10hz <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ1hz
system_delay_ms(200);

View File

@@ -49,9 +49,9 @@
#include "zf_common_typedef.h"
//===============================================GPS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define GPS_TAU1201_UART (UART_2)
#define GPS_TAU1201_RX (UART2_TX_P10_5) // GPS RX<52><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>
#define GPS_TAU1201_TX (UART2_RX_P10_6) // GPS TX<54><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define GPS_TAU1201_UART (UART_3)
#define GPS_TAU1201_RX (UART3_TX_P15_6) // GPS RX<52><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>
#define GPS_TAU1201_TX (UART3_RX_P15_7) // GPS TX<54><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//===============================================GPS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define ANGLE_TO_RAD(x) ((x) * PI / 180.0) // <20>Ƕ<EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>

View File

@@ -137,8 +137,8 @@
//================================================<3D><><EFBFBD><EFBFBD> IMU963RA <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
//===============================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>===============================================
extern int16 imu963ra_acc_x, imu963ra_acc_y, imu963ra_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_gyro_x, imu963ra_gyro_y, imu963ra_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_gyro_x, imu963ra_gyro_y, imu963ra_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_acc_x, imu963ra_acc_y, imu963ra_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_mag_x, imu963ra_mag_y, imu963ra_mag_z; // <20><><EFBFBD><EFBFBD><EFBFBD>شż<D8B4><C5BC><EFBFBD><EFBFBD><EFBFBD>
//===============================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>===============================================

View File

@@ -1,10 +1,10 @@
/*********************************************************************************************************************
* MM32F327X-G9P Opensourec Library <20><><EFBFBD><EFBFBD>MM32F327X-G9P <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
*
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> MM32F327X-G9P <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
*
* MM32F327X-G9P <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD><EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>޸<EFBFBD><DEB8><EFBFBD>
*
@@ -24,13 +24,13 @@
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_key
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* <20><EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IAR 8.32.4 or MDK 5.37
* <20><><EFBFBD><EFBFBD>ƽ̨ MM32F327X_G9P
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.8.0
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-08-10 Teternal first version
* 2022-09-15 pudding first version
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -45,6 +45,7 @@
********************************************************************************************************************/
#include "zf_common_debug.h"
#include "zf_device_key.h"
static uint32 scanner_period = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -65,54 +66,21 @@ void key_scanner (void)
uint8 i = 0;
for(i = 0; i < KEY_NUMBER; i ++)
{
switch(key_state[i])
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i])) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
case KEY_RELEASE:
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i]))
{
if(++ key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
else
{
key_state[i] = KEY_CHECK_SHOCK;
}
}
break;
case KEY_CHECK_SHOCK:
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i]))
{
if(++ key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
}
else
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
case KEY_SHORT_PRESS:
if(++ key_press_time[i] >= KEY_LONG_PRESS_PERIOD / scanner_period)
{
key_state[i] = KEY_LONG_PRESS;
}
if(KEY_RELEASE_LEVEL == gpio_get_level(key_index[i]))
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
case KEY_LONG_PRESS:
if(KEY_RELEASE_LEVEL == gpio_get_level(key_index[i]))
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
key_press_time[i] ++;
if(key_press_time[i] >= KEY_LONG_PRESS_PERIOD / scanner_period)
{
key_state[i] = KEY_LONG_PRESS;
}
}
else // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
{
if(key_state[i] != KEY_LONG_PRESS && key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
key_press_time[i] = 0;
}
}
}
@@ -129,6 +97,33 @@ key_state_enum key_get_state (key_index_enum key_n)
return key_state[key_n];
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>״̬
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> key_n <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void <20><>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_clear_state(KEY_1);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void key_clear_state (key_index_enum key_n)
{
key_state[key_n] = KEY_RELEASE;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD>״̬
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void <20><>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void <20><>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_clear_all_state();
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void key_clear_all_state (void)
{
key_state[0] = KEY_RELEASE;
key_state[1] = KEY_RELEASE;
key_state[2] = KEY_RELEASE;
key_state[3] = KEY_RELEASE;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> period <20><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ժ<EFBFBD><D4BA><EFBFBD>Ϊ<EFBFBD><CEAA>λ
@@ -136,17 +131,14 @@ key_state_enum key_get_state (key_index_enum key_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_init(10);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
uint8 key_init (uint32 period)
void key_init (uint32 period)
{
zf_assert(0 < period);
uint8 loop_temp = 0;
zf_assert(0 < period); // ɨ<><C9A8><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
for(loop_temp = 0; loop_temp < KEY_NUMBER; loop_temp ++)
{
gpio_init(key_index[loop_temp], GPI, GPIO_HIGH, GPI_PULL_UP);
key_state[loop_temp] = KEY_RELEASE;
}
scanner_period = period;
return 0;
}

View File

@@ -1,10 +1,10 @@
/*********************************************************************************************************************
* MM32F327X-G9P Opensourec Library <20><><EFBFBD><EFBFBD>MM32F327X-G9P <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
*
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> MM32F327X-G9P <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
*
* MM32F327X-G9P <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD><EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>޸<EFBFBD><DEB8><EFBFBD>
*
@@ -24,13 +24,13 @@
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_key
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* <20><EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IAR 8.32.4 or MDK 5.37
* <20><><EFBFBD><EFBFBD>ƽ̨ MM32F327X_G9P
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.8.0
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-08-10 Teternal first version
* 2022-09-15 pudding first version
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -53,13 +53,12 @@
// <20><><EFBFBD><EFBFBD><E5B0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD> Ĭ<>϶<EFBFBD><CFB6><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><E5B0B4>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>Ӧ<EFBFBD>·<EFBFBD> key_index_enum ö<><C3B6><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3>
// <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ô<EFBFBD><C3B4>Ҫͬ<D2AA><CDAC><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD> key_index_enum ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define KEY_LIST {P22_0, P22_1, P22_2, P22_3}
#define KEY_LIST {P20_6, P20_7, P11_2, P11_3}
#define KEY_RELEASE_LEVEL (GPIO_HIGH) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>״̬ Ҳ<><D2B2><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ͷ<EFBFBD>״̬<D7B4>ĵ<EFBFBD>ƽ
#define KEY_MAX_SHOCK_PERIOD (10 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>źŻᱻ<C5BB><E1B1BB>Ϊ<EFBFBD><CEAA><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD>
#define KEY_LONG_PRESS_PERIOD (1000 ) // <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
#define KEY_LONG_PRESS_PERIOD (1000 ) // <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>źŻᱻ<C5BB><E1B1BB>Ϊ<EFBFBD>dz<EFBFBD><C7B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//=================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
typedef enum
{
KEY_1,
@@ -72,15 +71,14 @@ typedef enum
typedef enum
{
KEY_RELEASE, // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>״̬
KEY_CHECK_SHOCK, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
KEY_SHORT_PRESS, // <20><><EFBFBD><EFBFBD><EFBFBD>̰<EFBFBD>״̬
KEY_LONG_PRESS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
}key_state_enum;
//=================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
void key_scanner (void); // <20><><EFBFBD><EFBFBD>״̬ɨ<CCAC><C9A8>
key_state_enum key_get_state (key_index_enum key_n); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>״̬
uint8 key_init (uint32 period); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
void key_scanner (void);
key_state_enum key_get_state (key_index_enum key_n);
void key_clear_state (key_index_enum key_n);
void key_clear_all_state (void);
void key_init (uint32 period);
#endif

View File

@@ -60,7 +60,7 @@
// TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD>ڲɼ<DAB2><C9BC><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD> ʹ<>õ<EFBFBD><C3B5>ĸ<EFBFBD> PIT <20><>Ҫ<EFBFBD><D2AA> <20><><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD> PIT <20><><EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TSL1401_EXPOSURE_TIME (10 ) // <20><><EFBFBD><EFBFBD> TSL1401 <20>ع<EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ MS
#define TSL1401_PIT_INDEX (CCU60_CH0) // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
#define TSL1401_PIT_INDEX (CCU61_CH1) // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
#define TSL1401_AD_RESOLUTION (ADC_8BIT) // ADC <20><><EFBFBD><EFBFBD> 8bit
#define TSL1401_DATA_LEN (128 ) // TSL1401 <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
//=================================================TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================

View File

@@ -53,9 +53,7 @@ typedef enum
NO_WIRELESS = 0, // <20><><EFBFBD>
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
GPS_TAU1201,
WIFI_UART,
WIFI_SPI,
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
}wireless_type_enum;
//==============================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ö<><C3B6><EFBFBD><EFBFBD>==================================================

View File

@@ -40,7 +40,7 @@
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> systick<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱһ<CAB1>ֵ<EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3A8>λΪ<CEBB><CEAA><EFBFBD><EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-20000000<30><30>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> num <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
@@ -60,3 +60,25 @@ void system_delay (uint32 time, uint32 num)
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system ΢<><CEA2> <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱʱ<CAB1><CAB1> <20><>λ<EFBFBD><CEBB>us
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> system_delay_us(100); // <20><>ʱ100΢<30><CEA2>
//-------------------------------------------------------------------------------------------------------------------
void system_delay_us (uint32 time)
{
system_delay(time*1000, 1);
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system <20><><EFBFBD><EFBFBD> <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱʱ<CAB1><CAB1> <20><>λ<EFBFBD><CEBB>ms
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> system_delay_ms(100); // <20><>ʱ100<30><30><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void system_delay_ms (uint32 time)
{
system_delay(1000000, time);
}

View File

@@ -38,13 +38,10 @@
#include "zf_common_typedef.h"
void system_delay (uint32 time, uint32 num);
//====================================================<3D><>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define system_delay_ms(time) system_delay((1000000), (time)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λms
#define system_delay_us(time) system_delay((time*1000), (1)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λus
#define system_delay_ns(time) system_delay((time), (1)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λns
void system_delay (uint32 time, uint32 num);
void system_delay_us (uint32 time);
void system_delay_ms (uint32 time);
//====================================================<3D><>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================

View File

@@ -41,7 +41,6 @@ IFX_INTERRUPT(cc60_pit_ch0_isr, 0, CCU6_0_CH0_ISR_PRIORITY)
{
interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
pit_clear_flag(CCU60_CH0);
tsl1401_collect_pit_handler(); // <20><><EFBFBD><EFBFBD>CCD<43>ɼ<EFBFBD>
}
@@ -75,7 +74,6 @@ IFX_INTERRUPT(cc61_pit_ch1_isr, 0, CCU6_1_CH1_ISR_PRIORITY)
}
// **************************** PIT<49>жϺ<D0B6><CFBA><EFBFBD> ****************************
@@ -88,9 +86,6 @@ IFX_INTERRUPT(exti_ch0_ch4_isr, 0, EXTI_CH0_CH4_INT_PRIO)
{
exti_flag_clear(ERU_CH0_REQ0_P15_4);
}
if(exti_flag_get(ERU_CH4_REQ13_P15_5)) // ͨ<><CDA8>4<EFBFBD>ж<EFBFBD>
@@ -119,8 +114,6 @@ IFX_INTERRUPT(exti_ch1_ch5_isr, 0, EXTI_CH1_CH5_INT_PRIO)
exti_flag_clear(ERU_CH5_REQ1_P15_8);
}
}
@@ -263,7 +256,7 @@ IFX_INTERRUPT(uart3_rx_isr, 0, UART3_RX_INT_PRIO)
IfxAsclin_Asc_isrReceive(&uart3_handle);
gps_uart_callback();
}

View File

@@ -1,3 +1,7 @@
V3.1.6
<20>޸<EFBFBD>GPSʹ<53>ô<EFBFBD><C3B4>ںţ<DABA><C5A3>Ż<EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
isr.c<><63><EFBFBD>Ƴ<EFBFBD>CCD<43>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸İ<DEB8><C4B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>İ<EFBFBD><C4B0><EFBFBD><EFBFBD>˿ںţ<DABA><C5A3><EFBFBD><EFBFBD><EFBFBD>V2.6<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V3.1.5
<20>޸<EFBFBD>Ӳ<EFBFBD><D3B2>SPI<50><49>ʼ<EFBFBD><CABC>ʱѡ<CAB1><D1A1><EFBFBD><EFBFBD>CS<43><53><EFBFBD>ţ<EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD>ʼ<EFBFBD><CABC>Ĭ<EFBFBD><C4AC>CS<43><53><EFBFBD>ŵ<EFBFBD>bug
V3.1.4

View File

@@ -43,24 +43,25 @@
* ------------------------------------
********************************************************************************************************************/
#include "math.h"
#include "zf_common_function.h"
#include "zf_common_fifo.h"
#include "zf_driver_delay.h"
#include "zf_driver_uart.h"
#include "zf_device_type.h"
#include "zf_device_gps_tau1201.h"
#define GPS_TAU1201_BUFFER_SIZE (128)
#define GPS_TAU1201_BUFFER_SIZE ( 128 )
uint8 gps_tau1201_flag; // 1<><31><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɵȴ<C9B5><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30>û<EFBFBD>вɼ<D0B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
uint8 gps_tau1201_flag = 0; // 1<><31><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɵȴ<C9B5><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30>û<EFBFBD>вɼ<D0B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
gps_info_struct gps_tau1201; // GPS<50><53><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static uint8 gps_tau1201_state = 0; // 1<><31>GPS<50><53>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static fifo_struct gps_tau1201_receiver_fifo; //
static uint8 gps_tau1201_receiver_buffer[GPS_TAU1201_BUFFER_SIZE]; // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gps_state_enum gps_gga_state; // gga<67><61><EFBFBD><EFBFBD>״̬
gps_state_enum gps_rmc_state; // rmc<6D><63><EFBFBD><EFBFBD>״̬
gps_state_enum gps_gga_state = GPS_STATE_RECEIVING; // gga <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
gps_state_enum gps_rmc_state = GPS_STATE_RECEIVING; // rmc <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
static uint8 gps_gga_buffer[GPS_TAU1201_BUFFER_SIZE];
static uint8 gps_rmc_buffer[GPS_TAU1201_BUFFER_SIZE];
@@ -75,11 +76,10 @@ static uint8 gps_rmc_buffer[GPS_TAU1201_BUFFER_SIZE];
//-------------------------------------------------------------------------------------------------------------------
static uint8 get_parameter_index (uint8 num, char *str)
{
uint8 i, j = 0;
char *temp;
uint8 len = 0, len1;
uint8 i = 0, j = 0;
char *temp = strchr(str, '\n');
uint8 len = 0, len1 = 0;
temp = strchr(str, '\n');
if(NULL != temp)
{
len = (uint8)((uint32)temp - (uint32)str + 1);
@@ -87,7 +87,7 @@ static uint8 get_parameter_index (uint8 num, char *str)
for(i = 0; i < len; i ++)
{
if(str[i] == ',')
if(',' == str[i])
{
j ++;
}
@@ -111,8 +111,8 @@ static uint8 get_parameter_index (uint8 num, char *str)
static int get_int_number (char *s)
{
char buf[10];
uint8 i;
int return_value;
uint8 i = 0;
int return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
strncpy(buf, s, i);
@@ -130,9 +130,9 @@ static int get_int_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static float get_float_number (char *s)
{
uint8 i;
uint8 i = 0;
char buf[15];
float return_value;
float return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
@@ -151,9 +151,9 @@ static float get_float_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static double get_double_number (char *s)
{
uint8 i;
uint8 i = 0;
char buf[15];
double return_value;
double return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
@@ -172,10 +172,10 @@ static double get_double_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static void utc_to_btc (gps_time_struct *time)
{
uint8 day_num;
uint8 day_num = 0;
time->hour = time->hour + 8;
if(time->hour > 23)
if(23 < time->hour)
{
time->hour -= 24;
time->day += 1;
@@ -183,7 +183,7 @@ static void utc_to_btc (gps_time_struct *time)
if(2 == time->month)
{
day_num = 28;
if((time->year % 4 == 0 && time->year % 100 != 0) || time->year % 400 == 0) // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
if((0 == time->year % 4 && 0 != time->year % 100) || 0 == time->year % 400) // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
{
day_num ++; // <20><><EFBFBD><EFBFBD> 2<><32>Ϊ29<32><39>
}
@@ -201,7 +201,7 @@ static void utc_to_btc (gps_time_struct *time)
{
time->day = 1;
time->month ++;
if(time->month > 12)
if(12 < time->month)
{
time->month -= 12;
time->year ++;
@@ -220,21 +220,21 @@ static void utc_to_btc (gps_time_struct *time)
//-------------------------------------------------------------------------------------------------------------------
static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
{
uint8 state, temp;
uint8 state = 0, temp = 0;
double latitude; // γ<><CEB3>
double longitude; // <20><><EFBFBD><EFBFBD>
double latitude = 0; // γ<><CEB3>
double longitude = 0; // <20><><EFBFBD><EFBFBD>
float lati_cent_tmp, lati_second_tmp;
float long_cent_tmp, long_second_tmp;
float speed_tmp;
double lati_cent_tmp = 0, lati_second_tmp = 0;
double long_cent_tmp = 0, long_second_tmp = 0;
float speed_tmp = 0;
char *buf = line;
uint8 return_state = 0;
state = buf[get_parameter_index(2, buf)];
gps->state = 0;
if (state == 'A') // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if('A' == state) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return_state = 1;
gps->state = 1;
@@ -247,17 +247,17 @@ static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
gps->latitude_degree = (int)latitude / 100; // γ<><CEB3>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>
lati_cent_tmp = (latitude - gps->latitude_degree * 100);
gps->latitude_cent = (int)lati_cent_tmp;
lati_second_tmp = (lati_cent_tmp - gps->latitude_cent) * 10000;
lati_second_tmp = (lati_cent_tmp - gps->latitude_cent) * 6000;
gps->latitude_second = (int)lati_second_tmp;
gps->longitude_degree = (int)longitude / 100; // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>
long_cent_tmp = (longitude - gps->longitude_degree * 100);
gps->longitude_cent = (int)long_cent_tmp;
long_second_tmp = (long_cent_tmp - gps->longitude_cent) * 10000;
long_second_tmp = (long_cent_tmp - gps->longitude_cent) * 6000;
gps->longitude_second = (int)long_second_tmp;
gps->latitude = gps->latitude_degree + (double)gps->latitude_cent / 60 + (double)gps->latitude_second / 600000;
gps->longitude = gps->longitude_degree + (double)gps->longitude_cent / 60 + (double)gps->longitude_second / 600000;
gps->latitude = gps->latitude_degree + lati_cent_tmp / 60;
gps->longitude = gps->longitude_degree + long_cent_tmp / 60;
speed_tmp = get_float_number(&buf[get_parameter_index(7, buf)]); // <20>ٶ<EFBFBD>(<28><><EFBFBD><EFBFBD>/Сʱ)
gps->speed = speed_tmp * 1.85f; // ת<><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>/Сʱ
@@ -288,13 +288,13 @@ static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
//-------------------------------------------------------------------------------------------------------------------
static uint8 gps_gngga_parse (char *line, gps_info_struct *gps)
{
uint8 state;
uint8 state = 0;
char *buf = line;
uint8 return_state = 0;
state = buf[get_parameter_index(2, buf)];
if (state != ',')
if(',' != state)
{
gps->satellite_used = (uint8)get_int_number(&buf[get_parameter_index(7, buf)]);
gps->height = get_float_number(&buf[get_parameter_index(9, buf)]) + get_float_number(&buf[get_parameter_index(11, buf)]); // <20>߶<EFBFBD> = <20><><EFBFBD>θ߶<CEB8> + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ˮ׼<CBAE><D7BC><EFBFBD>ĸ߶<C4B8>
@@ -317,13 +317,13 @@ static uint8 gps_gngga_parse (char *line, gps_info_struct *gps)
double get_two_points_distance (double latitude1, double longitude1, double latitude2, double longitude2)
{
const double EARTH_RADIUS = 6378137; // <20><><EFBFBD><EFBFBD><EFBFBD>뾶(<28><>λ<EFBFBD><CEBB>m)
double rad_latitude1;
double rad_latitude2;
double rad_longitude1;
double rad_longitude2;
double distance;
double a;
double b;
double rad_latitude1 = 0;
double rad_latitude2 = 0;
double rad_longitude1 = 0;
double rad_longitude2 = 0;
double distance = 0;
double a = 0;
double b = 0;
rad_latitude1 = ANGLE_TO_RAD(latitude1); // <20><><EFBFBD>ݽǶȼ<C7B6><C8BC><EFBFBD><E3BBA1>
rad_latitude2 = ANGLE_TO_RAD(latitude2);
@@ -359,7 +359,7 @@ double get_two_points_azimuth (double latitude1, double longitude1, double latit
double x = sin(longitude2 - longitude1) * cos(latitude2);
double y = cos(latitude1) * sin(latitude2) - sin(latitude1) * cos(latitude2) * cos(longitude2 - longitude1);
double angle = RAD_TO_ANGLE(atan2(x, y));
return ((angle > 0) ? angle : (angle + 360));
return ((0 < angle) ? angle : (angle + 360));
}
//-------------------------------------------------------------------------------------------------------------------
@@ -375,16 +375,16 @@ uint8 gps_data_parse (void)
uint8 check_buffer[5] = {'0', 'x', 0x00, 0x00, 0x00};
uint8 bbc_xor_origin = 0;
uint8 bbc_xor_calculation = 0;
uint32 data_len;
uint32 data_len = 0;
do
{
if(GPS_STATE_RECEIVED == gps_rmc_state)
{
gps_rmc_state = GPS_STATE_PARSING;
strncpy((char *)&check_buffer[2], strchr((const char *)gps_rmc_buffer, '*')+1, 2);
strncpy((char *)&check_buffer[2], strchr((const char *)gps_rmc_buffer, '*') + 1, 2);
bbc_xor_origin = (uint8)func_str_to_hex((char *)check_buffer);
for(bbc_xor_calculation = gps_rmc_buffer[1], data_len = 2; gps_rmc_buffer[data_len] != '*'; data_len ++)
for(bbc_xor_calculation = gps_rmc_buffer[1], data_len = 2; '*' != gps_rmc_buffer[data_len]; data_len ++)
{
bbc_xor_calculation ^= gps_rmc_buffer[data_len];
}
@@ -402,10 +402,10 @@ uint8 gps_data_parse (void)
if(GPS_STATE_RECEIVED == gps_gga_state)
{
gps_gga_state = GPS_STATE_PARSING;
strncpy((char *)&check_buffer[2], strchr((const char *)gps_gga_buffer, '*')+1, 2);
strncpy((char *)&check_buffer[2], strchr((const char *)gps_gga_buffer, '*') + 1, 2);
bbc_xor_origin = (uint8)func_str_to_hex((char *)check_buffer);
for(bbc_xor_calculation = gps_gga_buffer[1], data_len = 2; gps_gga_buffer[data_len] != '*'; data_len ++)
for(bbc_xor_calculation = gps_gga_buffer[1], data_len = 2; '*' != gps_gga_buffer[data_len]; data_len ++)
{
bbc_xor_calculation ^= gps_gga_buffer[data_len];
}
@@ -435,7 +435,7 @@ uint8 gps_data_parse (void)
void gps_uart_callback (void)
{
uint8 temp_gps[6];
uint32 temp_length;
uint32 temp_length = 0;
if(gps_tau1201_state)
{
@@ -507,8 +507,7 @@ uint8 gps_init (void)
fifo_init(&gps_tau1201_receiver_fifo, FIFO_DATA_8BIT, gps_tau1201_receiver_buffer, GPS_TAU1201_BUFFER_SIZE);
system_delay_ms(500); // <20>ȴ<EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ʼ<EFBFBD><CABC>
uart_init(GPS_TAU1201_UART, 115200, GPS_TAU1201_RX, GPS_TAU1201_TX);
set_wireless_type(GPS_TAU1201, gps_uart_callback);
uart_rx_interrupt(GPS_TAU1201_UART, 0);
uart_write_buffer(GPS_TAU1201_UART, (uint8 *)set_rate, sizeof(set_rate)); // <20><><EFBFBD><EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ10hz <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ1hz
system_delay_ms(200);

View File

@@ -49,9 +49,9 @@
#include "zf_common_typedef.h"
//===============================================GPS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define GPS_TAU1201_UART (UART_2)
#define GPS_TAU1201_RX (UART2_TX_P10_5) // GPS RX<52><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>
#define GPS_TAU1201_TX (UART2_RX_P10_6) // GPS TX<54><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define GPS_TAU1201_UART (UART_3)
#define GPS_TAU1201_RX (UART3_TX_P15_6) // GPS RX<52><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>
#define GPS_TAU1201_TX (UART3_RX_P15_7) // GPS TX<54><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//===============================================GPS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define ANGLE_TO_RAD(x) ((x) * PI / 180.0) // <20>Ƕ<EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>

View File

@@ -137,8 +137,8 @@
//================================================<3D><><EFBFBD><EFBFBD> IMU963RA <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
//===============================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>===============================================
extern int16 imu963ra_acc_x, imu963ra_acc_y, imu963ra_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_gyro_x, imu963ra_gyro_y, imu963ra_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_gyro_x, imu963ra_gyro_y, imu963ra_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_acc_x, imu963ra_acc_y, imu963ra_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_mag_x, imu963ra_mag_y, imu963ra_mag_z; // <20><><EFBFBD><EFBFBD><EFBFBD>شż<D8B4><C5BC><EFBFBD><EFBFBD><EFBFBD>
//===============================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>===============================================

View File

@@ -1,10 +1,10 @@
/*********************************************************************************************************************
* MM32F327X-G9P Opensourec Library <20><><EFBFBD><EFBFBD>MM32F327X-G9P <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
*
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> MM32F327X-G9P <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
*
* MM32F327X-G9P <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD><EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>޸<EFBFBD><DEB8><EFBFBD>
*
@@ -24,13 +24,13 @@
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_key
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* <20><EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IAR 8.32.4 or MDK 5.37
* <20><><EFBFBD><EFBFBD>ƽ̨ MM32F327X_G9P
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.8.0
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-08-10 Teternal first version
* 2022-09-15 pudding first version
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -45,6 +45,7 @@
********************************************************************************************************************/
#include "zf_common_debug.h"
#include "zf_device_key.h"
static uint32 scanner_period = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -65,54 +66,21 @@ void key_scanner (void)
uint8 i = 0;
for(i = 0; i < KEY_NUMBER; i ++)
{
switch(key_state[i])
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i])) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
case KEY_RELEASE:
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i]))
{
if(++ key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
else
{
key_state[i] = KEY_CHECK_SHOCK;
}
}
break;
case KEY_CHECK_SHOCK:
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i]))
{
if(++ key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
}
else
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
case KEY_SHORT_PRESS:
if(++ key_press_time[i] >= KEY_LONG_PRESS_PERIOD / scanner_period)
{
key_state[i] = KEY_LONG_PRESS;
}
if(KEY_RELEASE_LEVEL == gpio_get_level(key_index[i]))
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
case KEY_LONG_PRESS:
if(KEY_RELEASE_LEVEL == gpio_get_level(key_index[i]))
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
key_press_time[i] ++;
if(key_press_time[i] >= KEY_LONG_PRESS_PERIOD / scanner_period)
{
key_state[i] = KEY_LONG_PRESS;
}
}
else // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
{
if(key_state[i] != KEY_LONG_PRESS && key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
key_press_time[i] = 0;
}
}
}
@@ -129,6 +97,33 @@ key_state_enum key_get_state (key_index_enum key_n)
return key_state[key_n];
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>״̬
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> key_n <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void <20><>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_clear_state(KEY_1);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void key_clear_state (key_index_enum key_n)
{
key_state[key_n] = KEY_RELEASE;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD>״̬
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void <20><>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void <20><>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_clear_all_state();
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void key_clear_all_state (void)
{
key_state[0] = KEY_RELEASE;
key_state[1] = KEY_RELEASE;
key_state[2] = KEY_RELEASE;
key_state[3] = KEY_RELEASE;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> period <20><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ժ<EFBFBD><D4BA><EFBFBD>Ϊ<EFBFBD><CEAA>λ
@@ -136,17 +131,14 @@ key_state_enum key_get_state (key_index_enum key_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_init(10);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
uint8 key_init (uint32 period)
void key_init (uint32 period)
{
zf_assert(0 < period);
uint8 loop_temp = 0;
zf_assert(0 < period); // ɨ<><C9A8><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
for(loop_temp = 0; loop_temp < KEY_NUMBER; loop_temp ++)
{
gpio_init(key_index[loop_temp], GPI, GPIO_HIGH, GPI_PULL_UP);
key_state[loop_temp] = KEY_RELEASE;
}
scanner_period = period;
return 0;
}

View File

@@ -1,10 +1,10 @@
/*********************************************************************************************************************
* MM32F327X-G9P Opensourec Library <20><><EFBFBD><EFBFBD>MM32F327X-G9P <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
*
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> MM32F327X-G9P <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
*
* MM32F327X-G9P <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD><EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>޸<EFBFBD><DEB8><EFBFBD>
*
@@ -24,13 +24,13 @@
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_key
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* <20><EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IAR 8.32.4 or MDK 5.37
* <20><><EFBFBD><EFBFBD>ƽ̨ MM32F327X_G9P
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.8.0
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-08-10 Teternal first version
* 2022-09-15 pudding first version
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -53,13 +53,12 @@
// <20><><EFBFBD><EFBFBD><E5B0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD> Ĭ<>϶<EFBFBD><CFB6><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><E5B0B4>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>Ӧ<EFBFBD>·<EFBFBD> key_index_enum ö<><C3B6><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3>
// <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ô<EFBFBD><C3B4>Ҫͬ<D2AA><CDAC><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD> key_index_enum ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define KEY_LIST {P22_0, P22_1, P22_2, P22_3}
#define KEY_LIST {P20_6, P20_7, P11_2, P11_3}
#define KEY_RELEASE_LEVEL (GPIO_HIGH) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>״̬ Ҳ<><D2B2><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ͷ<EFBFBD>״̬<D7B4>ĵ<EFBFBD>ƽ
#define KEY_MAX_SHOCK_PERIOD (10 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>źŻᱻ<C5BB><E1B1BB>Ϊ<EFBFBD><CEAA><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD>
#define KEY_LONG_PRESS_PERIOD (1000 ) // <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
#define KEY_LONG_PRESS_PERIOD (1000 ) // <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>źŻᱻ<C5BB><E1B1BB>Ϊ<EFBFBD>dz<EFBFBD><C7B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//=================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
typedef enum
{
KEY_1,
@@ -72,15 +71,14 @@ typedef enum
typedef enum
{
KEY_RELEASE, // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>״̬
KEY_CHECK_SHOCK, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
KEY_SHORT_PRESS, // <20><><EFBFBD><EFBFBD><EFBFBD>̰<EFBFBD>״̬
KEY_LONG_PRESS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
}key_state_enum;
//=================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
void key_scanner (void); // <20><><EFBFBD><EFBFBD>״̬ɨ<CCAC><C9A8>
key_state_enum key_get_state (key_index_enum key_n); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>״̬
uint8 key_init (uint32 period); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
void key_scanner (void);
key_state_enum key_get_state (key_index_enum key_n);
void key_clear_state (key_index_enum key_n);
void key_clear_all_state (void);
void key_init (uint32 period);
#endif

View File

@@ -60,7 +60,7 @@
// TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD>ڲɼ<DAB2><C9BC><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD> ʹ<>õ<EFBFBD><C3B5>ĸ<EFBFBD> PIT <20><>Ҫ<EFBFBD><D2AA> <20><><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD> PIT <20><><EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TSL1401_EXPOSURE_TIME (10 ) // <20><><EFBFBD><EFBFBD> TSL1401 <20>ع<EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ MS
#define TSL1401_PIT_INDEX (CCU60_CH0) // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
#define TSL1401_PIT_INDEX (CCU61_CH1) // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
#define TSL1401_AD_RESOLUTION (ADC_8BIT) // ADC <20><><EFBFBD><EFBFBD> 8bit
#define TSL1401_DATA_LEN (128 ) // TSL1401 <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
//=================================================TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================

View File

@@ -53,9 +53,7 @@ typedef enum
NO_WIRELESS = 0, // <20><><EFBFBD>
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
GPS_TAU1201,
WIFI_UART,
WIFI_SPI,
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
}wireless_type_enum;
//==============================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ö<><C3B6><EFBFBD><EFBFBD>==================================================

View File

@@ -40,7 +40,7 @@
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> systick<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱһ<CAB1>ֵ<EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3A8>λΪ<CEBB><CEAA><EFBFBD><EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-20000000<30><30>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> num <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
@@ -60,3 +60,25 @@ void system_delay (uint32 time, uint32 num)
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system ΢<><CEA2> <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱʱ<CAB1><CAB1> <20><>λ<EFBFBD><CEBB>us
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> system_delay_us(100); // <20><>ʱ100΢<30><CEA2>
//-------------------------------------------------------------------------------------------------------------------
void system_delay_us (uint32 time)
{
system_delay(time*1000, 1);
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system <20><><EFBFBD><EFBFBD> <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱʱ<CAB1><CAB1> <20><>λ<EFBFBD><CEBB>ms
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> system_delay_ms(100); // <20><>ʱ100<30><30><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void system_delay_ms (uint32 time)
{
system_delay(1000000, time);
}

View File

@@ -38,13 +38,10 @@
#include "zf_common_typedef.h"
void system_delay (uint32 time, uint32 num);
//====================================================<3D><>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define system_delay_ms(time) system_delay((1000000), (time)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λms
#define system_delay_us(time) system_delay((time*1000), (1)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λus
#define system_delay_ns(time) system_delay((time), (1)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λns
void system_delay (uint32 time, uint32 num);
void system_delay_us (uint32 time);
void system_delay_ms (uint32 time);
//====================================================<3D><>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================

View File

@@ -41,7 +41,6 @@ IFX_INTERRUPT(cc60_pit_ch0_isr, 0, CCU6_0_CH0_ISR_PRIORITY)
{
interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
pit_clear_flag(CCU60_CH0);
tsl1401_collect_pit_handler(); // <20><><EFBFBD><EFBFBD>CCD<43>ɼ<EFBFBD>
}
@@ -75,7 +74,6 @@ IFX_INTERRUPT(cc61_pit_ch1_isr, 0, CCU6_1_CH1_ISR_PRIORITY)
}
// **************************** PIT<49>жϺ<D0B6><CFBA><EFBFBD> ****************************
@@ -88,9 +86,6 @@ IFX_INTERRUPT(exti_ch0_ch4_isr, 0, EXTI_CH0_CH4_INT_PRIO)
{
exti_flag_clear(ERU_CH0_REQ0_P15_4);
}
if(exti_flag_get(ERU_CH4_REQ13_P15_5)) // ͨ<><CDA8>4<EFBFBD>ж<EFBFBD>
@@ -119,8 +114,6 @@ IFX_INTERRUPT(exti_ch1_ch5_isr, 0, EXTI_CH1_CH5_INT_PRIO)
exti_flag_clear(ERU_CH5_REQ1_P15_8);
}
}
@@ -175,7 +168,16 @@ IFX_INTERRUPT(uart0_tx_isr, 0, UART0_TX_INT_PRIO)
}
//IFX_INTERRUPT(uart0_rx_isr, 0, UART0_RX_INT_PRIO)
//{
// interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
// IfxAsclin_Asc_isrReceive(&uart0_handle);
//
//#if DEBUG_UART_USE_INTERRUPT // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> debug <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
// debug_interrupr_handler(); // <20><><EFBFBD><EFBFBD> debug <20><><EFBFBD>ڽ<EFBFBD><DABD>մ<EFBFBD><D5B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ݻᱻ debug <20><><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ
//#endif // <20><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD> DEBUG_UART_INDEX <20><><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD>Ӧ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>ж<EFBFBD>ȥ
//
//}
IFX_INTERRUPT(uart0_er_isr, 0, UART0_ER_INT_PRIO)
{
interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
@@ -254,7 +256,7 @@ IFX_INTERRUPT(uart3_rx_isr, 0, UART3_RX_INT_PRIO)
IfxAsclin_Asc_isrReceive(&uart3_handle);
gps_uart_callback();
}

View File

@@ -1,3 +1,7 @@
V3.1.6
<20>޸<EFBFBD>GPSʹ<53>ô<EFBFBD><C3B4>ںţ<DABA><C5A3>Ż<EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
isr.c<><63><EFBFBD>Ƴ<EFBFBD>CCD<43>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸İ<DEB8><C4B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>İ<EFBFBD><C4B0><EFBFBD><EFBFBD>˿ںţ<DABA><C5A3><EFBFBD><EFBFBD><EFBFBD>V2.6<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V3.1.5
<20>޸<EFBFBD>Ӳ<EFBFBD><D3B2>SPI<50><49>ʼ<EFBFBD><CABC>ʱѡ<CAB1><D1A1><EFBFBD><EFBFBD>CS<43><53><EFBFBD>ţ<EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD>ʼ<EFBFBD><CABC>Ĭ<EFBFBD><C4AC>CS<43><53><EFBFBD>ŵ<EFBFBD>bug
V3.1.4

View File

@@ -43,24 +43,25 @@
* ------------------------------------
********************************************************************************************************************/
#include "math.h"
#include "zf_common_function.h"
#include "zf_common_fifo.h"
#include "zf_driver_delay.h"
#include "zf_driver_uart.h"
#include "zf_device_type.h"
#include "zf_device_gps_tau1201.h"
#define GPS_TAU1201_BUFFER_SIZE (128)
#define GPS_TAU1201_BUFFER_SIZE ( 128 )
uint8 gps_tau1201_flag; // 1<><31><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɵȴ<C9B5><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30>û<EFBFBD>вɼ<D0B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
uint8 gps_tau1201_flag = 0; // 1<><31><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɵȴ<C9B5><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30>û<EFBFBD>вɼ<D0B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
gps_info_struct gps_tau1201; // GPS<50><53><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static uint8 gps_tau1201_state = 0; // 1<><31>GPS<50><53>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static fifo_struct gps_tau1201_receiver_fifo; //
static uint8 gps_tau1201_receiver_buffer[GPS_TAU1201_BUFFER_SIZE]; // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gps_state_enum gps_gga_state; // gga<67><61><EFBFBD><EFBFBD>״̬
gps_state_enum gps_rmc_state; // rmc<6D><63><EFBFBD><EFBFBD>״̬
gps_state_enum gps_gga_state = GPS_STATE_RECEIVING; // gga <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
gps_state_enum gps_rmc_state = GPS_STATE_RECEIVING; // rmc <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
static uint8 gps_gga_buffer[GPS_TAU1201_BUFFER_SIZE];
static uint8 gps_rmc_buffer[GPS_TAU1201_BUFFER_SIZE];
@@ -75,11 +76,10 @@ static uint8 gps_rmc_buffer[GPS_TAU1201_BUFFER_SIZE];
//-------------------------------------------------------------------------------------------------------------------
static uint8 get_parameter_index (uint8 num, char *str)
{
uint8 i, j = 0;
char *temp;
uint8 len = 0, len1;
uint8 i = 0, j = 0;
char *temp = strchr(str, '\n');
uint8 len = 0, len1 = 0;
temp = strchr(str, '\n');
if(NULL != temp)
{
len = (uint8)((uint32)temp - (uint32)str + 1);
@@ -87,7 +87,7 @@ static uint8 get_parameter_index (uint8 num, char *str)
for(i = 0; i < len; i ++)
{
if(str[i] == ',')
if(',' == str[i])
{
j ++;
}
@@ -111,8 +111,8 @@ static uint8 get_parameter_index (uint8 num, char *str)
static int get_int_number (char *s)
{
char buf[10];
uint8 i;
int return_value;
uint8 i = 0;
int return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
strncpy(buf, s, i);
@@ -130,9 +130,9 @@ static int get_int_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static float get_float_number (char *s)
{
uint8 i;
uint8 i = 0;
char buf[15];
float return_value;
float return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
@@ -151,9 +151,9 @@ static float get_float_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static double get_double_number (char *s)
{
uint8 i;
uint8 i = 0;
char buf[15];
double return_value;
double return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
@@ -172,10 +172,10 @@ static double get_double_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static void utc_to_btc (gps_time_struct *time)
{
uint8 day_num;
uint8 day_num = 0;
time->hour = time->hour + 8;
if(time->hour > 23)
if(23 < time->hour)
{
time->hour -= 24;
time->day += 1;
@@ -183,7 +183,7 @@ static void utc_to_btc (gps_time_struct *time)
if(2 == time->month)
{
day_num = 28;
if((time->year % 4 == 0 && time->year % 100 != 0) || time->year % 400 == 0) // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
if((0 == time->year % 4 && 0 != time->year % 100) || 0 == time->year % 400) // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
{
day_num ++; // <20><><EFBFBD><EFBFBD> 2<><32>Ϊ29<32><39>
}
@@ -201,7 +201,7 @@ static void utc_to_btc (gps_time_struct *time)
{
time->day = 1;
time->month ++;
if(time->month > 12)
if(12 < time->month)
{
time->month -= 12;
time->year ++;
@@ -220,21 +220,21 @@ static void utc_to_btc (gps_time_struct *time)
//-------------------------------------------------------------------------------------------------------------------
static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
{
uint8 state, temp;
uint8 state = 0, temp = 0;
double latitude; // γ<><CEB3>
double longitude; // <20><><EFBFBD><EFBFBD>
double latitude = 0; // γ<><CEB3>
double longitude = 0; // <20><><EFBFBD><EFBFBD>
float lati_cent_tmp, lati_second_tmp;
float long_cent_tmp, long_second_tmp;
float speed_tmp;
double lati_cent_tmp = 0, lati_second_tmp = 0;
double long_cent_tmp = 0, long_second_tmp = 0;
float speed_tmp = 0;
char *buf = line;
uint8 return_state = 0;
state = buf[get_parameter_index(2, buf)];
gps->state = 0;
if (state == 'A') // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if('A' == state) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return_state = 1;
gps->state = 1;
@@ -247,17 +247,17 @@ static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
gps->latitude_degree = (int)latitude / 100; // γ<><CEB3>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>
lati_cent_tmp = (latitude - gps->latitude_degree * 100);
gps->latitude_cent = (int)lati_cent_tmp;
lati_second_tmp = (lati_cent_tmp - gps->latitude_cent) * 10000;
lati_second_tmp = (lati_cent_tmp - gps->latitude_cent) * 6000;
gps->latitude_second = (int)lati_second_tmp;
gps->longitude_degree = (int)longitude / 100; // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>
long_cent_tmp = (longitude - gps->longitude_degree * 100);
gps->longitude_cent = (int)long_cent_tmp;
long_second_tmp = (long_cent_tmp - gps->longitude_cent) * 10000;
long_second_tmp = (long_cent_tmp - gps->longitude_cent) * 6000;
gps->longitude_second = (int)long_second_tmp;
gps->latitude = gps->latitude_degree + (double)gps->latitude_cent / 60 + (double)gps->latitude_second / 600000;
gps->longitude = gps->longitude_degree + (double)gps->longitude_cent / 60 + (double)gps->longitude_second / 600000;
gps->latitude = gps->latitude_degree + lati_cent_tmp / 60;
gps->longitude = gps->longitude_degree + long_cent_tmp / 60;
speed_tmp = get_float_number(&buf[get_parameter_index(7, buf)]); // <20>ٶ<EFBFBD>(<28><><EFBFBD><EFBFBD>/Сʱ)
gps->speed = speed_tmp * 1.85f; // ת<><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>/Сʱ
@@ -288,13 +288,13 @@ static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
//-------------------------------------------------------------------------------------------------------------------
static uint8 gps_gngga_parse (char *line, gps_info_struct *gps)
{
uint8 state;
uint8 state = 0;
char *buf = line;
uint8 return_state = 0;
state = buf[get_parameter_index(2, buf)];
if (state != ',')
if(',' != state)
{
gps->satellite_used = (uint8)get_int_number(&buf[get_parameter_index(7, buf)]);
gps->height = get_float_number(&buf[get_parameter_index(9, buf)]) + get_float_number(&buf[get_parameter_index(11, buf)]); // <20>߶<EFBFBD> = <20><><EFBFBD>θ߶<CEB8> + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ˮ׼<CBAE><D7BC><EFBFBD>ĸ߶<C4B8>
@@ -317,13 +317,13 @@ static uint8 gps_gngga_parse (char *line, gps_info_struct *gps)
double get_two_points_distance (double latitude1, double longitude1, double latitude2, double longitude2)
{
const double EARTH_RADIUS = 6378137; // <20><><EFBFBD><EFBFBD><EFBFBD>뾶(<28><>λ<EFBFBD><CEBB>m)
double rad_latitude1;
double rad_latitude2;
double rad_longitude1;
double rad_longitude2;
double distance;
double a;
double b;
double rad_latitude1 = 0;
double rad_latitude2 = 0;
double rad_longitude1 = 0;
double rad_longitude2 = 0;
double distance = 0;
double a = 0;
double b = 0;
rad_latitude1 = ANGLE_TO_RAD(latitude1); // <20><><EFBFBD>ݽǶȼ<C7B6><C8BC><EFBFBD><E3BBA1>
rad_latitude2 = ANGLE_TO_RAD(latitude2);
@@ -359,7 +359,7 @@ double get_two_points_azimuth (double latitude1, double longitude1, double latit
double x = sin(longitude2 - longitude1) * cos(latitude2);
double y = cos(latitude1) * sin(latitude2) - sin(latitude1) * cos(latitude2) * cos(longitude2 - longitude1);
double angle = RAD_TO_ANGLE(atan2(x, y));
return ((angle > 0) ? angle : (angle + 360));
return ((0 < angle) ? angle : (angle + 360));
}
//-------------------------------------------------------------------------------------------------------------------
@@ -375,16 +375,16 @@ uint8 gps_data_parse (void)
uint8 check_buffer[5] = {'0', 'x', 0x00, 0x00, 0x00};
uint8 bbc_xor_origin = 0;
uint8 bbc_xor_calculation = 0;
uint32 data_len;
uint32 data_len = 0;
do
{
if(GPS_STATE_RECEIVED == gps_rmc_state)
{
gps_rmc_state = GPS_STATE_PARSING;
strncpy((char *)&check_buffer[2], strchr((const char *)gps_rmc_buffer, '*')+1, 2);
strncpy((char *)&check_buffer[2], strchr((const char *)gps_rmc_buffer, '*') + 1, 2);
bbc_xor_origin = (uint8)func_str_to_hex((char *)check_buffer);
for(bbc_xor_calculation = gps_rmc_buffer[1], data_len = 2; gps_rmc_buffer[data_len] != '*'; data_len ++)
for(bbc_xor_calculation = gps_rmc_buffer[1], data_len = 2; '*' != gps_rmc_buffer[data_len]; data_len ++)
{
bbc_xor_calculation ^= gps_rmc_buffer[data_len];
}
@@ -402,10 +402,10 @@ uint8 gps_data_parse (void)
if(GPS_STATE_RECEIVED == gps_gga_state)
{
gps_gga_state = GPS_STATE_PARSING;
strncpy((char *)&check_buffer[2], strchr((const char *)gps_gga_buffer, '*')+1, 2);
strncpy((char *)&check_buffer[2], strchr((const char *)gps_gga_buffer, '*') + 1, 2);
bbc_xor_origin = (uint8)func_str_to_hex((char *)check_buffer);
for(bbc_xor_calculation = gps_gga_buffer[1], data_len = 2; gps_gga_buffer[data_len] != '*'; data_len ++)
for(bbc_xor_calculation = gps_gga_buffer[1], data_len = 2; '*' != gps_gga_buffer[data_len]; data_len ++)
{
bbc_xor_calculation ^= gps_gga_buffer[data_len];
}
@@ -435,7 +435,7 @@ uint8 gps_data_parse (void)
void gps_uart_callback (void)
{
uint8 temp_gps[6];
uint32 temp_length;
uint32 temp_length = 0;
if(gps_tau1201_state)
{
@@ -507,8 +507,7 @@ uint8 gps_init (void)
fifo_init(&gps_tau1201_receiver_fifo, FIFO_DATA_8BIT, gps_tau1201_receiver_buffer, GPS_TAU1201_BUFFER_SIZE);
system_delay_ms(500); // <20>ȴ<EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ʼ<EFBFBD><CABC>
uart_init(GPS_TAU1201_UART, 115200, GPS_TAU1201_RX, GPS_TAU1201_TX);
set_wireless_type(GPS_TAU1201, gps_uart_callback);
uart_rx_interrupt(GPS_TAU1201_UART, 0);
uart_write_buffer(GPS_TAU1201_UART, (uint8 *)set_rate, sizeof(set_rate)); // <20><><EFBFBD><EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ10hz <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ1hz
system_delay_ms(200);

View File

@@ -49,9 +49,9 @@
#include "zf_common_typedef.h"
//===============================================GPS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define GPS_TAU1201_UART (UART_2)
#define GPS_TAU1201_RX (UART2_TX_P10_5) // GPS RX<52><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>
#define GPS_TAU1201_TX (UART2_RX_P10_6) // GPS TX<54><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define GPS_TAU1201_UART (UART_3)
#define GPS_TAU1201_RX (UART3_TX_P15_6) // GPS RX<52><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>
#define GPS_TAU1201_TX (UART3_RX_P15_7) // GPS TX<54><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//===============================================GPS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define ANGLE_TO_RAD(x) ((x) * PI / 180.0) // <20>Ƕ<EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>

View File

@@ -137,8 +137,8 @@
//================================================<3D><><EFBFBD><EFBFBD> IMU963RA <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
//===============================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>===============================================
extern int16 imu963ra_acc_x, imu963ra_acc_y, imu963ra_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_gyro_x, imu963ra_gyro_y, imu963ra_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_gyro_x, imu963ra_gyro_y, imu963ra_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_acc_x, imu963ra_acc_y, imu963ra_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_mag_x, imu963ra_mag_y, imu963ra_mag_z; // <20><><EFBFBD><EFBFBD><EFBFBD>شż<D8B4><C5BC><EFBFBD><EFBFBD><EFBFBD>
//===============================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>===============================================

View File

@@ -1,10 +1,10 @@
/*********************************************************************************************************************
* MM32F327X-G9P Opensourec Library <20><><EFBFBD><EFBFBD>MM32F327X-G9P <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
*
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> MM32F327X-G9P <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
*
* MM32F327X-G9P <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD><EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>޸<EFBFBD><DEB8><EFBFBD>
*
@@ -24,13 +24,13 @@
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_key
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* <20><EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IAR 8.32.4 or MDK 5.37
* <20><><EFBFBD><EFBFBD>ƽ̨ MM32F327X_G9P
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.8.0
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-08-10 Teternal first version
* 2022-09-15 pudding first version
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -45,6 +45,7 @@
********************************************************************************************************************/
#include "zf_common_debug.h"
#include "zf_device_key.h"
static uint32 scanner_period = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -65,54 +66,21 @@ void key_scanner (void)
uint8 i = 0;
for(i = 0; i < KEY_NUMBER; i ++)
{
switch(key_state[i])
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i])) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
case KEY_RELEASE:
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i]))
{
if(++ key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
else
{
key_state[i] = KEY_CHECK_SHOCK;
}
}
break;
case KEY_CHECK_SHOCK:
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i]))
{
if(++ key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
}
else
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
case KEY_SHORT_PRESS:
if(++ key_press_time[i] >= KEY_LONG_PRESS_PERIOD / scanner_period)
{
key_state[i] = KEY_LONG_PRESS;
}
if(KEY_RELEASE_LEVEL == gpio_get_level(key_index[i]))
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
case KEY_LONG_PRESS:
if(KEY_RELEASE_LEVEL == gpio_get_level(key_index[i]))
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
key_press_time[i] ++;
if(key_press_time[i] >= KEY_LONG_PRESS_PERIOD / scanner_period)
{
key_state[i] = KEY_LONG_PRESS;
}
}
else // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
{
if(key_state[i] != KEY_LONG_PRESS && key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
key_press_time[i] = 0;
}
}
}
@@ -129,6 +97,33 @@ key_state_enum key_get_state (key_index_enum key_n)
return key_state[key_n];
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>״̬
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> key_n <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void <20><>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_clear_state(KEY_1);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void key_clear_state (key_index_enum key_n)
{
key_state[key_n] = KEY_RELEASE;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD>״̬
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void <20><>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void <20><>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_clear_all_state();
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void key_clear_all_state (void)
{
key_state[0] = KEY_RELEASE;
key_state[1] = KEY_RELEASE;
key_state[2] = KEY_RELEASE;
key_state[3] = KEY_RELEASE;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> period <20><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ժ<EFBFBD><D4BA><EFBFBD>Ϊ<EFBFBD><CEAA>λ
@@ -136,17 +131,14 @@ key_state_enum key_get_state (key_index_enum key_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_init(10);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
uint8 key_init (uint32 period)
void key_init (uint32 period)
{
zf_assert(0 < period);
uint8 loop_temp = 0;
zf_assert(0 < period); // ɨ<><C9A8><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
for(loop_temp = 0; loop_temp < KEY_NUMBER; loop_temp ++)
{
gpio_init(key_index[loop_temp], GPI, GPIO_HIGH, GPI_PULL_UP);
key_state[loop_temp] = KEY_RELEASE;
}
scanner_period = period;
return 0;
}

View File

@@ -1,10 +1,10 @@
/*********************************************************************************************************************
* MM32F327X-G9P Opensourec Library <20><><EFBFBD><EFBFBD>MM32F327X-G9P <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
*
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> MM32F327X-G9P <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
*
* MM32F327X-G9P <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD><EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>޸<EFBFBD><DEB8><EFBFBD>
*
@@ -24,13 +24,13 @@
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_key
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* <20><EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IAR 8.32.4 or MDK 5.37
* <20><><EFBFBD><EFBFBD>ƽ̨ MM32F327X_G9P
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.8.0
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-08-10 Teternal first version
* 2022-09-15 pudding first version
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -53,13 +53,12 @@
// <20><><EFBFBD><EFBFBD><E5B0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD> Ĭ<>϶<EFBFBD><CFB6><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><E5B0B4>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>Ӧ<EFBFBD>·<EFBFBD> key_index_enum ö<><C3B6><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3>
// <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ô<EFBFBD><C3B4>Ҫͬ<D2AA><CDAC><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD> key_index_enum ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define KEY_LIST {P22_0, P22_1, P22_2, P22_3}
#define KEY_LIST {P20_6, P20_7, P11_2, P11_3}
#define KEY_RELEASE_LEVEL (GPIO_HIGH) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>״̬ Ҳ<><D2B2><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ͷ<EFBFBD>״̬<D7B4>ĵ<EFBFBD>ƽ
#define KEY_MAX_SHOCK_PERIOD (10 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>źŻᱻ<C5BB><E1B1BB>Ϊ<EFBFBD><CEAA><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD>
#define KEY_LONG_PRESS_PERIOD (1000 ) // <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
#define KEY_LONG_PRESS_PERIOD (1000 ) // <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>źŻᱻ<C5BB><E1B1BB>Ϊ<EFBFBD>dz<EFBFBD><C7B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//=================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
typedef enum
{
KEY_1,
@@ -72,15 +71,14 @@ typedef enum
typedef enum
{
KEY_RELEASE, // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>״̬
KEY_CHECK_SHOCK, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
KEY_SHORT_PRESS, // <20><><EFBFBD><EFBFBD><EFBFBD>̰<EFBFBD>״̬
KEY_LONG_PRESS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
}key_state_enum;
//=================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
void key_scanner (void); // <20><><EFBFBD><EFBFBD>״̬ɨ<CCAC><C9A8>
key_state_enum key_get_state (key_index_enum key_n); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>״̬
uint8 key_init (uint32 period); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
void key_scanner (void);
key_state_enum key_get_state (key_index_enum key_n);
void key_clear_state (key_index_enum key_n);
void key_clear_all_state (void);
void key_init (uint32 period);
#endif

View File

@@ -60,7 +60,7 @@
// TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD>ڲɼ<DAB2><C9BC><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD> ʹ<>õ<EFBFBD><C3B5>ĸ<EFBFBD> PIT <20><>Ҫ<EFBFBD><D2AA> <20><><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD> PIT <20><><EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TSL1401_EXPOSURE_TIME (10 ) // <20><><EFBFBD><EFBFBD> TSL1401 <20>ع<EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ MS
#define TSL1401_PIT_INDEX (CCU60_CH0) // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
#define TSL1401_PIT_INDEX (CCU61_CH1) // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
#define TSL1401_AD_RESOLUTION (ADC_8BIT) // ADC <20><><EFBFBD><EFBFBD> 8bit
#define TSL1401_DATA_LEN (128 ) // TSL1401 <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
//=================================================TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================

View File

@@ -53,9 +53,7 @@ typedef enum
NO_WIRELESS = 0, // <20><><EFBFBD>
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
GPS_TAU1201,
WIFI_UART,
WIFI_SPI,
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
}wireless_type_enum;
//==============================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ö<><C3B6><EFBFBD><EFBFBD>==================================================

View File

@@ -40,7 +40,7 @@
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> systick<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱһ<CAB1>ֵ<EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3A8>λΪ<CEBB><CEAA><EFBFBD><EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-20000000<30><30>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> num <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
@@ -60,3 +60,25 @@ void system_delay (uint32 time, uint32 num)
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system ΢<><CEA2> <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱʱ<CAB1><CAB1> <20><>λ<EFBFBD><CEBB>us
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> system_delay_us(100); // <20><>ʱ100΢<30><CEA2>
//-------------------------------------------------------------------------------------------------------------------
void system_delay_us (uint32 time)
{
system_delay(time*1000, 1);
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system <20><><EFBFBD><EFBFBD> <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱʱ<CAB1><CAB1> <20><>λ<EFBFBD><CEBB>ms
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> system_delay_ms(100); // <20><>ʱ100<30><30><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void system_delay_ms (uint32 time)
{
system_delay(1000000, time);
}

View File

@@ -38,13 +38,10 @@
#include "zf_common_typedef.h"
void system_delay (uint32 time, uint32 num);
//====================================================<3D><>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define system_delay_ms(time) system_delay((1000000), (time)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λms
#define system_delay_us(time) system_delay((time*1000), (1)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λus
#define system_delay_ns(time) system_delay((time), (1)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λns
void system_delay (uint32 time, uint32 num);
void system_delay_us (uint32 time);
void system_delay_ms (uint32 time);
//====================================================<3D><>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================

View File

@@ -41,7 +41,6 @@ IFX_INTERRUPT(cc60_pit_ch0_isr, 0, CCU6_0_CH0_ISR_PRIORITY)
{
interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
pit_clear_flag(CCU60_CH0);
tsl1401_collect_pit_handler(); // <20><><EFBFBD><EFBFBD>CCD<43>ɼ<EFBFBD>
}
@@ -75,7 +74,6 @@ IFX_INTERRUPT(cc61_pit_ch1_isr, 0, CCU6_1_CH1_ISR_PRIORITY)
}
// **************************** PIT<49>жϺ<D0B6><CFBA><EFBFBD> ****************************
@@ -88,9 +86,6 @@ IFX_INTERRUPT(exti_ch0_ch4_isr, 0, EXTI_CH0_CH4_INT_PRIO)
{
exti_flag_clear(ERU_CH0_REQ0_P15_4);
}
if(exti_flag_get(ERU_CH4_REQ13_P15_5)) // ͨ<><CDA8>4<EFBFBD>ж<EFBFBD>
@@ -119,8 +114,6 @@ IFX_INTERRUPT(exti_ch1_ch5_isr, 0, EXTI_CH1_CH5_INT_PRIO)
exti_flag_clear(ERU_CH5_REQ1_P15_8);
}
}
@@ -263,7 +256,7 @@ IFX_INTERRUPT(uart3_rx_isr, 0, UART3_RX_INT_PRIO)
IfxAsclin_Asc_isrReceive(&uart3_handle);
gps_uart_callback();
}

View File

@@ -1,3 +1,7 @@
V3.1.6
<20>޸<EFBFBD>GPSʹ<53>ô<EFBFBD><C3B4>ںţ<DABA><C5A3>Ż<EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
isr.c<><63><EFBFBD>Ƴ<EFBFBD>CCD<43>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸İ<DEB8><C4B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>İ<EFBFBD><C4B0><EFBFBD><EFBFBD>˿ںţ<DABA><C5A3><EFBFBD><EFBFBD><EFBFBD>V2.6<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V3.1.5
<20>޸<EFBFBD>Ӳ<EFBFBD><D3B2>SPI<50><49>ʼ<EFBFBD><CABC>ʱѡ<CAB1><D1A1><EFBFBD><EFBFBD>CS<43><53><EFBFBD>ţ<EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD>ʼ<EFBFBD><CABC>Ĭ<EFBFBD><C4AC>CS<43><53><EFBFBD>ŵ<EFBFBD>bug
V3.1.4

View File

@@ -43,24 +43,25 @@
* ------------------------------------
********************************************************************************************************************/
#include "math.h"
#include "zf_common_function.h"
#include "zf_common_fifo.h"
#include "zf_driver_delay.h"
#include "zf_driver_uart.h"
#include "zf_device_type.h"
#include "zf_device_gps_tau1201.h"
#define GPS_TAU1201_BUFFER_SIZE (128)
#define GPS_TAU1201_BUFFER_SIZE ( 128 )
uint8 gps_tau1201_flag; // 1<><31><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɵȴ<C9B5><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30>û<EFBFBD>вɼ<D0B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
uint8 gps_tau1201_flag = 0; // 1<><31><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɵȴ<C9B5><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30>û<EFBFBD>вɼ<D0B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
gps_info_struct gps_tau1201; // GPS<50><53><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static uint8 gps_tau1201_state = 0; // 1<><31>GPS<50><53>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static fifo_struct gps_tau1201_receiver_fifo; //
static uint8 gps_tau1201_receiver_buffer[GPS_TAU1201_BUFFER_SIZE]; // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gps_state_enum gps_gga_state; // gga<67><61><EFBFBD><EFBFBD>״̬
gps_state_enum gps_rmc_state; // rmc<6D><63><EFBFBD><EFBFBD>״̬
gps_state_enum gps_gga_state = GPS_STATE_RECEIVING; // gga <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
gps_state_enum gps_rmc_state = GPS_STATE_RECEIVING; // rmc <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
static uint8 gps_gga_buffer[GPS_TAU1201_BUFFER_SIZE];
static uint8 gps_rmc_buffer[GPS_TAU1201_BUFFER_SIZE];
@@ -75,11 +76,10 @@ static uint8 gps_rmc_buffer[GPS_TAU1201_BUFFER_SIZE];
//-------------------------------------------------------------------------------------------------------------------
static uint8 get_parameter_index (uint8 num, char *str)
{
uint8 i, j = 0;
char *temp;
uint8 len = 0, len1;
uint8 i = 0, j = 0;
char *temp = strchr(str, '\n');
uint8 len = 0, len1 = 0;
temp = strchr(str, '\n');
if(NULL != temp)
{
len = (uint8)((uint32)temp - (uint32)str + 1);
@@ -87,7 +87,7 @@ static uint8 get_parameter_index (uint8 num, char *str)
for(i = 0; i < len; i ++)
{
if(str[i] == ',')
if(',' == str[i])
{
j ++;
}
@@ -111,8 +111,8 @@ static uint8 get_parameter_index (uint8 num, char *str)
static int get_int_number (char *s)
{
char buf[10];
uint8 i;
int return_value;
uint8 i = 0;
int return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
strncpy(buf, s, i);
@@ -130,9 +130,9 @@ static int get_int_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static float get_float_number (char *s)
{
uint8 i;
uint8 i = 0;
char buf[15];
float return_value;
float return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
@@ -151,9 +151,9 @@ static float get_float_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static double get_double_number (char *s)
{
uint8 i;
uint8 i = 0;
char buf[15];
double return_value;
double return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
@@ -172,10 +172,10 @@ static double get_double_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static void utc_to_btc (gps_time_struct *time)
{
uint8 day_num;
uint8 day_num = 0;
time->hour = time->hour + 8;
if(time->hour > 23)
if(23 < time->hour)
{
time->hour -= 24;
time->day += 1;
@@ -183,7 +183,7 @@ static void utc_to_btc (gps_time_struct *time)
if(2 == time->month)
{
day_num = 28;
if((time->year % 4 == 0 && time->year % 100 != 0) || time->year % 400 == 0) // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
if((0 == time->year % 4 && 0 != time->year % 100) || 0 == time->year % 400) // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
{
day_num ++; // <20><><EFBFBD><EFBFBD> 2<><32>Ϊ29<32><39>
}
@@ -201,7 +201,7 @@ static void utc_to_btc (gps_time_struct *time)
{
time->day = 1;
time->month ++;
if(time->month > 12)
if(12 < time->month)
{
time->month -= 12;
time->year ++;
@@ -220,21 +220,21 @@ static void utc_to_btc (gps_time_struct *time)
//-------------------------------------------------------------------------------------------------------------------
static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
{
uint8 state, temp;
uint8 state = 0, temp = 0;
double latitude; // γ<><CEB3>
double longitude; // <20><><EFBFBD><EFBFBD>
double latitude = 0; // γ<><CEB3>
double longitude = 0; // <20><><EFBFBD><EFBFBD>
float lati_cent_tmp, lati_second_tmp;
float long_cent_tmp, long_second_tmp;
float speed_tmp;
double lati_cent_tmp = 0, lati_second_tmp = 0;
double long_cent_tmp = 0, long_second_tmp = 0;
float speed_tmp = 0;
char *buf = line;
uint8 return_state = 0;
state = buf[get_parameter_index(2, buf)];
gps->state = 0;
if (state == 'A') // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if('A' == state) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return_state = 1;
gps->state = 1;
@@ -247,17 +247,17 @@ static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
gps->latitude_degree = (int)latitude / 100; // γ<><CEB3>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>
lati_cent_tmp = (latitude - gps->latitude_degree * 100);
gps->latitude_cent = (int)lati_cent_tmp;
lati_second_tmp = (lati_cent_tmp - gps->latitude_cent) * 10000;
lati_second_tmp = (lati_cent_tmp - gps->latitude_cent) * 6000;
gps->latitude_second = (int)lati_second_tmp;
gps->longitude_degree = (int)longitude / 100; // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>
long_cent_tmp = (longitude - gps->longitude_degree * 100);
gps->longitude_cent = (int)long_cent_tmp;
long_second_tmp = (long_cent_tmp - gps->longitude_cent) * 10000;
long_second_tmp = (long_cent_tmp - gps->longitude_cent) * 6000;
gps->longitude_second = (int)long_second_tmp;
gps->latitude = gps->latitude_degree + (double)gps->latitude_cent / 60 + (double)gps->latitude_second / 600000;
gps->longitude = gps->longitude_degree + (double)gps->longitude_cent / 60 + (double)gps->longitude_second / 600000;
gps->latitude = gps->latitude_degree + lati_cent_tmp / 60;
gps->longitude = gps->longitude_degree + long_cent_tmp / 60;
speed_tmp = get_float_number(&buf[get_parameter_index(7, buf)]); // <20>ٶ<EFBFBD>(<28><><EFBFBD><EFBFBD>/Сʱ)
gps->speed = speed_tmp * 1.85f; // ת<><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>/Сʱ
@@ -288,13 +288,13 @@ static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
//-------------------------------------------------------------------------------------------------------------------
static uint8 gps_gngga_parse (char *line, gps_info_struct *gps)
{
uint8 state;
uint8 state = 0;
char *buf = line;
uint8 return_state = 0;
state = buf[get_parameter_index(2, buf)];
if (state != ',')
if(',' != state)
{
gps->satellite_used = (uint8)get_int_number(&buf[get_parameter_index(7, buf)]);
gps->height = get_float_number(&buf[get_parameter_index(9, buf)]) + get_float_number(&buf[get_parameter_index(11, buf)]); // <20>߶<EFBFBD> = <20><><EFBFBD>θ߶<CEB8> + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ˮ׼<CBAE><D7BC><EFBFBD>ĸ߶<C4B8>
@@ -317,13 +317,13 @@ static uint8 gps_gngga_parse (char *line, gps_info_struct *gps)
double get_two_points_distance (double latitude1, double longitude1, double latitude2, double longitude2)
{
const double EARTH_RADIUS = 6378137; // <20><><EFBFBD><EFBFBD><EFBFBD>뾶(<28><>λ<EFBFBD><CEBB>m)
double rad_latitude1;
double rad_latitude2;
double rad_longitude1;
double rad_longitude2;
double distance;
double a;
double b;
double rad_latitude1 = 0;
double rad_latitude2 = 0;
double rad_longitude1 = 0;
double rad_longitude2 = 0;
double distance = 0;
double a = 0;
double b = 0;
rad_latitude1 = ANGLE_TO_RAD(latitude1); // <20><><EFBFBD>ݽǶȼ<C7B6><C8BC><EFBFBD><E3BBA1>
rad_latitude2 = ANGLE_TO_RAD(latitude2);
@@ -359,7 +359,7 @@ double get_two_points_azimuth (double latitude1, double longitude1, double latit
double x = sin(longitude2 - longitude1) * cos(latitude2);
double y = cos(latitude1) * sin(latitude2) - sin(latitude1) * cos(latitude2) * cos(longitude2 - longitude1);
double angle = RAD_TO_ANGLE(atan2(x, y));
return ((angle > 0) ? angle : (angle + 360));
return ((0 < angle) ? angle : (angle + 360));
}
//-------------------------------------------------------------------------------------------------------------------
@@ -375,16 +375,16 @@ uint8 gps_data_parse (void)
uint8 check_buffer[5] = {'0', 'x', 0x00, 0x00, 0x00};
uint8 bbc_xor_origin = 0;
uint8 bbc_xor_calculation = 0;
uint32 data_len;
uint32 data_len = 0;
do
{
if(GPS_STATE_RECEIVED == gps_rmc_state)
{
gps_rmc_state = GPS_STATE_PARSING;
strncpy((char *)&check_buffer[2], strchr((const char *)gps_rmc_buffer, '*')+1, 2);
strncpy((char *)&check_buffer[2], strchr((const char *)gps_rmc_buffer, '*') + 1, 2);
bbc_xor_origin = (uint8)func_str_to_hex((char *)check_buffer);
for(bbc_xor_calculation = gps_rmc_buffer[1], data_len = 2; gps_rmc_buffer[data_len] != '*'; data_len ++)
for(bbc_xor_calculation = gps_rmc_buffer[1], data_len = 2; '*' != gps_rmc_buffer[data_len]; data_len ++)
{
bbc_xor_calculation ^= gps_rmc_buffer[data_len];
}
@@ -402,10 +402,10 @@ uint8 gps_data_parse (void)
if(GPS_STATE_RECEIVED == gps_gga_state)
{
gps_gga_state = GPS_STATE_PARSING;
strncpy((char *)&check_buffer[2], strchr((const char *)gps_gga_buffer, '*')+1, 2);
strncpy((char *)&check_buffer[2], strchr((const char *)gps_gga_buffer, '*') + 1, 2);
bbc_xor_origin = (uint8)func_str_to_hex((char *)check_buffer);
for(bbc_xor_calculation = gps_gga_buffer[1], data_len = 2; gps_gga_buffer[data_len] != '*'; data_len ++)
for(bbc_xor_calculation = gps_gga_buffer[1], data_len = 2; '*' != gps_gga_buffer[data_len]; data_len ++)
{
bbc_xor_calculation ^= gps_gga_buffer[data_len];
}
@@ -435,7 +435,7 @@ uint8 gps_data_parse (void)
void gps_uart_callback (void)
{
uint8 temp_gps[6];
uint32 temp_length;
uint32 temp_length = 0;
if(gps_tau1201_state)
{
@@ -507,8 +507,7 @@ uint8 gps_init (void)
fifo_init(&gps_tau1201_receiver_fifo, FIFO_DATA_8BIT, gps_tau1201_receiver_buffer, GPS_TAU1201_BUFFER_SIZE);
system_delay_ms(500); // <20>ȴ<EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ʼ<EFBFBD><CABC>
uart_init(GPS_TAU1201_UART, 115200, GPS_TAU1201_RX, GPS_TAU1201_TX);
set_wireless_type(GPS_TAU1201, gps_uart_callback);
uart_rx_interrupt(GPS_TAU1201_UART, 0);
uart_write_buffer(GPS_TAU1201_UART, (uint8 *)set_rate, sizeof(set_rate)); // <20><><EFBFBD><EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ10hz <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ1hz
system_delay_ms(200);

View File

@@ -49,9 +49,9 @@
#include "zf_common_typedef.h"
//===============================================GPS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define GPS_TAU1201_UART (UART_2)
#define GPS_TAU1201_RX (UART2_TX_P10_5) // GPS RX<52><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>
#define GPS_TAU1201_TX (UART2_RX_P10_6) // GPS TX<54><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define GPS_TAU1201_UART (UART_3)
#define GPS_TAU1201_RX (UART3_TX_P15_6) // GPS RX<52><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>
#define GPS_TAU1201_TX (UART3_RX_P15_7) // GPS TX<54><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//===============================================GPS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define ANGLE_TO_RAD(x) ((x) * PI / 180.0) // <20>Ƕ<EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>

View File

@@ -137,8 +137,8 @@
//================================================<3D><><EFBFBD><EFBFBD> IMU963RA <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
//===============================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>===============================================
extern int16 imu963ra_acc_x, imu963ra_acc_y, imu963ra_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_gyro_x, imu963ra_gyro_y, imu963ra_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_gyro_x, imu963ra_gyro_y, imu963ra_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_acc_x, imu963ra_acc_y, imu963ra_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_mag_x, imu963ra_mag_y, imu963ra_mag_z; // <20><><EFBFBD><EFBFBD><EFBFBD>شż<D8B4><C5BC><EFBFBD><EFBFBD><EFBFBD>
//===============================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>===============================================

View File

@@ -1,10 +1,10 @@
/*********************************************************************************************************************
* MM32F327X-G9P Opensourec Library <20><><EFBFBD><EFBFBD>MM32F327X-G9P <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
*
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> MM32F327X-G9P <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
*
* MM32F327X-G9P <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD><EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>޸<EFBFBD><DEB8><EFBFBD>
*
@@ -24,13 +24,13 @@
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_key
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* <20><EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IAR 8.32.4 or MDK 5.37
* <20><><EFBFBD><EFBFBD>ƽ̨ MM32F327X_G9P
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.8.0
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-08-10 Teternal first version
* 2022-09-15 pudding first version
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -45,6 +45,7 @@
********************************************************************************************************************/
#include "zf_common_debug.h"
#include "zf_device_key.h"
static uint32 scanner_period = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -65,54 +66,21 @@ void key_scanner (void)
uint8 i = 0;
for(i = 0; i < KEY_NUMBER; i ++)
{
switch(key_state[i])
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i])) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
case KEY_RELEASE:
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i]))
{
if(++ key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
else
{
key_state[i] = KEY_CHECK_SHOCK;
}
}
break;
case KEY_CHECK_SHOCK:
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i]))
{
if(++ key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
}
else
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
case KEY_SHORT_PRESS:
if(++ key_press_time[i] >= KEY_LONG_PRESS_PERIOD / scanner_period)
{
key_state[i] = KEY_LONG_PRESS;
}
if(KEY_RELEASE_LEVEL == gpio_get_level(key_index[i]))
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
case KEY_LONG_PRESS:
if(KEY_RELEASE_LEVEL == gpio_get_level(key_index[i]))
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
key_press_time[i] ++;
if(key_press_time[i] >= KEY_LONG_PRESS_PERIOD / scanner_period)
{
key_state[i] = KEY_LONG_PRESS;
}
}
else // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
{
if(key_state[i] != KEY_LONG_PRESS && key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
key_press_time[i] = 0;
}
}
}
@@ -129,6 +97,33 @@ key_state_enum key_get_state (key_index_enum key_n)
return key_state[key_n];
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>״̬
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> key_n <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void <20><>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_clear_state(KEY_1);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void key_clear_state (key_index_enum key_n)
{
key_state[key_n] = KEY_RELEASE;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD>״̬
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void <20><>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void <20><>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_clear_all_state();
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void key_clear_all_state (void)
{
key_state[0] = KEY_RELEASE;
key_state[1] = KEY_RELEASE;
key_state[2] = KEY_RELEASE;
key_state[3] = KEY_RELEASE;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> period <20><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ժ<EFBFBD><D4BA><EFBFBD>Ϊ<EFBFBD><CEAA>λ
@@ -136,17 +131,14 @@ key_state_enum key_get_state (key_index_enum key_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_init(10);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
uint8 key_init (uint32 period)
void key_init (uint32 period)
{
zf_assert(0 < period);
uint8 loop_temp = 0;
zf_assert(0 < period); // ɨ<><C9A8><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
for(loop_temp = 0; loop_temp < KEY_NUMBER; loop_temp ++)
{
gpio_init(key_index[loop_temp], GPI, GPIO_HIGH, GPI_PULL_UP);
key_state[loop_temp] = KEY_RELEASE;
}
scanner_period = period;
return 0;
}

View File

@@ -1,10 +1,10 @@
/*********************************************************************************************************************
* MM32F327X-G9P Opensourec Library <20><><EFBFBD><EFBFBD>MM32F327X-G9P <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
*
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> MM32F327X-G9P <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
*
* MM32F327X-G9P <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD><EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>޸<EFBFBD><DEB8><EFBFBD>
*
@@ -24,13 +24,13 @@
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_key
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* <20><EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IAR 8.32.4 or MDK 5.37
* <20><><EFBFBD><EFBFBD>ƽ̨ MM32F327X_G9P
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.8.0
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-08-10 Teternal first version
* 2022-09-15 pudding first version
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -53,13 +53,12 @@
// <20><><EFBFBD><EFBFBD><E5B0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD> Ĭ<>϶<EFBFBD><CFB6><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><E5B0B4>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>Ӧ<EFBFBD>·<EFBFBD> key_index_enum ö<><C3B6><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3>
// <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ô<EFBFBD><C3B4>Ҫͬ<D2AA><CDAC><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD> key_index_enum ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define KEY_LIST {P22_0, P22_1, P22_2, P22_3}
#define KEY_LIST {P20_6, P20_7, P11_2, P11_3}
#define KEY_RELEASE_LEVEL (GPIO_HIGH) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>״̬ Ҳ<><D2B2><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ͷ<EFBFBD>״̬<D7B4>ĵ<EFBFBD>ƽ
#define KEY_MAX_SHOCK_PERIOD (10 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>źŻᱻ<C5BB><E1B1BB>Ϊ<EFBFBD><CEAA><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD>
#define KEY_LONG_PRESS_PERIOD (1000 ) // <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
#define KEY_LONG_PRESS_PERIOD (1000 ) // <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>źŻᱻ<C5BB><E1B1BB>Ϊ<EFBFBD>dz<EFBFBD><C7B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//=================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
typedef enum
{
KEY_1,
@@ -72,15 +71,14 @@ typedef enum
typedef enum
{
KEY_RELEASE, // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>״̬
KEY_CHECK_SHOCK, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
KEY_SHORT_PRESS, // <20><><EFBFBD><EFBFBD><EFBFBD>̰<EFBFBD>״̬
KEY_LONG_PRESS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
}key_state_enum;
//=================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
void key_scanner (void); // <20><><EFBFBD><EFBFBD>״̬ɨ<CCAC><C9A8>
key_state_enum key_get_state (key_index_enum key_n); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>״̬
uint8 key_init (uint32 period); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
void key_scanner (void);
key_state_enum key_get_state (key_index_enum key_n);
void key_clear_state (key_index_enum key_n);
void key_clear_all_state (void);
void key_init (uint32 period);
#endif

View File

@@ -60,7 +60,7 @@
// TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD>ڲɼ<DAB2><C9BC><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD> ʹ<>õ<EFBFBD><C3B5>ĸ<EFBFBD> PIT <20><>Ҫ<EFBFBD><D2AA> <20><><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD> PIT <20><><EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TSL1401_EXPOSURE_TIME (10 ) // <20><><EFBFBD><EFBFBD> TSL1401 <20>ع<EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ MS
#define TSL1401_PIT_INDEX (CCU60_CH0) // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
#define TSL1401_PIT_INDEX (CCU61_CH1) // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
#define TSL1401_AD_RESOLUTION (ADC_8BIT) // ADC <20><><EFBFBD><EFBFBD> 8bit
#define TSL1401_DATA_LEN (128 ) // TSL1401 <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
//=================================================TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================

View File

@@ -53,9 +53,7 @@ typedef enum
NO_WIRELESS = 0, // <20><><EFBFBD>
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
GPS_TAU1201,
WIFI_UART,
WIFI_SPI,
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
}wireless_type_enum;
//==============================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ö<><C3B6><EFBFBD><EFBFBD>==================================================

View File

@@ -40,7 +40,7 @@
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> systick<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱһ<CAB1>ֵ<EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3A8>λΪ<CEBB><CEAA><EFBFBD><EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-20000000<30><30>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> num <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
@@ -60,3 +60,25 @@ void system_delay (uint32 time, uint32 num)
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system ΢<><CEA2> <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱʱ<CAB1><CAB1> <20><>λ<EFBFBD><CEBB>us
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> system_delay_us(100); // <20><>ʱ100΢<30><CEA2>
//-------------------------------------------------------------------------------------------------------------------
void system_delay_us (uint32 time)
{
system_delay(time*1000, 1);
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system <20><><EFBFBD><EFBFBD> <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱʱ<CAB1><CAB1> <20><>λ<EFBFBD><CEBB>ms
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> system_delay_ms(100); // <20><>ʱ100<30><30><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void system_delay_ms (uint32 time)
{
system_delay(1000000, time);
}

View File

@@ -38,13 +38,10 @@
#include "zf_common_typedef.h"
void system_delay (uint32 time, uint32 num);
//====================================================<3D><>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define system_delay_ms(time) system_delay((1000000), (time)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λms
#define system_delay_us(time) system_delay((time*1000), (1)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λus
#define system_delay_ns(time) system_delay((time), (1)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λns
void system_delay (uint32 time, uint32 num);
void system_delay_us (uint32 time);
void system_delay_ms (uint32 time);
//====================================================<3D><>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================

View File

@@ -41,7 +41,6 @@ IFX_INTERRUPT(cc60_pit_ch0_isr, 0, CCU6_0_CH0_ISR_PRIORITY)
{
interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
pit_clear_flag(CCU60_CH0);
tsl1401_collect_pit_handler(); // <20><><EFBFBD><EFBFBD>CCD<43>ɼ<EFBFBD>
}
@@ -75,7 +74,6 @@ IFX_INTERRUPT(cc61_pit_ch1_isr, 0, CCU6_1_CH1_ISR_PRIORITY)
}
// **************************** PIT<49>жϺ<D0B6><CFBA><EFBFBD> ****************************
@@ -88,9 +86,6 @@ IFX_INTERRUPT(exti_ch0_ch4_isr, 0, EXTI_CH0_CH4_INT_PRIO)
{
exti_flag_clear(ERU_CH0_REQ0_P15_4);
}
if(exti_flag_get(ERU_CH4_REQ13_P15_5)) // ͨ<><CDA8>4<EFBFBD>ж<EFBFBD>
@@ -119,8 +114,6 @@ IFX_INTERRUPT(exti_ch1_ch5_isr, 0, EXTI_CH1_CH5_INT_PRIO)
exti_flag_clear(ERU_CH5_REQ1_P15_8);
}
}
@@ -263,7 +256,7 @@ IFX_INTERRUPT(uart3_rx_isr, 0, UART3_RX_INT_PRIO)
IfxAsclin_Asc_isrReceive(&uart3_handle);
gps_uart_callback();
}

View File

@@ -1,3 +1,7 @@
V3.1.6
<20>޸<EFBFBD>GPSʹ<53>ô<EFBFBD><C3B4>ںţ<DABA><C5A3>Ż<EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
isr.c<><63><EFBFBD>Ƴ<EFBFBD>CCD<43>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸İ<DEB8><C4B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>İ<EFBFBD><C4B0><EFBFBD><EFBFBD>˿ںţ<DABA><C5A3><EFBFBD><EFBFBD><EFBFBD>V2.6<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V3.1.5
<20>޸<EFBFBD>Ӳ<EFBFBD><D3B2>SPI<50><49>ʼ<EFBFBD><CABC>ʱѡ<CAB1><D1A1><EFBFBD><EFBFBD>CS<43><53><EFBFBD>ţ<EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD>ʼ<EFBFBD><CABC>Ĭ<EFBFBD><C4AC>CS<43><53><EFBFBD>ŵ<EFBFBD>bug
V3.1.4

View File

@@ -43,24 +43,25 @@
* ------------------------------------
********************************************************************************************************************/
#include "math.h"
#include "zf_common_function.h"
#include "zf_common_fifo.h"
#include "zf_driver_delay.h"
#include "zf_driver_uart.h"
#include "zf_device_type.h"
#include "zf_device_gps_tau1201.h"
#define GPS_TAU1201_BUFFER_SIZE (128)
#define GPS_TAU1201_BUFFER_SIZE ( 128 )
uint8 gps_tau1201_flag; // 1<><31><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɵȴ<C9B5><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30>û<EFBFBD>вɼ<D0B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
uint8 gps_tau1201_flag = 0; // 1<><31><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɵȴ<C9B5><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30>û<EFBFBD>вɼ<D0B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
gps_info_struct gps_tau1201; // GPS<50><53><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static uint8 gps_tau1201_state = 0; // 1<><31>GPS<50><53>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static fifo_struct gps_tau1201_receiver_fifo; //
static uint8 gps_tau1201_receiver_buffer[GPS_TAU1201_BUFFER_SIZE]; // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gps_state_enum gps_gga_state; // gga<67><61><EFBFBD><EFBFBD>״̬
gps_state_enum gps_rmc_state; // rmc<6D><63><EFBFBD><EFBFBD>״̬
gps_state_enum gps_gga_state = GPS_STATE_RECEIVING; // gga <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
gps_state_enum gps_rmc_state = GPS_STATE_RECEIVING; // rmc <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
static uint8 gps_gga_buffer[GPS_TAU1201_BUFFER_SIZE];
static uint8 gps_rmc_buffer[GPS_TAU1201_BUFFER_SIZE];
@@ -75,11 +76,10 @@ static uint8 gps_rmc_buffer[GPS_TAU1201_BUFFER_SIZE];
//-------------------------------------------------------------------------------------------------------------------
static uint8 get_parameter_index (uint8 num, char *str)
{
uint8 i, j = 0;
char *temp;
uint8 len = 0, len1;
uint8 i = 0, j = 0;
char *temp = strchr(str, '\n');
uint8 len = 0, len1 = 0;
temp = strchr(str, '\n');
if(NULL != temp)
{
len = (uint8)((uint32)temp - (uint32)str + 1);
@@ -87,7 +87,7 @@ static uint8 get_parameter_index (uint8 num, char *str)
for(i = 0; i < len; i ++)
{
if(str[i] == ',')
if(',' == str[i])
{
j ++;
}
@@ -111,8 +111,8 @@ static uint8 get_parameter_index (uint8 num, char *str)
static int get_int_number (char *s)
{
char buf[10];
uint8 i;
int return_value;
uint8 i = 0;
int return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
strncpy(buf, s, i);
@@ -130,9 +130,9 @@ static int get_int_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static float get_float_number (char *s)
{
uint8 i;
uint8 i = 0;
char buf[15];
float return_value;
float return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
@@ -151,9 +151,9 @@ static float get_float_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static double get_double_number (char *s)
{
uint8 i;
uint8 i = 0;
char buf[15];
double return_value;
double return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
@@ -172,10 +172,10 @@ static double get_double_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static void utc_to_btc (gps_time_struct *time)
{
uint8 day_num;
uint8 day_num = 0;
time->hour = time->hour + 8;
if(time->hour > 23)
if(23 < time->hour)
{
time->hour -= 24;
time->day += 1;
@@ -183,7 +183,7 @@ static void utc_to_btc (gps_time_struct *time)
if(2 == time->month)
{
day_num = 28;
if((time->year % 4 == 0 && time->year % 100 != 0) || time->year % 400 == 0) // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
if((0 == time->year % 4 && 0 != time->year % 100) || 0 == time->year % 400) // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
{
day_num ++; // <20><><EFBFBD><EFBFBD> 2<><32>Ϊ29<32><39>
}
@@ -201,7 +201,7 @@ static void utc_to_btc (gps_time_struct *time)
{
time->day = 1;
time->month ++;
if(time->month > 12)
if(12 < time->month)
{
time->month -= 12;
time->year ++;
@@ -220,21 +220,21 @@ static void utc_to_btc (gps_time_struct *time)
//-------------------------------------------------------------------------------------------------------------------
static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
{
uint8 state, temp;
uint8 state = 0, temp = 0;
double latitude; // γ<><CEB3>
double longitude; // <20><><EFBFBD><EFBFBD>
double latitude = 0; // γ<><CEB3>
double longitude = 0; // <20><><EFBFBD><EFBFBD>
float lati_cent_tmp, lati_second_tmp;
float long_cent_tmp, long_second_tmp;
float speed_tmp;
double lati_cent_tmp = 0, lati_second_tmp = 0;
double long_cent_tmp = 0, long_second_tmp = 0;
float speed_tmp = 0;
char *buf = line;
uint8 return_state = 0;
state = buf[get_parameter_index(2, buf)];
gps->state = 0;
if (state == 'A') // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if('A' == state) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return_state = 1;
gps->state = 1;
@@ -247,17 +247,17 @@ static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
gps->latitude_degree = (int)latitude / 100; // γ<><CEB3>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>
lati_cent_tmp = (latitude - gps->latitude_degree * 100);
gps->latitude_cent = (int)lati_cent_tmp;
lati_second_tmp = (lati_cent_tmp - gps->latitude_cent) * 10000;
lati_second_tmp = (lati_cent_tmp - gps->latitude_cent) * 6000;
gps->latitude_second = (int)lati_second_tmp;
gps->longitude_degree = (int)longitude / 100; // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>
long_cent_tmp = (longitude - gps->longitude_degree * 100);
gps->longitude_cent = (int)long_cent_tmp;
long_second_tmp = (long_cent_tmp - gps->longitude_cent) * 10000;
long_second_tmp = (long_cent_tmp - gps->longitude_cent) * 6000;
gps->longitude_second = (int)long_second_tmp;
gps->latitude = gps->latitude_degree + (double)gps->latitude_cent / 60 + (double)gps->latitude_second / 600000;
gps->longitude = gps->longitude_degree + (double)gps->longitude_cent / 60 + (double)gps->longitude_second / 600000;
gps->latitude = gps->latitude_degree + lati_cent_tmp / 60;
gps->longitude = gps->longitude_degree + long_cent_tmp / 60;
speed_tmp = get_float_number(&buf[get_parameter_index(7, buf)]); // <20>ٶ<EFBFBD>(<28><><EFBFBD><EFBFBD>/Сʱ)
gps->speed = speed_tmp * 1.85f; // ת<><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>/Сʱ
@@ -288,13 +288,13 @@ static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
//-------------------------------------------------------------------------------------------------------------------
static uint8 gps_gngga_parse (char *line, gps_info_struct *gps)
{
uint8 state;
uint8 state = 0;
char *buf = line;
uint8 return_state = 0;
state = buf[get_parameter_index(2, buf)];
if (state != ',')
if(',' != state)
{
gps->satellite_used = (uint8)get_int_number(&buf[get_parameter_index(7, buf)]);
gps->height = get_float_number(&buf[get_parameter_index(9, buf)]) + get_float_number(&buf[get_parameter_index(11, buf)]); // <20>߶<EFBFBD> = <20><><EFBFBD>θ߶<CEB8> + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ˮ׼<CBAE><D7BC><EFBFBD>ĸ߶<C4B8>
@@ -317,13 +317,13 @@ static uint8 gps_gngga_parse (char *line, gps_info_struct *gps)
double get_two_points_distance (double latitude1, double longitude1, double latitude2, double longitude2)
{
const double EARTH_RADIUS = 6378137; // <20><><EFBFBD><EFBFBD><EFBFBD>뾶(<28><>λ<EFBFBD><CEBB>m)
double rad_latitude1;
double rad_latitude2;
double rad_longitude1;
double rad_longitude2;
double distance;
double a;
double b;
double rad_latitude1 = 0;
double rad_latitude2 = 0;
double rad_longitude1 = 0;
double rad_longitude2 = 0;
double distance = 0;
double a = 0;
double b = 0;
rad_latitude1 = ANGLE_TO_RAD(latitude1); // <20><><EFBFBD>ݽǶȼ<C7B6><C8BC><EFBFBD><E3BBA1>
rad_latitude2 = ANGLE_TO_RAD(latitude2);
@@ -359,7 +359,7 @@ double get_two_points_azimuth (double latitude1, double longitude1, double latit
double x = sin(longitude2 - longitude1) * cos(latitude2);
double y = cos(latitude1) * sin(latitude2) - sin(latitude1) * cos(latitude2) * cos(longitude2 - longitude1);
double angle = RAD_TO_ANGLE(atan2(x, y));
return ((angle > 0) ? angle : (angle + 360));
return ((0 < angle) ? angle : (angle + 360));
}
//-------------------------------------------------------------------------------------------------------------------
@@ -375,16 +375,16 @@ uint8 gps_data_parse (void)
uint8 check_buffer[5] = {'0', 'x', 0x00, 0x00, 0x00};
uint8 bbc_xor_origin = 0;
uint8 bbc_xor_calculation = 0;
uint32 data_len;
uint32 data_len = 0;
do
{
if(GPS_STATE_RECEIVED == gps_rmc_state)
{
gps_rmc_state = GPS_STATE_PARSING;
strncpy((char *)&check_buffer[2], strchr((const char *)gps_rmc_buffer, '*')+1, 2);
strncpy((char *)&check_buffer[2], strchr((const char *)gps_rmc_buffer, '*') + 1, 2);
bbc_xor_origin = (uint8)func_str_to_hex((char *)check_buffer);
for(bbc_xor_calculation = gps_rmc_buffer[1], data_len = 2; gps_rmc_buffer[data_len] != '*'; data_len ++)
for(bbc_xor_calculation = gps_rmc_buffer[1], data_len = 2; '*' != gps_rmc_buffer[data_len]; data_len ++)
{
bbc_xor_calculation ^= gps_rmc_buffer[data_len];
}
@@ -402,10 +402,10 @@ uint8 gps_data_parse (void)
if(GPS_STATE_RECEIVED == gps_gga_state)
{
gps_gga_state = GPS_STATE_PARSING;
strncpy((char *)&check_buffer[2], strchr((const char *)gps_gga_buffer, '*')+1, 2);
strncpy((char *)&check_buffer[2], strchr((const char *)gps_gga_buffer, '*') + 1, 2);
bbc_xor_origin = (uint8)func_str_to_hex((char *)check_buffer);
for(bbc_xor_calculation = gps_gga_buffer[1], data_len = 2; gps_gga_buffer[data_len] != '*'; data_len ++)
for(bbc_xor_calculation = gps_gga_buffer[1], data_len = 2; '*' != gps_gga_buffer[data_len]; data_len ++)
{
bbc_xor_calculation ^= gps_gga_buffer[data_len];
}
@@ -435,7 +435,7 @@ uint8 gps_data_parse (void)
void gps_uart_callback (void)
{
uint8 temp_gps[6];
uint32 temp_length;
uint32 temp_length = 0;
if(gps_tau1201_state)
{
@@ -507,8 +507,7 @@ uint8 gps_init (void)
fifo_init(&gps_tau1201_receiver_fifo, FIFO_DATA_8BIT, gps_tau1201_receiver_buffer, GPS_TAU1201_BUFFER_SIZE);
system_delay_ms(500); // <20>ȴ<EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ʼ<EFBFBD><CABC>
uart_init(GPS_TAU1201_UART, 115200, GPS_TAU1201_RX, GPS_TAU1201_TX);
set_wireless_type(GPS_TAU1201, gps_uart_callback);
uart_rx_interrupt(GPS_TAU1201_UART, 0);
uart_write_buffer(GPS_TAU1201_UART, (uint8 *)set_rate, sizeof(set_rate)); // <20><><EFBFBD><EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ10hz <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ1hz
system_delay_ms(200);

View File

@@ -49,9 +49,9 @@
#include "zf_common_typedef.h"
//===============================================GPS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define GPS_TAU1201_UART (UART_2)
#define GPS_TAU1201_RX (UART2_TX_P10_5) // GPS RX<52><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>
#define GPS_TAU1201_TX (UART2_RX_P10_6) // GPS TX<54><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define GPS_TAU1201_UART (UART_3)
#define GPS_TAU1201_RX (UART3_TX_P15_6) // GPS RX<52><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>
#define GPS_TAU1201_TX (UART3_RX_P15_7) // GPS TX<54><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//===============================================GPS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define ANGLE_TO_RAD(x) ((x) * PI / 180.0) // <20>Ƕ<EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>

View File

@@ -137,8 +137,8 @@
//================================================<3D><><EFBFBD><EFBFBD> IMU963RA <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
//===============================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>===============================================
extern int16 imu963ra_acc_x, imu963ra_acc_y, imu963ra_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_gyro_x, imu963ra_gyro_y, imu963ra_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_gyro_x, imu963ra_gyro_y, imu963ra_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_acc_x, imu963ra_acc_y, imu963ra_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_mag_x, imu963ra_mag_y, imu963ra_mag_z; // <20><><EFBFBD><EFBFBD><EFBFBD>شż<D8B4><C5BC><EFBFBD><EFBFBD><EFBFBD>
//===============================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>===============================================

View File

@@ -1,10 +1,10 @@
/*********************************************************************************************************************
* MM32F327X-G9P Opensourec Library <20><><EFBFBD><EFBFBD>MM32F327X-G9P <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
*
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> MM32F327X-G9P <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
*
* MM32F327X-G9P <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD><EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>޸<EFBFBD><DEB8><EFBFBD>
*
@@ -24,13 +24,13 @@
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_key
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* <20><EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IAR 8.32.4 or MDK 5.37
* <20><><EFBFBD><EFBFBD>ƽ̨ MM32F327X_G9P
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.8.0
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-08-10 Teternal first version
* 2022-09-15 pudding first version
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -45,6 +45,7 @@
********************************************************************************************************************/
#include "zf_common_debug.h"
#include "zf_device_key.h"
static uint32 scanner_period = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -65,54 +66,21 @@ void key_scanner (void)
uint8 i = 0;
for(i = 0; i < KEY_NUMBER; i ++)
{
switch(key_state[i])
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i])) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
case KEY_RELEASE:
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i]))
{
if(++ key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
else
{
key_state[i] = KEY_CHECK_SHOCK;
}
}
break;
case KEY_CHECK_SHOCK:
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i]))
{
if(++ key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
}
else
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
case KEY_SHORT_PRESS:
if(++ key_press_time[i] >= KEY_LONG_PRESS_PERIOD / scanner_period)
{
key_state[i] = KEY_LONG_PRESS;
}
if(KEY_RELEASE_LEVEL == gpio_get_level(key_index[i]))
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
case KEY_LONG_PRESS:
if(KEY_RELEASE_LEVEL == gpio_get_level(key_index[i]))
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
key_press_time[i] ++;
if(key_press_time[i] >= KEY_LONG_PRESS_PERIOD / scanner_period)
{
key_state[i] = KEY_LONG_PRESS;
}
}
else // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
{
if(key_state[i] != KEY_LONG_PRESS && key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
key_press_time[i] = 0;
}
}
}
@@ -129,6 +97,33 @@ key_state_enum key_get_state (key_index_enum key_n)
return key_state[key_n];
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>״̬
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> key_n <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void <20><>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_clear_state(KEY_1);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void key_clear_state (key_index_enum key_n)
{
key_state[key_n] = KEY_RELEASE;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD>״̬
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void <20><>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void <20><>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_clear_all_state();
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void key_clear_all_state (void)
{
key_state[0] = KEY_RELEASE;
key_state[1] = KEY_RELEASE;
key_state[2] = KEY_RELEASE;
key_state[3] = KEY_RELEASE;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> period <20><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ժ<EFBFBD><D4BA><EFBFBD>Ϊ<EFBFBD><CEAA>λ
@@ -136,17 +131,14 @@ key_state_enum key_get_state (key_index_enum key_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_init(10);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
uint8 key_init (uint32 period)
void key_init (uint32 period)
{
zf_assert(0 < period);
uint8 loop_temp = 0;
zf_assert(0 < period); // ɨ<><C9A8><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
for(loop_temp = 0; loop_temp < KEY_NUMBER; loop_temp ++)
{
gpio_init(key_index[loop_temp], GPI, GPIO_HIGH, GPI_PULL_UP);
key_state[loop_temp] = KEY_RELEASE;
}
scanner_period = period;
return 0;
}

View File

@@ -1,10 +1,10 @@
/*********************************************************************************************************************
* MM32F327X-G9P Opensourec Library <20><><EFBFBD><EFBFBD>MM32F327X-G9P <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
*
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> MM32F327X-G9P <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
*
* MM32F327X-G9P <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD><EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>޸<EFBFBD><DEB8><EFBFBD>
*
@@ -24,13 +24,13 @@
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_key
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* <20><EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IAR 8.32.4 or MDK 5.37
* <20><><EFBFBD><EFBFBD>ƽ̨ MM32F327X_G9P
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.8.0
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-08-10 Teternal first version
* 2022-09-15 pudding first version
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -53,13 +53,12 @@
// <20><><EFBFBD><EFBFBD><E5B0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD> Ĭ<>϶<EFBFBD><CFB6><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><E5B0B4>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>Ӧ<EFBFBD>·<EFBFBD> key_index_enum ö<><C3B6><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3>
// <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ô<EFBFBD><C3B4>Ҫͬ<D2AA><CDAC><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD> key_index_enum ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define KEY_LIST {P22_0, P22_1, P22_2, P22_3}
#define KEY_LIST {P20_6, P20_7, P11_2, P11_3}
#define KEY_RELEASE_LEVEL (GPIO_HIGH) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>״̬ Ҳ<><D2B2><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ͷ<EFBFBD>״̬<D7B4>ĵ<EFBFBD>ƽ
#define KEY_MAX_SHOCK_PERIOD (10 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>źŻᱻ<C5BB><E1B1BB>Ϊ<EFBFBD><CEAA><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD>
#define KEY_LONG_PRESS_PERIOD (1000 ) // <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
#define KEY_LONG_PRESS_PERIOD (1000 ) // <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>źŻᱻ<C5BB><E1B1BB>Ϊ<EFBFBD>dz<EFBFBD><C7B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//=================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
typedef enum
{
KEY_1,
@@ -72,15 +71,14 @@ typedef enum
typedef enum
{
KEY_RELEASE, // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>״̬
KEY_CHECK_SHOCK, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
KEY_SHORT_PRESS, // <20><><EFBFBD><EFBFBD><EFBFBD>̰<EFBFBD>״̬
KEY_LONG_PRESS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
}key_state_enum;
//=================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
void key_scanner (void); // <20><><EFBFBD><EFBFBD>״̬ɨ<CCAC><C9A8>
key_state_enum key_get_state (key_index_enum key_n); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>״̬
uint8 key_init (uint32 period); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
void key_scanner (void);
key_state_enum key_get_state (key_index_enum key_n);
void key_clear_state (key_index_enum key_n);
void key_clear_all_state (void);
void key_init (uint32 period);
#endif

View File

@@ -60,7 +60,7 @@
// TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD>ڲɼ<DAB2><C9BC><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD> ʹ<>õ<EFBFBD><C3B5>ĸ<EFBFBD> PIT <20><>Ҫ<EFBFBD><D2AA> <20><><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD> PIT <20><><EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TSL1401_EXPOSURE_TIME (10 ) // <20><><EFBFBD><EFBFBD> TSL1401 <20>ع<EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ MS
#define TSL1401_PIT_INDEX (CCU60_CH0) // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
#define TSL1401_PIT_INDEX (CCU61_CH1) // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
#define TSL1401_AD_RESOLUTION (ADC_8BIT) // ADC <20><><EFBFBD><EFBFBD> 8bit
#define TSL1401_DATA_LEN (128 ) // TSL1401 <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
//=================================================TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================

View File

@@ -53,9 +53,7 @@ typedef enum
NO_WIRELESS = 0, // <20><><EFBFBD>
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
GPS_TAU1201,
WIFI_UART,
WIFI_SPI,
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
}wireless_type_enum;
//==============================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ö<><C3B6><EFBFBD><EFBFBD>==================================================

View File

@@ -40,7 +40,7 @@
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> systick<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱһ<CAB1>ֵ<EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3A8>λΪ<CEBB><CEAA><EFBFBD><EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-20000000<30><30>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> num <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
@@ -60,3 +60,25 @@ void system_delay (uint32 time, uint32 num)
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system ΢<><CEA2> <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱʱ<CAB1><CAB1> <20><>λ<EFBFBD><CEBB>us
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> system_delay_us(100); // <20><>ʱ100΢<30><CEA2>
//-------------------------------------------------------------------------------------------------------------------
void system_delay_us (uint32 time)
{
system_delay(time*1000, 1);
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system <20><><EFBFBD><EFBFBD> <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱʱ<CAB1><CAB1> <20><>λ<EFBFBD><CEBB>ms
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> system_delay_ms(100); // <20><>ʱ100<30><30><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void system_delay_ms (uint32 time)
{
system_delay(1000000, time);
}

View File

@@ -38,13 +38,10 @@
#include "zf_common_typedef.h"
void system_delay (uint32 time, uint32 num);
//====================================================<3D><>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define system_delay_ms(time) system_delay((1000000), (time)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λms
#define system_delay_us(time) system_delay((time*1000), (1)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λus
#define system_delay_ns(time) system_delay((time), (1)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λns
void system_delay (uint32 time, uint32 num);
void system_delay_us (uint32 time);
void system_delay_ms (uint32 time);
//====================================================<3D><>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================

View File

@@ -37,6 +37,14 @@
#include "isr.h"
// **************************** PIT<49>жϺ<D0B6><CFBA><EFBFBD> ****************************
//IFX_INTERRUPT(cc60_pit_ch0_isr, 0, CCU6_0_CH0_ISR_PRIORITY)
//{
// interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
// pit_clear_flag(CCU60_CH0);
//
//
//}
IFX_INTERRUPT(cc60_pit_ch1_isr, 0, CCU6_0_CH1_ISR_PRIORITY)
{
@@ -66,7 +74,6 @@ IFX_INTERRUPT(cc61_pit_ch1_isr, 0, CCU6_1_CH1_ISR_PRIORITY)
}
// **************************** PIT<49>жϺ<D0B6><CFBA><EFBFBD> ****************************
@@ -79,9 +86,6 @@ IFX_INTERRUPT(exti_ch0_ch4_isr, 0, EXTI_CH0_CH4_INT_PRIO)
{
exti_flag_clear(ERU_CH0_REQ0_P15_4);
}
if(exti_flag_get(ERU_CH4_REQ13_P15_5)) // ͨ<><CDA8>4<EFBFBD>ж<EFBFBD>
@@ -110,8 +114,6 @@ IFX_INTERRUPT(exti_ch1_ch5_isr, 0, EXTI_CH1_CH5_INT_PRIO)
exti_flag_clear(ERU_CH5_REQ1_P15_8);
}
}
@@ -254,7 +256,7 @@ IFX_INTERRUPT(uart3_rx_isr, 0, UART3_RX_INT_PRIO)
IfxAsclin_Asc_isrReceive(&uart3_handle);
gps_uart_callback();
}

View File

@@ -1,3 +1,7 @@
V3.1.6
<20>޸<EFBFBD>GPSʹ<53>ô<EFBFBD><C3B4>ںţ<DABA><C5A3>Ż<EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
isr.c<><63><EFBFBD>Ƴ<EFBFBD>CCD<43>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸İ<DEB8><C4B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>İ<EFBFBD><C4B0><EFBFBD><EFBFBD>˿ںţ<DABA><C5A3><EFBFBD><EFBFBD><EFBFBD>V2.6<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V3.1.5
<20>޸<EFBFBD>Ӳ<EFBFBD><D3B2>SPI<50><49>ʼ<EFBFBD><CABC>ʱѡ<CAB1><D1A1><EFBFBD><EFBFBD>CS<43><53><EFBFBD>ţ<EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD>ʼ<EFBFBD><CABC>Ĭ<EFBFBD><C4AC>CS<43><53><EFBFBD>ŵ<EFBFBD>bug
V3.1.4

View File

@@ -43,24 +43,25 @@
* ------------------------------------
********************************************************************************************************************/
#include "math.h"
#include "zf_common_function.h"
#include "zf_common_fifo.h"
#include "zf_driver_delay.h"
#include "zf_driver_uart.h"
#include "zf_device_type.h"
#include "zf_device_gps_tau1201.h"
#define GPS_TAU1201_BUFFER_SIZE (128)
#define GPS_TAU1201_BUFFER_SIZE ( 128 )
uint8 gps_tau1201_flag; // 1<><31><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɵȴ<C9B5><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30>û<EFBFBD>вɼ<D0B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
uint8 gps_tau1201_flag = 0; // 1<><31><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɵȴ<C9B5><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30>û<EFBFBD>вɼ<D0B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
gps_info_struct gps_tau1201; // GPS<50><53><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static uint8 gps_tau1201_state = 0; // 1<><31>GPS<50><53>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static fifo_struct gps_tau1201_receiver_fifo; //
static uint8 gps_tau1201_receiver_buffer[GPS_TAU1201_BUFFER_SIZE]; // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gps_state_enum gps_gga_state; // gga<67><61><EFBFBD><EFBFBD>״̬
gps_state_enum gps_rmc_state; // rmc<6D><63><EFBFBD><EFBFBD>״̬
gps_state_enum gps_gga_state = GPS_STATE_RECEIVING; // gga <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
gps_state_enum gps_rmc_state = GPS_STATE_RECEIVING; // rmc <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
static uint8 gps_gga_buffer[GPS_TAU1201_BUFFER_SIZE];
static uint8 gps_rmc_buffer[GPS_TAU1201_BUFFER_SIZE];
@@ -75,11 +76,10 @@ static uint8 gps_rmc_buffer[GPS_TAU1201_BUFFER_SIZE];
//-------------------------------------------------------------------------------------------------------------------
static uint8 get_parameter_index (uint8 num, char *str)
{
uint8 i, j = 0;
char *temp;
uint8 len = 0, len1;
uint8 i = 0, j = 0;
char *temp = strchr(str, '\n');
uint8 len = 0, len1 = 0;
temp = strchr(str, '\n');
if(NULL != temp)
{
len = (uint8)((uint32)temp - (uint32)str + 1);
@@ -87,7 +87,7 @@ static uint8 get_parameter_index (uint8 num, char *str)
for(i = 0; i < len; i ++)
{
if(str[i] == ',')
if(',' == str[i])
{
j ++;
}
@@ -111,8 +111,8 @@ static uint8 get_parameter_index (uint8 num, char *str)
static int get_int_number (char *s)
{
char buf[10];
uint8 i;
int return_value;
uint8 i = 0;
int return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
strncpy(buf, s, i);
@@ -130,9 +130,9 @@ static int get_int_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static float get_float_number (char *s)
{
uint8 i;
uint8 i = 0;
char buf[15];
float return_value;
float return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
@@ -151,9 +151,9 @@ static float get_float_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static double get_double_number (char *s)
{
uint8 i;
uint8 i = 0;
char buf[15];
double return_value;
double return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
@@ -172,10 +172,10 @@ static double get_double_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static void utc_to_btc (gps_time_struct *time)
{
uint8 day_num;
uint8 day_num = 0;
time->hour = time->hour + 8;
if(time->hour > 23)
if(23 < time->hour)
{
time->hour -= 24;
time->day += 1;
@@ -183,7 +183,7 @@ static void utc_to_btc (gps_time_struct *time)
if(2 == time->month)
{
day_num = 28;
if((time->year % 4 == 0 && time->year % 100 != 0) || time->year % 400 == 0) // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
if((0 == time->year % 4 && 0 != time->year % 100) || 0 == time->year % 400) // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
{
day_num ++; // <20><><EFBFBD><EFBFBD> 2<><32>Ϊ29<32><39>
}
@@ -201,7 +201,7 @@ static void utc_to_btc (gps_time_struct *time)
{
time->day = 1;
time->month ++;
if(time->month > 12)
if(12 < time->month)
{
time->month -= 12;
time->year ++;
@@ -220,21 +220,21 @@ static void utc_to_btc (gps_time_struct *time)
//-------------------------------------------------------------------------------------------------------------------
static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
{
uint8 state, temp;
uint8 state = 0, temp = 0;
double latitude; // γ<><CEB3>
double longitude; // <20><><EFBFBD><EFBFBD>
double latitude = 0; // γ<><CEB3>
double longitude = 0; // <20><><EFBFBD><EFBFBD>
float lati_cent_tmp, lati_second_tmp;
float long_cent_tmp, long_second_tmp;
float speed_tmp;
double lati_cent_tmp = 0, lati_second_tmp = 0;
double long_cent_tmp = 0, long_second_tmp = 0;
float speed_tmp = 0;
char *buf = line;
uint8 return_state = 0;
state = buf[get_parameter_index(2, buf)];
gps->state = 0;
if (state == 'A') // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if('A' == state) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return_state = 1;
gps->state = 1;
@@ -247,17 +247,17 @@ static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
gps->latitude_degree = (int)latitude / 100; // γ<><CEB3>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>
lati_cent_tmp = (latitude - gps->latitude_degree * 100);
gps->latitude_cent = (int)lati_cent_tmp;
lati_second_tmp = (lati_cent_tmp - gps->latitude_cent) * 10000;
lati_second_tmp = (lati_cent_tmp - gps->latitude_cent) * 6000;
gps->latitude_second = (int)lati_second_tmp;
gps->longitude_degree = (int)longitude / 100; // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>
long_cent_tmp = (longitude - gps->longitude_degree * 100);
gps->longitude_cent = (int)long_cent_tmp;
long_second_tmp = (long_cent_tmp - gps->longitude_cent) * 10000;
long_second_tmp = (long_cent_tmp - gps->longitude_cent) * 6000;
gps->longitude_second = (int)long_second_tmp;
gps->latitude = gps->latitude_degree + (double)gps->latitude_cent / 60 + (double)gps->latitude_second / 600000;
gps->longitude = gps->longitude_degree + (double)gps->longitude_cent / 60 + (double)gps->longitude_second / 600000;
gps->latitude = gps->latitude_degree + lati_cent_tmp / 60;
gps->longitude = gps->longitude_degree + long_cent_tmp / 60;
speed_tmp = get_float_number(&buf[get_parameter_index(7, buf)]); // <20>ٶ<EFBFBD>(<28><><EFBFBD><EFBFBD>/Сʱ)
gps->speed = speed_tmp * 1.85f; // ת<><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>/Сʱ
@@ -288,13 +288,13 @@ static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
//-------------------------------------------------------------------------------------------------------------------
static uint8 gps_gngga_parse (char *line, gps_info_struct *gps)
{
uint8 state;
uint8 state = 0;
char *buf = line;
uint8 return_state = 0;
state = buf[get_parameter_index(2, buf)];
if (state != ',')
if(',' != state)
{
gps->satellite_used = (uint8)get_int_number(&buf[get_parameter_index(7, buf)]);
gps->height = get_float_number(&buf[get_parameter_index(9, buf)]) + get_float_number(&buf[get_parameter_index(11, buf)]); // <20>߶<EFBFBD> = <20><><EFBFBD>θ߶<CEB8> + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ˮ׼<CBAE><D7BC><EFBFBD>ĸ߶<C4B8>
@@ -317,13 +317,13 @@ static uint8 gps_gngga_parse (char *line, gps_info_struct *gps)
double get_two_points_distance (double latitude1, double longitude1, double latitude2, double longitude2)
{
const double EARTH_RADIUS = 6378137; // <20><><EFBFBD><EFBFBD><EFBFBD>뾶(<28><>λ<EFBFBD><CEBB>m)
double rad_latitude1;
double rad_latitude2;
double rad_longitude1;
double rad_longitude2;
double distance;
double a;
double b;
double rad_latitude1 = 0;
double rad_latitude2 = 0;
double rad_longitude1 = 0;
double rad_longitude2 = 0;
double distance = 0;
double a = 0;
double b = 0;
rad_latitude1 = ANGLE_TO_RAD(latitude1); // <20><><EFBFBD>ݽǶȼ<C7B6><C8BC><EFBFBD><E3BBA1>
rad_latitude2 = ANGLE_TO_RAD(latitude2);
@@ -359,7 +359,7 @@ double get_two_points_azimuth (double latitude1, double longitude1, double latit
double x = sin(longitude2 - longitude1) * cos(latitude2);
double y = cos(latitude1) * sin(latitude2) - sin(latitude1) * cos(latitude2) * cos(longitude2 - longitude1);
double angle = RAD_TO_ANGLE(atan2(x, y));
return ((angle > 0) ? angle : (angle + 360));
return ((0 < angle) ? angle : (angle + 360));
}
//-------------------------------------------------------------------------------------------------------------------
@@ -375,16 +375,16 @@ uint8 gps_data_parse (void)
uint8 check_buffer[5] = {'0', 'x', 0x00, 0x00, 0x00};
uint8 bbc_xor_origin = 0;
uint8 bbc_xor_calculation = 0;
uint32 data_len;
uint32 data_len = 0;
do
{
if(GPS_STATE_RECEIVED == gps_rmc_state)
{
gps_rmc_state = GPS_STATE_PARSING;
strncpy((char *)&check_buffer[2], strchr((const char *)gps_rmc_buffer, '*')+1, 2);
strncpy((char *)&check_buffer[2], strchr((const char *)gps_rmc_buffer, '*') + 1, 2);
bbc_xor_origin = (uint8)func_str_to_hex((char *)check_buffer);
for(bbc_xor_calculation = gps_rmc_buffer[1], data_len = 2; gps_rmc_buffer[data_len] != '*'; data_len ++)
for(bbc_xor_calculation = gps_rmc_buffer[1], data_len = 2; '*' != gps_rmc_buffer[data_len]; data_len ++)
{
bbc_xor_calculation ^= gps_rmc_buffer[data_len];
}
@@ -402,10 +402,10 @@ uint8 gps_data_parse (void)
if(GPS_STATE_RECEIVED == gps_gga_state)
{
gps_gga_state = GPS_STATE_PARSING;
strncpy((char *)&check_buffer[2], strchr((const char *)gps_gga_buffer, '*')+1, 2);
strncpy((char *)&check_buffer[2], strchr((const char *)gps_gga_buffer, '*') + 1, 2);
bbc_xor_origin = (uint8)func_str_to_hex((char *)check_buffer);
for(bbc_xor_calculation = gps_gga_buffer[1], data_len = 2; gps_gga_buffer[data_len] != '*'; data_len ++)
for(bbc_xor_calculation = gps_gga_buffer[1], data_len = 2; '*' != gps_gga_buffer[data_len]; data_len ++)
{
bbc_xor_calculation ^= gps_gga_buffer[data_len];
}
@@ -435,7 +435,7 @@ uint8 gps_data_parse (void)
void gps_uart_callback (void)
{
uint8 temp_gps[6];
uint32 temp_length;
uint32 temp_length = 0;
if(gps_tau1201_state)
{
@@ -507,8 +507,7 @@ uint8 gps_init (void)
fifo_init(&gps_tau1201_receiver_fifo, FIFO_DATA_8BIT, gps_tau1201_receiver_buffer, GPS_TAU1201_BUFFER_SIZE);
system_delay_ms(500); // <20>ȴ<EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ʼ<EFBFBD><CABC>
uart_init(GPS_TAU1201_UART, 115200, GPS_TAU1201_RX, GPS_TAU1201_TX);
set_wireless_type(GPS_TAU1201, gps_uart_callback);
uart_rx_interrupt(GPS_TAU1201_UART, 0);
uart_write_buffer(GPS_TAU1201_UART, (uint8 *)set_rate, sizeof(set_rate)); // <20><><EFBFBD><EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ10hz <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ1hz
system_delay_ms(200);

View File

@@ -49,9 +49,9 @@
#include "zf_common_typedef.h"
//===============================================GPS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define GPS_TAU1201_UART (UART_2)
#define GPS_TAU1201_RX (UART2_TX_P10_5) // GPS RX<52><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>
#define GPS_TAU1201_TX (UART2_RX_P10_6) // GPS TX<54><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define GPS_TAU1201_UART (UART_3)
#define GPS_TAU1201_RX (UART3_TX_P15_6) // GPS RX<52><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>
#define GPS_TAU1201_TX (UART3_RX_P15_7) // GPS TX<54><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//===============================================GPS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define ANGLE_TO_RAD(x) ((x) * PI / 180.0) // <20>Ƕ<EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>

View File

@@ -137,8 +137,8 @@
//================================================<3D><><EFBFBD><EFBFBD> IMU963RA <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
//===============================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>===============================================
extern int16 imu963ra_acc_x, imu963ra_acc_y, imu963ra_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_gyro_x, imu963ra_gyro_y, imu963ra_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_gyro_x, imu963ra_gyro_y, imu963ra_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_acc_x, imu963ra_acc_y, imu963ra_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_mag_x, imu963ra_mag_y, imu963ra_mag_z; // <20><><EFBFBD><EFBFBD><EFBFBD>شż<D8B4><C5BC><EFBFBD><EFBFBD><EFBFBD>
//===============================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>===============================================

View File

@@ -1,10 +1,10 @@
/*********************************************************************************************************************
* MM32F327X-G9P Opensourec Library <20><><EFBFBD><EFBFBD>MM32F327X-G9P <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
*
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> MM32F327X-G9P <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
*
* MM32F327X-G9P <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD><EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>޸<EFBFBD><DEB8><EFBFBD>
*
@@ -24,13 +24,13 @@
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_key
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* <20><EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IAR 8.32.4 or MDK 5.37
* <20><><EFBFBD><EFBFBD>ƽ̨ MM32F327X_G9P
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.8.0
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-08-10 Teternal first version
* 2022-09-15 pudding first version
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -45,6 +45,7 @@
********************************************************************************************************************/
#include "zf_common_debug.h"
#include "zf_device_key.h"
static uint32 scanner_period = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -65,54 +66,21 @@ void key_scanner (void)
uint8 i = 0;
for(i = 0; i < KEY_NUMBER; i ++)
{
switch(key_state[i])
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i])) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
case KEY_RELEASE:
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i]))
{
if(++ key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
else
{
key_state[i] = KEY_CHECK_SHOCK;
}
}
break;
case KEY_CHECK_SHOCK:
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i]))
{
if(++ key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
}
else
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
case KEY_SHORT_PRESS:
if(++ key_press_time[i] >= KEY_LONG_PRESS_PERIOD / scanner_period)
{
key_state[i] = KEY_LONG_PRESS;
}
if(KEY_RELEASE_LEVEL == gpio_get_level(key_index[i]))
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
case KEY_LONG_PRESS:
if(KEY_RELEASE_LEVEL == gpio_get_level(key_index[i]))
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
key_press_time[i] ++;
if(key_press_time[i] >= KEY_LONG_PRESS_PERIOD / scanner_period)
{
key_state[i] = KEY_LONG_PRESS;
}
}
else // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
{
if(key_state[i] != KEY_LONG_PRESS && key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
key_press_time[i] = 0;
}
}
}
@@ -129,6 +97,33 @@ key_state_enum key_get_state (key_index_enum key_n)
return key_state[key_n];
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>״̬
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> key_n <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void <20><>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_clear_state(KEY_1);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void key_clear_state (key_index_enum key_n)
{
key_state[key_n] = KEY_RELEASE;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD>״̬
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void <20><>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void <20><>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_clear_all_state();
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void key_clear_all_state (void)
{
key_state[0] = KEY_RELEASE;
key_state[1] = KEY_RELEASE;
key_state[2] = KEY_RELEASE;
key_state[3] = KEY_RELEASE;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> period <20><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ժ<EFBFBD><D4BA><EFBFBD>Ϊ<EFBFBD><CEAA>λ
@@ -136,17 +131,14 @@ key_state_enum key_get_state (key_index_enum key_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_init(10);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
uint8 key_init (uint32 period)
void key_init (uint32 period)
{
zf_assert(0 < period);
uint8 loop_temp = 0;
zf_assert(0 < period); // ɨ<><C9A8><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
for(loop_temp = 0; loop_temp < KEY_NUMBER; loop_temp ++)
{
gpio_init(key_index[loop_temp], GPI, GPIO_HIGH, GPI_PULL_UP);
key_state[loop_temp] = KEY_RELEASE;
}
scanner_period = period;
return 0;
}

View File

@@ -1,10 +1,10 @@
/*********************************************************************************************************************
* MM32F327X-G9P Opensourec Library <20><><EFBFBD><EFBFBD>MM32F327X-G9P <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
*
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> MM32F327X-G9P <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
*
* MM32F327X-G9P <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD><EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>޸<EFBFBD><DEB8><EFBFBD>
*
@@ -24,13 +24,13 @@
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_key
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* <20><EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IAR 8.32.4 or MDK 5.37
* <20><><EFBFBD><EFBFBD>ƽ̨ MM32F327X_G9P
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.8.0
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-08-10 Teternal first version
* 2022-09-15 pudding first version
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -53,13 +53,12 @@
// <20><><EFBFBD><EFBFBD><E5B0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD> Ĭ<>϶<EFBFBD><CFB6><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><E5B0B4>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>Ӧ<EFBFBD>·<EFBFBD> key_index_enum ö<><C3B6><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3>
// <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ô<EFBFBD><C3B4>Ҫͬ<D2AA><CDAC><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD> key_index_enum ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define KEY_LIST {P22_0, P22_1, P22_2, P22_3}
#define KEY_LIST {P20_6, P20_7, P11_2, P11_3}
#define KEY_RELEASE_LEVEL (GPIO_HIGH) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>״̬ Ҳ<><D2B2><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ͷ<EFBFBD>״̬<D7B4>ĵ<EFBFBD>ƽ
#define KEY_MAX_SHOCK_PERIOD (10 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>źŻᱻ<C5BB><E1B1BB>Ϊ<EFBFBD><CEAA><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD>
#define KEY_LONG_PRESS_PERIOD (1000 ) // <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
#define KEY_LONG_PRESS_PERIOD (1000 ) // <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>źŻᱻ<C5BB><E1B1BB>Ϊ<EFBFBD>dz<EFBFBD><C7B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//=================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
typedef enum
{
KEY_1,
@@ -72,15 +71,14 @@ typedef enum
typedef enum
{
KEY_RELEASE, // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>״̬
KEY_CHECK_SHOCK, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
KEY_SHORT_PRESS, // <20><><EFBFBD><EFBFBD><EFBFBD>̰<EFBFBD>״̬
KEY_LONG_PRESS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
}key_state_enum;
//=================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
void key_scanner (void); // <20><><EFBFBD><EFBFBD>״̬ɨ<CCAC><C9A8>
key_state_enum key_get_state (key_index_enum key_n); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>״̬
uint8 key_init (uint32 period); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
void key_scanner (void);
key_state_enum key_get_state (key_index_enum key_n);
void key_clear_state (key_index_enum key_n);
void key_clear_all_state (void);
void key_init (uint32 period);
#endif

View File

@@ -60,7 +60,7 @@
// TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD>ڲɼ<DAB2><C9BC><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD> ʹ<>õ<EFBFBD><C3B5>ĸ<EFBFBD> PIT <20><>Ҫ<EFBFBD><D2AA> <20><><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD> PIT <20><><EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TSL1401_EXPOSURE_TIME (10 ) // <20><><EFBFBD><EFBFBD> TSL1401 <20>ع<EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ MS
#define TSL1401_PIT_INDEX (CCU60_CH0) // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
#define TSL1401_PIT_INDEX (CCU61_CH1) // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
#define TSL1401_AD_RESOLUTION (ADC_8BIT) // ADC <20><><EFBFBD><EFBFBD> 8bit
#define TSL1401_DATA_LEN (128 ) // TSL1401 <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
//=================================================TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================

View File

@@ -53,9 +53,7 @@ typedef enum
NO_WIRELESS = 0, // <20><><EFBFBD>
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
GPS_TAU1201,
WIFI_UART,
WIFI_SPI,
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
}wireless_type_enum;
//==============================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ö<><C3B6><EFBFBD><EFBFBD>==================================================

View File

@@ -40,7 +40,7 @@
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> systick<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱһ<CAB1>ֵ<EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3A8>λΪ<CEBB><CEAA><EFBFBD><EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-20000000<30><30>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> num <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
@@ -60,3 +60,25 @@ void system_delay (uint32 time, uint32 num)
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system ΢<><CEA2> <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱʱ<CAB1><CAB1> <20><>λ<EFBFBD><CEBB>us
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> system_delay_us(100); // <20><>ʱ100΢<30><CEA2>
//-------------------------------------------------------------------------------------------------------------------
void system_delay_us (uint32 time)
{
system_delay(time*1000, 1);
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system <20><><EFBFBD><EFBFBD> <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱʱ<CAB1><CAB1> <20><>λ<EFBFBD><CEBB>ms
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> system_delay_ms(100); // <20><>ʱ100<30><30><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void system_delay_ms (uint32 time)
{
system_delay(1000000, time);
}

View File

@@ -38,13 +38,10 @@
#include "zf_common_typedef.h"
void system_delay (uint32 time, uint32 num);
//====================================================<3D><>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define system_delay_ms(time) system_delay((1000000), (time)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λms
#define system_delay_us(time) system_delay((time*1000), (1)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λus
#define system_delay_ns(time) system_delay((time), (1)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λns
void system_delay (uint32 time, uint32 num);
void system_delay_us (uint32 time);
void system_delay_ms (uint32 time);
//====================================================<3D><>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================

View File

@@ -41,7 +41,6 @@ IFX_INTERRUPT(cc60_pit_ch0_isr, 0, CCU6_0_CH0_ISR_PRIORITY)
{
interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
pit_clear_flag(CCU60_CH0);
tsl1401_collect_pit_handler(); // <20><><EFBFBD><EFBFBD>CCD<43>ɼ<EFBFBD>
}
@@ -75,12 +74,48 @@ IFX_INTERRUPT(cc61_pit_ch1_isr, 0, CCU6_1_CH1_ISR_PRIORITY)
}
// **************************** PIT<49>жϺ<D0B6><CFBA><EFBFBD> ****************************
// **************************** <20>ⲿ<EFBFBD>жϺ<D0B6><CFBA><EFBFBD> ****************************
//IFX_INTERRUPT(exti_ch0_ch4_isr, 0, EXTI_CH0_CH4_INT_PRIO)
//{
// interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
// if(exti_flag_get(ERU_CH0_REQ0_P15_4)) // ͨ<><CDA8>0<EFBFBD>ж<EFBFBD>
// {
// exti_flag_clear(ERU_CH0_REQ0_P15_4);
//
// }
//
// if(exti_flag_get(ERU_CH4_REQ13_P15_5)) // ͨ<><CDA8>4<EFBFBD>ж<EFBFBD>
// {
// exti_flag_clear(ERU_CH4_REQ13_P15_5);
//
//
//
//
// }
//}
//
//IFX_INTERRUPT(exti_ch1_ch5_isr, 0, EXTI_CH1_CH5_INT_PRIO)
//{
// interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
// if(exti_flag_get(ERU_CH1_REQ10_P14_3)) // ͨ<><CDA8>1<EFBFBD>ж<EFBFBD>
// {
// exti_flag_clear(ERU_CH1_REQ10_P14_3);
//
//
//
// }
//
// if(exti_flag_get(ERU_CH5_REQ1_P15_8)) // ͨ<><CDA8>5<EFBFBD>ж<EFBFBD>
// {
// exti_flag_clear(ERU_CH5_REQ1_P15_8);
//
//
// }
//}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷpclk<6C><6B><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><32><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD>
// IFX_INTERRUPT(exti_ch2_ch6_isr, 0, EXTI_CH2_CH6_INT_PRIO)
@@ -221,7 +256,7 @@ IFX_INTERRUPT(uart3_rx_isr, 0, UART3_RX_INT_PRIO)
IfxAsclin_Asc_isrReceive(&uart3_handle);
gps_uart_callback();
}

View File

@@ -1,3 +1,7 @@
V3.1.6
<20>޸<EFBFBD>GPSʹ<53>ô<EFBFBD><C3B4>ںţ<DABA><C5A3>Ż<EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
isr.c<><63><EFBFBD>Ƴ<EFBFBD>CCD<43>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸İ<DEB8><C4B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>İ<EFBFBD><C4B0><EFBFBD><EFBFBD>˿ںţ<DABA><C5A3><EFBFBD><EFBFBD><EFBFBD>V2.6<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V3.1.5
<20>޸<EFBFBD>Ӳ<EFBFBD><D3B2>SPI<50><49>ʼ<EFBFBD><CABC>ʱѡ<CAB1><D1A1><EFBFBD><EFBFBD>CS<43><53><EFBFBD>ţ<EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD>ʼ<EFBFBD><CABC>Ĭ<EFBFBD><C4AC>CS<43><53><EFBFBD>ŵ<EFBFBD>bug
V3.1.4

View File

@@ -43,24 +43,25 @@
* ------------------------------------
********************************************************************************************************************/
#include "math.h"
#include "zf_common_function.h"
#include "zf_common_fifo.h"
#include "zf_driver_delay.h"
#include "zf_driver_uart.h"
#include "zf_device_type.h"
#include "zf_device_gps_tau1201.h"
#define GPS_TAU1201_BUFFER_SIZE (128)
#define GPS_TAU1201_BUFFER_SIZE ( 128 )
uint8 gps_tau1201_flag; // 1<><31><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɵȴ<C9B5><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30>û<EFBFBD>вɼ<D0B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
uint8 gps_tau1201_flag = 0; // 1<><31><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɵȴ<C9B5><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30>û<EFBFBD>вɼ<D0B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
gps_info_struct gps_tau1201; // GPS<50><53><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static uint8 gps_tau1201_state = 0; // 1<><31>GPS<50><53>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static fifo_struct gps_tau1201_receiver_fifo; //
static uint8 gps_tau1201_receiver_buffer[GPS_TAU1201_BUFFER_SIZE]; // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gps_state_enum gps_gga_state; // gga<67><61><EFBFBD><EFBFBD>״̬
gps_state_enum gps_rmc_state; // rmc<6D><63><EFBFBD><EFBFBD>״̬
gps_state_enum gps_gga_state = GPS_STATE_RECEIVING; // gga <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
gps_state_enum gps_rmc_state = GPS_STATE_RECEIVING; // rmc <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
static uint8 gps_gga_buffer[GPS_TAU1201_BUFFER_SIZE];
static uint8 gps_rmc_buffer[GPS_TAU1201_BUFFER_SIZE];
@@ -75,11 +76,10 @@ static uint8 gps_rmc_buffer[GPS_TAU1201_BUFFER_SIZE];
//-------------------------------------------------------------------------------------------------------------------
static uint8 get_parameter_index (uint8 num, char *str)
{
uint8 i, j = 0;
char *temp;
uint8 len = 0, len1;
uint8 i = 0, j = 0;
char *temp = strchr(str, '\n');
uint8 len = 0, len1 = 0;
temp = strchr(str, '\n');
if(NULL != temp)
{
len = (uint8)((uint32)temp - (uint32)str + 1);
@@ -87,7 +87,7 @@ static uint8 get_parameter_index (uint8 num, char *str)
for(i = 0; i < len; i ++)
{
if(str[i] == ',')
if(',' == str[i])
{
j ++;
}
@@ -111,8 +111,8 @@ static uint8 get_parameter_index (uint8 num, char *str)
static int get_int_number (char *s)
{
char buf[10];
uint8 i;
int return_value;
uint8 i = 0;
int return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
strncpy(buf, s, i);
@@ -130,9 +130,9 @@ static int get_int_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static float get_float_number (char *s)
{
uint8 i;
uint8 i = 0;
char buf[15];
float return_value;
float return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
@@ -151,9 +151,9 @@ static float get_float_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static double get_double_number (char *s)
{
uint8 i;
uint8 i = 0;
char buf[15];
double return_value;
double return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
@@ -172,10 +172,10 @@ static double get_double_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static void utc_to_btc (gps_time_struct *time)
{
uint8 day_num;
uint8 day_num = 0;
time->hour = time->hour + 8;
if(time->hour > 23)
if(23 < time->hour)
{
time->hour -= 24;
time->day += 1;
@@ -183,7 +183,7 @@ static void utc_to_btc (gps_time_struct *time)
if(2 == time->month)
{
day_num = 28;
if((time->year % 4 == 0 && time->year % 100 != 0) || time->year % 400 == 0) // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
if((0 == time->year % 4 && 0 != time->year % 100) || 0 == time->year % 400) // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
{
day_num ++; // <20><><EFBFBD><EFBFBD> 2<><32>Ϊ29<32><39>
}
@@ -201,7 +201,7 @@ static void utc_to_btc (gps_time_struct *time)
{
time->day = 1;
time->month ++;
if(time->month > 12)
if(12 < time->month)
{
time->month -= 12;
time->year ++;
@@ -220,21 +220,21 @@ static void utc_to_btc (gps_time_struct *time)
//-------------------------------------------------------------------------------------------------------------------
static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
{
uint8 state, temp;
uint8 state = 0, temp = 0;
double latitude; // γ<><CEB3>
double longitude; // <20><><EFBFBD><EFBFBD>
double latitude = 0; // γ<><CEB3>
double longitude = 0; // <20><><EFBFBD><EFBFBD>
float lati_cent_tmp, lati_second_tmp;
float long_cent_tmp, long_second_tmp;
float speed_tmp;
double lati_cent_tmp = 0, lati_second_tmp = 0;
double long_cent_tmp = 0, long_second_tmp = 0;
float speed_tmp = 0;
char *buf = line;
uint8 return_state = 0;
state = buf[get_parameter_index(2, buf)];
gps->state = 0;
if (state == 'A') // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if('A' == state) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return_state = 1;
gps->state = 1;
@@ -247,17 +247,17 @@ static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
gps->latitude_degree = (int)latitude / 100; // γ<><CEB3>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>
lati_cent_tmp = (latitude - gps->latitude_degree * 100);
gps->latitude_cent = (int)lati_cent_tmp;
lati_second_tmp = (lati_cent_tmp - gps->latitude_cent) * 10000;
lati_second_tmp = (lati_cent_tmp - gps->latitude_cent) * 6000;
gps->latitude_second = (int)lati_second_tmp;
gps->longitude_degree = (int)longitude / 100; // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>
long_cent_tmp = (longitude - gps->longitude_degree * 100);
gps->longitude_cent = (int)long_cent_tmp;
long_second_tmp = (long_cent_tmp - gps->longitude_cent) * 10000;
long_second_tmp = (long_cent_tmp - gps->longitude_cent) * 6000;
gps->longitude_second = (int)long_second_tmp;
gps->latitude = gps->latitude_degree + (double)gps->latitude_cent / 60 + (double)gps->latitude_second / 600000;
gps->longitude = gps->longitude_degree + (double)gps->longitude_cent / 60 + (double)gps->longitude_second / 600000;
gps->latitude = gps->latitude_degree + lati_cent_tmp / 60;
gps->longitude = gps->longitude_degree + long_cent_tmp / 60;
speed_tmp = get_float_number(&buf[get_parameter_index(7, buf)]); // <20>ٶ<EFBFBD>(<28><><EFBFBD><EFBFBD>/Сʱ)
gps->speed = speed_tmp * 1.85f; // ת<><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>/Сʱ
@@ -288,13 +288,13 @@ static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
//-------------------------------------------------------------------------------------------------------------------
static uint8 gps_gngga_parse (char *line, gps_info_struct *gps)
{
uint8 state;
uint8 state = 0;
char *buf = line;
uint8 return_state = 0;
state = buf[get_parameter_index(2, buf)];
if (state != ',')
if(',' != state)
{
gps->satellite_used = (uint8)get_int_number(&buf[get_parameter_index(7, buf)]);
gps->height = get_float_number(&buf[get_parameter_index(9, buf)]) + get_float_number(&buf[get_parameter_index(11, buf)]); // <20>߶<EFBFBD> = <20><><EFBFBD>θ߶<CEB8> + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ˮ׼<CBAE><D7BC><EFBFBD>ĸ߶<C4B8>
@@ -317,13 +317,13 @@ static uint8 gps_gngga_parse (char *line, gps_info_struct *gps)
double get_two_points_distance (double latitude1, double longitude1, double latitude2, double longitude2)
{
const double EARTH_RADIUS = 6378137; // <20><><EFBFBD><EFBFBD><EFBFBD>뾶(<28><>λ<EFBFBD><CEBB>m)
double rad_latitude1;
double rad_latitude2;
double rad_longitude1;
double rad_longitude2;
double distance;
double a;
double b;
double rad_latitude1 = 0;
double rad_latitude2 = 0;
double rad_longitude1 = 0;
double rad_longitude2 = 0;
double distance = 0;
double a = 0;
double b = 0;
rad_latitude1 = ANGLE_TO_RAD(latitude1); // <20><><EFBFBD>ݽǶȼ<C7B6><C8BC><EFBFBD><E3BBA1>
rad_latitude2 = ANGLE_TO_RAD(latitude2);
@@ -359,7 +359,7 @@ double get_two_points_azimuth (double latitude1, double longitude1, double latit
double x = sin(longitude2 - longitude1) * cos(latitude2);
double y = cos(latitude1) * sin(latitude2) - sin(latitude1) * cos(latitude2) * cos(longitude2 - longitude1);
double angle = RAD_TO_ANGLE(atan2(x, y));
return ((angle > 0) ? angle : (angle + 360));
return ((0 < angle) ? angle : (angle + 360));
}
//-------------------------------------------------------------------------------------------------------------------
@@ -375,16 +375,16 @@ uint8 gps_data_parse (void)
uint8 check_buffer[5] = {'0', 'x', 0x00, 0x00, 0x00};
uint8 bbc_xor_origin = 0;
uint8 bbc_xor_calculation = 0;
uint32 data_len;
uint32 data_len = 0;
do
{
if(GPS_STATE_RECEIVED == gps_rmc_state)
{
gps_rmc_state = GPS_STATE_PARSING;
strncpy((char *)&check_buffer[2], strchr((const char *)gps_rmc_buffer, '*')+1, 2);
strncpy((char *)&check_buffer[2], strchr((const char *)gps_rmc_buffer, '*') + 1, 2);
bbc_xor_origin = (uint8)func_str_to_hex((char *)check_buffer);
for(bbc_xor_calculation = gps_rmc_buffer[1], data_len = 2; gps_rmc_buffer[data_len] != '*'; data_len ++)
for(bbc_xor_calculation = gps_rmc_buffer[1], data_len = 2; '*' != gps_rmc_buffer[data_len]; data_len ++)
{
bbc_xor_calculation ^= gps_rmc_buffer[data_len];
}
@@ -402,10 +402,10 @@ uint8 gps_data_parse (void)
if(GPS_STATE_RECEIVED == gps_gga_state)
{
gps_gga_state = GPS_STATE_PARSING;
strncpy((char *)&check_buffer[2], strchr((const char *)gps_gga_buffer, '*')+1, 2);
strncpy((char *)&check_buffer[2], strchr((const char *)gps_gga_buffer, '*') + 1, 2);
bbc_xor_origin = (uint8)func_str_to_hex((char *)check_buffer);
for(bbc_xor_calculation = gps_gga_buffer[1], data_len = 2; gps_gga_buffer[data_len] != '*'; data_len ++)
for(bbc_xor_calculation = gps_gga_buffer[1], data_len = 2; '*' != gps_gga_buffer[data_len]; data_len ++)
{
bbc_xor_calculation ^= gps_gga_buffer[data_len];
}
@@ -435,7 +435,7 @@ uint8 gps_data_parse (void)
void gps_uart_callback (void)
{
uint8 temp_gps[6];
uint32 temp_length;
uint32 temp_length = 0;
if(gps_tau1201_state)
{
@@ -507,8 +507,7 @@ uint8 gps_init (void)
fifo_init(&gps_tau1201_receiver_fifo, FIFO_DATA_8BIT, gps_tau1201_receiver_buffer, GPS_TAU1201_BUFFER_SIZE);
system_delay_ms(500); // <20>ȴ<EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ʼ<EFBFBD><CABC>
uart_init(GPS_TAU1201_UART, 115200, GPS_TAU1201_RX, GPS_TAU1201_TX);
set_wireless_type(GPS_TAU1201, gps_uart_callback);
uart_rx_interrupt(GPS_TAU1201_UART, 0);
uart_write_buffer(GPS_TAU1201_UART, (uint8 *)set_rate, sizeof(set_rate)); // <20><><EFBFBD><EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ10hz <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ1hz
system_delay_ms(200);

View File

@@ -49,9 +49,9 @@
#include "zf_common_typedef.h"
//===============================================GPS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define GPS_TAU1201_UART (UART_2)
#define GPS_TAU1201_RX (UART2_TX_P10_5) // GPS RX<52><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>
#define GPS_TAU1201_TX (UART2_RX_P10_6) // GPS TX<54><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define GPS_TAU1201_UART (UART_3)
#define GPS_TAU1201_RX (UART3_TX_P15_6) // GPS RX<52><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>
#define GPS_TAU1201_TX (UART3_RX_P15_7) // GPS TX<54><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//===============================================GPS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define ANGLE_TO_RAD(x) ((x) * PI / 180.0) // <20>Ƕ<EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>

View File

@@ -137,8 +137,8 @@
//================================================<3D><><EFBFBD><EFBFBD> IMU963RA <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
//===============================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>===============================================
extern int16 imu963ra_acc_x, imu963ra_acc_y, imu963ra_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_gyro_x, imu963ra_gyro_y, imu963ra_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_gyro_x, imu963ra_gyro_y, imu963ra_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_acc_x, imu963ra_acc_y, imu963ra_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_mag_x, imu963ra_mag_y, imu963ra_mag_z; // <20><><EFBFBD><EFBFBD><EFBFBD>شż<D8B4><C5BC><EFBFBD><EFBFBD><EFBFBD>
//===============================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>===============================================

View File

@@ -1,10 +1,10 @@
/*********************************************************************************************************************
* MM32F327X-G9P Opensourec Library <20><><EFBFBD><EFBFBD>MM32F327X-G9P <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
*
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> MM32F327X-G9P <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
*
* MM32F327X-G9P <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD><EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>޸<EFBFBD><DEB8><EFBFBD>
*
@@ -24,13 +24,13 @@
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_key
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* <20><EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IAR 8.32.4 or MDK 5.37
* <20><><EFBFBD><EFBFBD>ƽ̨ MM32F327X_G9P
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.8.0
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-08-10 Teternal first version
* 2022-09-15 pudding first version
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -45,6 +45,7 @@
********************************************************************************************************************/
#include "zf_common_debug.h"
#include "zf_device_key.h"
static uint32 scanner_period = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -65,54 +66,21 @@ void key_scanner (void)
uint8 i = 0;
for(i = 0; i < KEY_NUMBER; i ++)
{
switch(key_state[i])
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i])) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
case KEY_RELEASE:
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i]))
{
if(++ key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
else
{
key_state[i] = KEY_CHECK_SHOCK;
}
}
break;
case KEY_CHECK_SHOCK:
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i]))
{
if(++ key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
}
else
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
case KEY_SHORT_PRESS:
if(++ key_press_time[i] >= KEY_LONG_PRESS_PERIOD / scanner_period)
{
key_state[i] = KEY_LONG_PRESS;
}
if(KEY_RELEASE_LEVEL == gpio_get_level(key_index[i]))
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
case KEY_LONG_PRESS:
if(KEY_RELEASE_LEVEL == gpio_get_level(key_index[i]))
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
key_press_time[i] ++;
if(key_press_time[i] >= KEY_LONG_PRESS_PERIOD / scanner_period)
{
key_state[i] = KEY_LONG_PRESS;
}
}
else // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
{
if(key_state[i] != KEY_LONG_PRESS && key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
key_press_time[i] = 0;
}
}
}
@@ -129,6 +97,33 @@ key_state_enum key_get_state (key_index_enum key_n)
return key_state[key_n];
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>״̬
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> key_n <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void <20><>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_clear_state(KEY_1);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void key_clear_state (key_index_enum key_n)
{
key_state[key_n] = KEY_RELEASE;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD>״̬
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void <20><>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void <20><>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_clear_all_state();
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void key_clear_all_state (void)
{
key_state[0] = KEY_RELEASE;
key_state[1] = KEY_RELEASE;
key_state[2] = KEY_RELEASE;
key_state[3] = KEY_RELEASE;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> period <20><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ժ<EFBFBD><D4BA><EFBFBD>Ϊ<EFBFBD><CEAA>λ
@@ -136,17 +131,14 @@ key_state_enum key_get_state (key_index_enum key_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_init(10);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
uint8 key_init (uint32 period)
void key_init (uint32 period)
{
zf_assert(0 < period);
uint8 loop_temp = 0;
zf_assert(0 < period); // ɨ<><C9A8><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
for(loop_temp = 0; loop_temp < KEY_NUMBER; loop_temp ++)
{
gpio_init(key_index[loop_temp], GPI, GPIO_HIGH, GPI_PULL_UP);
key_state[loop_temp] = KEY_RELEASE;
}
scanner_period = period;
return 0;
}

View File

@@ -1,10 +1,10 @@
/*********************************************************************************************************************
* MM32F327X-G9P Opensourec Library <20><><EFBFBD><EFBFBD>MM32F327X-G9P <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
*
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> MM32F327X-G9P <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
*
* MM32F327X-G9P <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD><EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>޸<EFBFBD><DEB8><EFBFBD>
*
@@ -24,13 +24,13 @@
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_key
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* <20><EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IAR 8.32.4 or MDK 5.37
* <20><><EFBFBD><EFBFBD>ƽ̨ MM32F327X_G9P
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.8.0
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-08-10 Teternal first version
* 2022-09-15 pudding first version
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -53,13 +53,12 @@
// <20><><EFBFBD><EFBFBD><E5B0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD> Ĭ<>϶<EFBFBD><CFB6><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><E5B0B4>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>Ӧ<EFBFBD>·<EFBFBD> key_index_enum ö<><C3B6><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3>
// <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ô<EFBFBD><C3B4>Ҫͬ<D2AA><CDAC><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD> key_index_enum ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define KEY_LIST {P22_0, P22_1, P22_2, P22_3}
#define KEY_LIST {P20_6, P20_7, P11_2, P11_3}
#define KEY_RELEASE_LEVEL (GPIO_HIGH) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>״̬ Ҳ<><D2B2><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ͷ<EFBFBD>״̬<D7B4>ĵ<EFBFBD>ƽ
#define KEY_MAX_SHOCK_PERIOD (10 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>źŻᱻ<C5BB><E1B1BB>Ϊ<EFBFBD><CEAA><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD>
#define KEY_LONG_PRESS_PERIOD (1000 ) // <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
#define KEY_LONG_PRESS_PERIOD (1000 ) // <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>źŻᱻ<C5BB><E1B1BB>Ϊ<EFBFBD>dz<EFBFBD><C7B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//=================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
typedef enum
{
KEY_1,
@@ -72,15 +71,14 @@ typedef enum
typedef enum
{
KEY_RELEASE, // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>״̬
KEY_CHECK_SHOCK, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
KEY_SHORT_PRESS, // <20><><EFBFBD><EFBFBD><EFBFBD>̰<EFBFBD>״̬
KEY_LONG_PRESS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
}key_state_enum;
//=================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
void key_scanner (void); // <20><><EFBFBD><EFBFBD>״̬ɨ<CCAC><C9A8>
key_state_enum key_get_state (key_index_enum key_n); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>״̬
uint8 key_init (uint32 period); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
void key_scanner (void);
key_state_enum key_get_state (key_index_enum key_n);
void key_clear_state (key_index_enum key_n);
void key_clear_all_state (void);
void key_init (uint32 period);
#endif

View File

@@ -60,7 +60,7 @@
// TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD>ڲɼ<DAB2><C9BC><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD> ʹ<>õ<EFBFBD><C3B5>ĸ<EFBFBD> PIT <20><>Ҫ<EFBFBD><D2AA> <20><><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD> PIT <20><><EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TSL1401_EXPOSURE_TIME (10 ) // <20><><EFBFBD><EFBFBD> TSL1401 <20>ع<EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ MS
#define TSL1401_PIT_INDEX (CCU60_CH0) // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
#define TSL1401_PIT_INDEX (CCU61_CH1) // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
#define TSL1401_AD_RESOLUTION (ADC_8BIT) // ADC <20><><EFBFBD><EFBFBD> 8bit
#define TSL1401_DATA_LEN (128 ) // TSL1401 <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
//=================================================TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================

View File

@@ -53,9 +53,7 @@ typedef enum
NO_WIRELESS = 0, // <20><><EFBFBD>
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
GPS_TAU1201,
WIFI_UART,
WIFI_SPI,
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
}wireless_type_enum;
//==============================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ö<><C3B6><EFBFBD><EFBFBD>==================================================

View File

@@ -40,7 +40,7 @@
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> systick<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱһ<CAB1>ֵ<EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3A8>λΪ<CEBB><CEAA><EFBFBD><EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-20000000<30><30>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> num <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
@@ -60,3 +60,25 @@ void system_delay (uint32 time, uint32 num)
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system ΢<><CEA2> <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱʱ<CAB1><CAB1> <20><>λ<EFBFBD><CEBB>us
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> system_delay_us(100); // <20><>ʱ100΢<30><CEA2>
//-------------------------------------------------------------------------------------------------------------------
void system_delay_us (uint32 time)
{
system_delay(time*1000, 1);
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system <20><><EFBFBD><EFBFBD> <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱʱ<CAB1><CAB1> <20><>λ<EFBFBD><CEBB>ms
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> system_delay_ms(100); // <20><>ʱ100<30><30><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void system_delay_ms (uint32 time)
{
system_delay(1000000, time);
}

View File

@@ -38,13 +38,10 @@
#include "zf_common_typedef.h"
void system_delay (uint32 time, uint32 num);
//====================================================<3D><>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define system_delay_ms(time) system_delay((1000000), (time)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λms
#define system_delay_us(time) system_delay((time*1000), (1)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λus
#define system_delay_ns(time) system_delay((time), (1)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λns
void system_delay (uint32 time, uint32 num);
void system_delay_us (uint32 time);
void system_delay_ms (uint32 time);
//====================================================<3D><>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================

View File

@@ -37,7 +37,13 @@
#include "isr.h"
// **************************** PIT<49>жϺ<D0B6><CFBA><EFBFBD> ****************************
//IFX_INTERRUPT(cc60_pit_ch0_isr, 0, CCU6_0_CH0_ISR_PRIORITY)
//{
// interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
// pit_clear_flag(CCU60_CH0);
//
//
//}
IFX_INTERRUPT(cc60_pit_ch1_isr, 0, CCU6_0_CH1_ISR_PRIORITY)
@@ -68,7 +74,6 @@ IFX_INTERRUPT(cc61_pit_ch1_isr, 0, CCU6_1_CH1_ISR_PRIORITY)
}
// **************************** PIT<49>жϺ<D0B6><CFBA><EFBFBD> ****************************
@@ -81,9 +86,6 @@ IFX_INTERRUPT(exti_ch0_ch4_isr, 0, EXTI_CH0_CH4_INT_PRIO)
{
exti_flag_clear(ERU_CH0_REQ0_P15_4);
}
if(exti_flag_get(ERU_CH4_REQ13_P15_5)) // ͨ<><CDA8>4<EFBFBD>ж<EFBFBD>
@@ -112,8 +114,6 @@ IFX_INTERRUPT(exti_ch1_ch5_isr, 0, EXTI_CH1_CH5_INT_PRIO)
exti_flag_clear(ERU_CH5_REQ1_P15_8);
}
}
@@ -256,7 +256,7 @@ IFX_INTERRUPT(uart3_rx_isr, 0, UART3_RX_INT_PRIO)
IfxAsclin_Asc_isrReceive(&uart3_handle);
gps_uart_callback();
}

View File

@@ -0,0 +1,6 @@
doxygen/doxygen_new_line_after_brief=true
doxygen/doxygen_use_brief_tag=false
doxygen/doxygen_use_javadoc_tags=true
doxygen/doxygen_use_pre_tag=false
doxygen/doxygen_use_structural_commands=false
eclipse.preferences.version=1

View File

@@ -1,3 +1,7 @@
V3.1.6
<20>޸<EFBFBD>GPSʹ<53>ô<EFBFBD><C3B4>ںţ<DABA><C5A3>Ż<EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
isr.c<><63><EFBFBD>Ƴ<EFBFBD>CCD<43>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸İ<DEB8><C4B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>İ<EFBFBD><C4B0><EFBFBD><EFBFBD>˿ںţ<DABA><C5A3><EFBFBD><EFBFBD><EFBFBD>V2.6<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V3.1.5
<20>޸<EFBFBD>Ӳ<EFBFBD><D3B2>SPI<50><49>ʼ<EFBFBD><CABC>ʱѡ<CAB1><D1A1><EFBFBD><EFBFBD>CS<43><53><EFBFBD>ţ<EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD>ʼ<EFBFBD><CABC>Ĭ<EFBFBD><C4AC>CS<43><53><EFBFBD>ŵ<EFBFBD>bug
V3.1.4

View File

@@ -43,24 +43,25 @@
* ------------------------------------
********************************************************************************************************************/
#include "math.h"
#include "zf_common_function.h"
#include "zf_common_fifo.h"
#include "zf_driver_delay.h"
#include "zf_driver_uart.h"
#include "zf_device_type.h"
#include "zf_device_gps_tau1201.h"
#define GPS_TAU1201_BUFFER_SIZE (128)
#define GPS_TAU1201_BUFFER_SIZE ( 128 )
uint8 gps_tau1201_flag; // 1<><31><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɵȴ<C9B5><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30>û<EFBFBD>вɼ<D0B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
uint8 gps_tau1201_flag = 0; // 1<><31><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɵȴ<C9B5><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30>û<EFBFBD>вɼ<D0B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
gps_info_struct gps_tau1201; // GPS<50><53><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static uint8 gps_tau1201_state = 0; // 1<><31>GPS<50><53>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static fifo_struct gps_tau1201_receiver_fifo; //
static uint8 gps_tau1201_receiver_buffer[GPS_TAU1201_BUFFER_SIZE]; // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gps_state_enum gps_gga_state; // gga<67><61><EFBFBD><EFBFBD>״̬
gps_state_enum gps_rmc_state; // rmc<6D><63><EFBFBD><EFBFBD>״̬
gps_state_enum gps_gga_state = GPS_STATE_RECEIVING; // gga <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
gps_state_enum gps_rmc_state = GPS_STATE_RECEIVING; // rmc <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
static uint8 gps_gga_buffer[GPS_TAU1201_BUFFER_SIZE];
static uint8 gps_rmc_buffer[GPS_TAU1201_BUFFER_SIZE];
@@ -75,11 +76,10 @@ static uint8 gps_rmc_buffer[GPS_TAU1201_BUFFER_SIZE];
//-------------------------------------------------------------------------------------------------------------------
static uint8 get_parameter_index (uint8 num, char *str)
{
uint8 i, j = 0;
char *temp;
uint8 len = 0, len1;
uint8 i = 0, j = 0;
char *temp = strchr(str, '\n');
uint8 len = 0, len1 = 0;
temp = strchr(str, '\n');
if(NULL != temp)
{
len = (uint8)((uint32)temp - (uint32)str + 1);
@@ -87,7 +87,7 @@ static uint8 get_parameter_index (uint8 num, char *str)
for(i = 0; i < len; i ++)
{
if(str[i] == ',')
if(',' == str[i])
{
j ++;
}
@@ -111,8 +111,8 @@ static uint8 get_parameter_index (uint8 num, char *str)
static int get_int_number (char *s)
{
char buf[10];
uint8 i;
int return_value;
uint8 i = 0;
int return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
strncpy(buf, s, i);
@@ -130,9 +130,9 @@ static int get_int_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static float get_float_number (char *s)
{
uint8 i;
uint8 i = 0;
char buf[15];
float return_value;
float return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
@@ -151,9 +151,9 @@ static float get_float_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static double get_double_number (char *s)
{
uint8 i;
uint8 i = 0;
char buf[15];
double return_value;
double return_value = 0;
i = get_parameter_index(1, s);
i = i - 1;
@@ -172,10 +172,10 @@ static double get_double_number (char *s)
//-------------------------------------------------------------------------------------------------------------------
static void utc_to_btc (gps_time_struct *time)
{
uint8 day_num;
uint8 day_num = 0;
time->hour = time->hour + 8;
if(time->hour > 23)
if(23 < time->hour)
{
time->hour -= 24;
time->day += 1;
@@ -183,7 +183,7 @@ static void utc_to_btc (gps_time_struct *time)
if(2 == time->month)
{
day_num = 28;
if((time->year % 4 == 0 && time->year % 100 != 0) || time->year % 400 == 0) // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
if((0 == time->year % 4 && 0 != time->year % 100) || 0 == time->year % 400) // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
{
day_num ++; // <20><><EFBFBD><EFBFBD> 2<><32>Ϊ29<32><39>
}
@@ -201,7 +201,7 @@ static void utc_to_btc (gps_time_struct *time)
{
time->day = 1;
time->month ++;
if(time->month > 12)
if(12 < time->month)
{
time->month -= 12;
time->year ++;
@@ -220,21 +220,21 @@ static void utc_to_btc (gps_time_struct *time)
//-------------------------------------------------------------------------------------------------------------------
static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
{
uint8 state, temp;
uint8 state = 0, temp = 0;
double latitude; // γ<><CEB3>
double longitude; // <20><><EFBFBD><EFBFBD>
double latitude = 0; // γ<><CEB3>
double longitude = 0; // <20><><EFBFBD><EFBFBD>
float lati_cent_tmp, lati_second_tmp;
float long_cent_tmp, long_second_tmp;
float speed_tmp;
double lati_cent_tmp = 0, lati_second_tmp = 0;
double long_cent_tmp = 0, long_second_tmp = 0;
float speed_tmp = 0;
char *buf = line;
uint8 return_state = 0;
state = buf[get_parameter_index(2, buf)];
gps->state = 0;
if (state == 'A') // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if('A' == state) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return_state = 1;
gps->state = 1;
@@ -247,17 +247,17 @@ static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
gps->latitude_degree = (int)latitude / 100; // γ<><CEB3>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>
lati_cent_tmp = (latitude - gps->latitude_degree * 100);
gps->latitude_cent = (int)lati_cent_tmp;
lati_second_tmp = (lati_cent_tmp - gps->latitude_cent) * 10000;
lati_second_tmp = (lati_cent_tmp - gps->latitude_cent) * 6000;
gps->latitude_second = (int)lati_second_tmp;
gps->longitude_degree = (int)longitude / 100; // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>
long_cent_tmp = (longitude - gps->longitude_degree * 100);
gps->longitude_cent = (int)long_cent_tmp;
long_second_tmp = (long_cent_tmp - gps->longitude_cent) * 10000;
long_second_tmp = (long_cent_tmp - gps->longitude_cent) * 6000;
gps->longitude_second = (int)long_second_tmp;
gps->latitude = gps->latitude_degree + (double)gps->latitude_cent / 60 + (double)gps->latitude_second / 600000;
gps->longitude = gps->longitude_degree + (double)gps->longitude_cent / 60 + (double)gps->longitude_second / 600000;
gps->latitude = gps->latitude_degree + lati_cent_tmp / 60;
gps->longitude = gps->longitude_degree + long_cent_tmp / 60;
speed_tmp = get_float_number(&buf[get_parameter_index(7, buf)]); // <20>ٶ<EFBFBD>(<28><><EFBFBD><EFBFBD>/Сʱ)
gps->speed = speed_tmp * 1.85f; // ת<><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>/Сʱ
@@ -288,13 +288,13 @@ static uint8 gps_gnrmc_parse (char *line, gps_info_struct *gps)
//-------------------------------------------------------------------------------------------------------------------
static uint8 gps_gngga_parse (char *line, gps_info_struct *gps)
{
uint8 state;
uint8 state = 0;
char *buf = line;
uint8 return_state = 0;
state = buf[get_parameter_index(2, buf)];
if (state != ',')
if(',' != state)
{
gps->satellite_used = (uint8)get_int_number(&buf[get_parameter_index(7, buf)]);
gps->height = get_float_number(&buf[get_parameter_index(9, buf)]) + get_float_number(&buf[get_parameter_index(11, buf)]); // <20>߶<EFBFBD> = <20><><EFBFBD>θ߶<CEB8> + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ˮ׼<CBAE><D7BC><EFBFBD>ĸ߶<C4B8>
@@ -317,13 +317,13 @@ static uint8 gps_gngga_parse (char *line, gps_info_struct *gps)
double get_two_points_distance (double latitude1, double longitude1, double latitude2, double longitude2)
{
const double EARTH_RADIUS = 6378137; // <20><><EFBFBD><EFBFBD><EFBFBD>뾶(<28><>λ<EFBFBD><CEBB>m)
double rad_latitude1;
double rad_latitude2;
double rad_longitude1;
double rad_longitude2;
double distance;
double a;
double b;
double rad_latitude1 = 0;
double rad_latitude2 = 0;
double rad_longitude1 = 0;
double rad_longitude2 = 0;
double distance = 0;
double a = 0;
double b = 0;
rad_latitude1 = ANGLE_TO_RAD(latitude1); // <20><><EFBFBD>ݽǶȼ<C7B6><C8BC><EFBFBD><E3BBA1>
rad_latitude2 = ANGLE_TO_RAD(latitude2);
@@ -359,7 +359,7 @@ double get_two_points_azimuth (double latitude1, double longitude1, double latit
double x = sin(longitude2 - longitude1) * cos(latitude2);
double y = cos(latitude1) * sin(latitude2) - sin(latitude1) * cos(latitude2) * cos(longitude2 - longitude1);
double angle = RAD_TO_ANGLE(atan2(x, y));
return ((angle > 0) ? angle : (angle + 360));
return ((0 < angle) ? angle : (angle + 360));
}
//-------------------------------------------------------------------------------------------------------------------
@@ -375,16 +375,16 @@ uint8 gps_data_parse (void)
uint8 check_buffer[5] = {'0', 'x', 0x00, 0x00, 0x00};
uint8 bbc_xor_origin = 0;
uint8 bbc_xor_calculation = 0;
uint32 data_len;
uint32 data_len = 0;
do
{
if(GPS_STATE_RECEIVED == gps_rmc_state)
{
gps_rmc_state = GPS_STATE_PARSING;
strncpy((char *)&check_buffer[2], strchr((const char *)gps_rmc_buffer, '*')+1, 2);
strncpy((char *)&check_buffer[2], strchr((const char *)gps_rmc_buffer, '*') + 1, 2);
bbc_xor_origin = (uint8)func_str_to_hex((char *)check_buffer);
for(bbc_xor_calculation = gps_rmc_buffer[1], data_len = 2; gps_rmc_buffer[data_len] != '*'; data_len ++)
for(bbc_xor_calculation = gps_rmc_buffer[1], data_len = 2; '*' != gps_rmc_buffer[data_len]; data_len ++)
{
bbc_xor_calculation ^= gps_rmc_buffer[data_len];
}
@@ -402,10 +402,10 @@ uint8 gps_data_parse (void)
if(GPS_STATE_RECEIVED == gps_gga_state)
{
gps_gga_state = GPS_STATE_PARSING;
strncpy((char *)&check_buffer[2], strchr((const char *)gps_gga_buffer, '*')+1, 2);
strncpy((char *)&check_buffer[2], strchr((const char *)gps_gga_buffer, '*') + 1, 2);
bbc_xor_origin = (uint8)func_str_to_hex((char *)check_buffer);
for(bbc_xor_calculation = gps_gga_buffer[1], data_len = 2; gps_gga_buffer[data_len] != '*'; data_len ++)
for(bbc_xor_calculation = gps_gga_buffer[1], data_len = 2; '*' != gps_gga_buffer[data_len]; data_len ++)
{
bbc_xor_calculation ^= gps_gga_buffer[data_len];
}
@@ -435,7 +435,7 @@ uint8 gps_data_parse (void)
void gps_uart_callback (void)
{
uint8 temp_gps[6];
uint32 temp_length;
uint32 temp_length = 0;
if(gps_tau1201_state)
{
@@ -507,8 +507,7 @@ uint8 gps_init (void)
fifo_init(&gps_tau1201_receiver_fifo, FIFO_DATA_8BIT, gps_tau1201_receiver_buffer, GPS_TAU1201_BUFFER_SIZE);
system_delay_ms(500); // <20>ȴ<EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ʼ<EFBFBD><CABC>
uart_init(GPS_TAU1201_UART, 115200, GPS_TAU1201_RX, GPS_TAU1201_TX);
set_wireless_type(GPS_TAU1201, gps_uart_callback);
uart_rx_interrupt(GPS_TAU1201_UART, 0);
uart_write_buffer(GPS_TAU1201_UART, (uint8 *)set_rate, sizeof(set_rate)); // <20><><EFBFBD><EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ10hz <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ1hz
system_delay_ms(200);

View File

@@ -49,9 +49,9 @@
#include "zf_common_typedef.h"
//===============================================GPS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define GPS_TAU1201_UART (UART_2)
#define GPS_TAU1201_RX (UART2_TX_P10_5) // GPS RX<52><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>
#define GPS_TAU1201_TX (UART2_RX_P10_6) // GPS TX<54><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define GPS_TAU1201_UART (UART_3)
#define GPS_TAU1201_RX (UART3_TX_P15_6) // GPS RX<52><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>
#define GPS_TAU1201_TX (UART3_RX_P15_7) // GPS TX<54><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//===============================================GPS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define ANGLE_TO_RAD(x) ((x) * PI / 180.0) // <20>Ƕ<EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>

View File

@@ -137,8 +137,8 @@
//================================================<3D><><EFBFBD><EFBFBD> IMU963RA <20>ڲ<EFBFBD><DAB2><EFBFBD>ַ================================================
//===============================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>===============================================
extern int16 imu963ra_acc_x, imu963ra_acc_y, imu963ra_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_gyro_x, imu963ra_gyro_y, imu963ra_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_gyro_x, imu963ra_gyro_y, imu963ra_gyro_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_acc_x, imu963ra_acc_y, imu963ra_acc_z; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
extern int16 imu963ra_mag_x, imu963ra_mag_y, imu963ra_mag_z; // <20><><EFBFBD><EFBFBD><EFBFBD>شż<D8B4><C5BC><EFBFBD><EFBFBD><EFBFBD>
//===============================================<3D><><EFBFBD><EFBFBD> IMU963RA <20><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>===============================================

View File

@@ -1,10 +1,10 @@
/*********************************************************************************************************************
* MM32F327X-G9P Opensourec Library <20><><EFBFBD><EFBFBD>MM32F327X-G9P <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
*
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> MM32F327X-G9P <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
*
* MM32F327X-G9P <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD><EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>޸<EFBFBD><DEB8><EFBFBD>
*
@@ -24,13 +24,13 @@
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_key
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* <20><EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IAR 8.32.4 or MDK 5.37
* <20><><EFBFBD><EFBFBD>ƽ̨ MM32F327X_G9P
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.8.0
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-08-10 Teternal first version
* 2022-09-15 pudding first version
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -45,6 +45,7 @@
********************************************************************************************************************/
#include "zf_common_debug.h"
#include "zf_device_key.h"
static uint32 scanner_period = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -65,54 +66,21 @@ void key_scanner (void)
uint8 i = 0;
for(i = 0; i < KEY_NUMBER; i ++)
{
switch(key_state[i])
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i])) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
case KEY_RELEASE:
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i]))
{
if(++ key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
else
{
key_state[i] = KEY_CHECK_SHOCK;
}
}
break;
case KEY_CHECK_SHOCK:
if(KEY_RELEASE_LEVEL != gpio_get_level(key_index[i]))
{
if(++ key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
}
else
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
case KEY_SHORT_PRESS:
if(++ key_press_time[i] >= KEY_LONG_PRESS_PERIOD / scanner_period)
{
key_state[i] = KEY_LONG_PRESS;
}
if(KEY_RELEASE_LEVEL == gpio_get_level(key_index[i]))
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
case KEY_LONG_PRESS:
if(KEY_RELEASE_LEVEL == gpio_get_level(key_index[i]))
{
key_state[i] = KEY_RELEASE;
key_press_time[i] = 0;
}
break;
key_press_time[i] ++;
if(key_press_time[i] >= KEY_LONG_PRESS_PERIOD / scanner_period)
{
key_state[i] = KEY_LONG_PRESS;
}
}
else // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
{
if(key_state[i] != KEY_LONG_PRESS && key_press_time[i] >= KEY_MAX_SHOCK_PERIOD / scanner_period)
{
key_state[i] = KEY_SHORT_PRESS;
}
key_press_time[i] = 0;
}
}
}
@@ -129,6 +97,33 @@ key_state_enum key_get_state (key_index_enum key_n)
return key_state[key_n];
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>״̬
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> key_n <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void <20><>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_clear_state(KEY_1);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void key_clear_state (key_index_enum key_n)
{
key_state[key_n] = KEY_RELEASE;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD>״̬
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> void <20><>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void <20><>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_clear_all_state();
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void key_clear_all_state (void)
{
key_state[0] = KEY_RELEASE;
key_state[1] = KEY_RELEASE;
key_state[2] = KEY_RELEASE;
key_state[3] = KEY_RELEASE;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> period <20><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ժ<EFBFBD><D4BA><EFBFBD>Ϊ<EFBFBD><CEAA>λ
@@ -136,17 +131,14 @@ key_state_enum key_get_state (key_index_enum key_n)
// ʹ<><CAB9>ʾ<EFBFBD><CABE> key_init(10);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
uint8 key_init (uint32 period)
void key_init (uint32 period)
{
zf_assert(0 < period);
uint8 loop_temp = 0;
zf_assert(0 < period); // ɨ<><C9A8><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
for(loop_temp = 0; loop_temp < KEY_NUMBER; loop_temp ++)
{
gpio_init(key_index[loop_temp], GPI, GPIO_HIGH, GPI_PULL_UP);
key_state[loop_temp] = KEY_RELEASE;
}
scanner_period = period;
return 0;
}

View File

@@ -1,10 +1,10 @@
/*********************************************************************************************************************
* MM32F327X-G9P Opensourec Library <20><><EFBFBD><EFBFBD>MM32F327X-G9P <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
*
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> MM32F327X-G9P <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
*
* MM32F327X-G9P <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD><EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>޸<EFBFBD><DEB8><EFBFBD>
*
@@ -24,13 +24,13 @@
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_device_key
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* <20><EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IAR 8.32.4 or MDK 5.37
* <20><><EFBFBD><EFBFBD>ƽ̨ MM32F327X_G9P
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.8.0
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-08-10 Teternal first version
* 2022-09-15 pudding first version
********************************************************************************************************************/
/*********************************************************************************************************************
* <20><><EFBFBD>߶<EFBFBD><DFB6>
@@ -53,13 +53,12 @@
// <20><><EFBFBD><EFBFBD><E5B0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD> Ĭ<>϶<EFBFBD><CFB6><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><E5B0B4>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>Ӧ<EFBFBD>·<EFBFBD> key_index_enum ö<><C3B6><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3>
// <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ô<EFBFBD><C3B4>Ҫͬ<D2AA><CDAC><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD> key_index_enum ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define KEY_LIST {P22_0, P22_1, P22_2, P22_3}
#define KEY_LIST {P20_6, P20_7, P11_2, P11_3}
#define KEY_RELEASE_LEVEL (GPIO_HIGH) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>״̬ Ҳ<><D2B2><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ͷ<EFBFBD>״̬<D7B4>ĵ<EFBFBD>ƽ
#define KEY_MAX_SHOCK_PERIOD (10 ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>źŻᱻ<C5BB><E1B1BB>Ϊ<EFBFBD><CEAA><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD>
#define KEY_LONG_PRESS_PERIOD (1000 ) // <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
#define KEY_LONG_PRESS_PERIOD (1000 ) // <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>źŻᱻ<C5BB><E1B1BB>Ϊ<EFBFBD>dz<EFBFBD><C7B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//=================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
typedef enum
{
KEY_1,
@@ -72,15 +71,14 @@ typedef enum
typedef enum
{
KEY_RELEASE, // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>״̬
KEY_CHECK_SHOCK, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
KEY_SHORT_PRESS, // <20><><EFBFBD><EFBFBD><EFBFBD>̰<EFBFBD>״̬
KEY_LONG_PRESS, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
}key_state_enum;
//=================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>===============================================
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
void key_scanner (void); // <20><><EFBFBD><EFBFBD>״̬ɨ<CCAC><C9A8>
key_state_enum key_get_state (key_index_enum key_n); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>״̬
uint8 key_init (uint32 period); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
//====================================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=================================================
void key_scanner (void);
key_state_enum key_get_state (key_index_enum key_n);
void key_clear_state (key_index_enum key_n);
void key_clear_all_state (void);
void key_init (uint32 period);
#endif

View File

@@ -60,7 +60,7 @@
// TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD>ڲɼ<DAB2><C9BC><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD> ʹ<>õ<EFBFBD><C3B5>ĸ<EFBFBD> PIT <20><>Ҫ<EFBFBD><D2AA> <20><><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD> PIT <20><><EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TSL1401_EXPOSURE_TIME (10 ) // <20><><EFBFBD><EFBFBD> TSL1401 <20>ع<EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ MS
#define TSL1401_PIT_INDEX (CCU60_CH0) // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
#define TSL1401_PIT_INDEX (CCU61_CH1) // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
#define TSL1401_AD_RESOLUTION (ADC_8BIT) // ADC <20><><EFBFBD><EFBFBD> 8bit
#define TSL1401_DATA_LEN (128 ) // TSL1401 <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
//=================================================TSL1401 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================

View File

@@ -53,9 +53,7 @@ typedef enum
NO_WIRELESS = 0, // <20><><EFBFBD>
WIRELESS_UART, // <20><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
BLUETOOTH_CH9141, // <20><><EFBFBD><EFBFBD> CH9141
GPS_TAU1201,
WIFI_UART,
WIFI_SPI,
WIFI_UART, // <20><><EFBFBD><EFBFBD> WiFi
}wireless_type_enum;
//==============================================<3D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ö<><C3B6><EFBFBD><EFBFBD>==================================================

View File

@@ -40,7 +40,7 @@
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> systick<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱһ<CAB1>ֵ<EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3A8>λΪ<CEBB><CEAA><EFBFBD><EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ0-20000000<30><30>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> num <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
@@ -60,3 +60,25 @@ void system_delay (uint32 time, uint32 num)
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system ΢<><CEA2> <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱʱ<CAB1><CAB1> <20><>λ<EFBFBD><CEBB>us
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> system_delay_us(100); // <20><>ʱ100΢<30><CEA2>
//-------------------------------------------------------------------------------------------------------------------
void system_delay_us (uint32 time)
{
system_delay(time*1000, 1);
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> system <20><><EFBFBD><EFBFBD> <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> time <20><>ʱʱ<CAB1><CAB1> <20><>λ<EFBFBD><CEBB>ms
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> system_delay_ms(100); // <20><>ʱ100<30><30><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------------------------------------
void system_delay_ms (uint32 time)
{
system_delay(1000000, time);
}

View File

@@ -38,13 +38,10 @@
#include "zf_common_typedef.h"
void system_delay (uint32 time, uint32 num);
//====================================================<3D><>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================
#define system_delay_ms(time) system_delay((1000000), (time)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λms
#define system_delay_us(time) system_delay((time*1000), (1)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λus
#define system_delay_ns(time) system_delay((time), (1)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> <20><>λns
void system_delay (uint32 time, uint32 num);
void system_delay_us (uint32 time);
void system_delay_ms (uint32 time);
//====================================================<3D><>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>====================================================

View File

@@ -69,7 +69,7 @@
// **************************** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ****************************
#define FLASH_SECTION_INDEX (0) // <20><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
#define FLASH_PAGE_INDEX (11) // <20><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ҳ<EFBFBD><D2B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ҳ<EFBFBD><D2B3>
#define FLASH_PAGE_INDEX (8) // <20><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ҳ<EFBFBD><D2B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ҳ<EFBFBD><D2B3>
int core0_main(void)
@@ -85,7 +85,7 @@ int core0_main(void)
flash_read_page_to_buffer(FLASH_SECTION_INDEX, FLASH_PAGE_INDEX); // <20><><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD> flash <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
printf("\r\n FLASH_SECTION_INDEX: %d, FLASH_PAGE_INDEX: %d, origin data is :", FLASH_SECTION_INDEX, FLASH_PAGE_INDEX);
printf("\r\n float_type : %f", flash_union_buffer[0].float_type); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0 <20><>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> float <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
printf("\r\n uint32_type: %lu", flash_union_buffer[1].uint32_type); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint32 <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
printf("\r\n uint32_type: %lu", flash_union_buffer[1].uint32_type); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint32 <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
printf("\r\n int32_type : %d", flash_union_buffer[2].int32_type); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2 <20><>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> int32 <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
printf("\r\n uint16_type: %u", flash_union_buffer[3].uint16_type); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3 <20><>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint16 <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
printf("\r\n int16_type : %d", flash_union_buffer[4].int16_type); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4 <20><>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> int16 <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
@@ -132,7 +132,7 @@ int core0_main(void)
flash_buffer_clear(); // <20><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
printf("\r\n Flash data buffer default data is :");
printf("\r\n float_type : %f", flash_union_buffer[0].float_type); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0 <20><>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> float <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
printf("\r\n uint32_type: %lu",flash_union_buffer[1].uint32_type); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint32 <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
printf("\r\n uint32_type: %lu",flash_union_buffer[1].uint32_type); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint32 <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
printf("\r\n int32_type : %d", flash_union_buffer[2].int32_type); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2 <20><>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> int32 <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
printf("\r\n uint16_type: %u", flash_union_buffer[3].uint16_type); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3 <20><>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint16 <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
printf("\r\n int16_type : %d", flash_union_buffer[4].int16_type); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4 <20><>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> int16 <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
@@ -143,7 +143,7 @@ int core0_main(void)
flash_read_page_to_buffer(FLASH_SECTION_INDEX, FLASH_PAGE_INDEX); // <20><><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD> flash <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
printf("\r\n FLASH_SECTION_INDEX: %d, FLASH_PAGE_INDEX: %d, new data is :", FLASH_SECTION_INDEX, FLASH_PAGE_INDEX);
printf("\r\n float_type : %f", flash_union_buffer[0].float_type); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0 <20><>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> float <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
printf("\r\n uint32_type: %lu",flash_union_buffer[1].uint32_type); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint32 <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
printf("\r\n uint32_type: %lu",flash_union_buffer[1].uint32_type); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint32 <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
printf("\r\n int32_type : %d", flash_union_buffer[2].int32_type); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2 <20><>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> int32 <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
printf("\r\n uint16_type: %u", flash_union_buffer[3].uint16_type); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3 <20><>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint16 <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
printf("\r\n int16_type : %d", flash_union_buffer[4].int16_type); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4 <20><>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> int16 <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>

View File

@@ -41,7 +41,6 @@ IFX_INTERRUPT(cc60_pit_ch0_isr, 0, CCU6_0_CH0_ISR_PRIORITY)
{
interrupt_global_enable(0); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ƕ<EFBFBD><C7B6>
pit_clear_flag(CCU60_CH0);
tsl1401_collect_pit_handler(); // <20><><EFBFBD><EFBFBD>CCD<43>ɼ<EFBFBD>
}
@@ -75,7 +74,6 @@ IFX_INTERRUPT(cc61_pit_ch1_isr, 0, CCU6_1_CH1_ISR_PRIORITY)
}
// **************************** PIT<49>жϺ<D0B6><CFBA><EFBFBD> ****************************
@@ -88,9 +86,6 @@ IFX_INTERRUPT(exti_ch0_ch4_isr, 0, EXTI_CH0_CH4_INT_PRIO)
{
exti_flag_clear(ERU_CH0_REQ0_P15_4);
}
if(exti_flag_get(ERU_CH4_REQ13_P15_5)) // ͨ<><CDA8>4<EFBFBD>ж<EFBFBD>
@@ -119,8 +114,6 @@ IFX_INTERRUPT(exti_ch1_ch5_isr, 0, EXTI_CH1_CH5_INT_PRIO)
exti_flag_clear(ERU_CH5_REQ1_P15_8);
}
}
@@ -263,7 +256,7 @@ IFX_INTERRUPT(uart3_rx_isr, 0, UART3_RX_INT_PRIO)
IfxAsclin_Asc_isrReceive(&uart3_handle);
gps_uart_callback();
}

View File

@@ -1,3 +1,7 @@
V3.1.6
<20>޸<EFBFBD>GPSʹ<53>ô<EFBFBD><C3B4>ںţ<DABA><C5A3>Ż<EFBFBD>GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
isr.c<><63><EFBFBD>Ƴ<EFBFBD>CCD<43>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>޸İ<DEB8><C4B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>İ<EFBFBD><C4B0><EFBFBD><EFBFBD>˿ںţ<DABA><C5A3><EFBFBD><EFBFBD><EFBFBD>V2.6<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V3.1.5
<20>޸<EFBFBD>Ӳ<EFBFBD><D3B2>SPI<50><49>ʼ<EFBFBD><CABC>ʱѡ<CAB1><D1A1><EFBFBD><EFBFBD>CS<43><53><EFBFBD>ţ<EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD>ʼ<EFBFBD><CABC>Ĭ<EFBFBD><C4AC>CS<43><53><EFBFBD>ŵ<EFBFBD>bug
V3.1.4

Some files were not shown because too many files have changed in this diff Show More