完成时钟同步以及页面刷新功能
This commit is contained in:
parent
f65b593f80
commit
0cb04e9b90
7 changed files with 151 additions and 41 deletions
|
|
@ -311,10 +311,6 @@
|
|||
<name>ICCARM</name>
|
||||
<file> 31 30 29 32 212 33 34 35 36 37 155 133 142 26 132 134 135 136 96 140 139 168 157 150 141 144 137 143 151 160 149 152 167 153 154 145 156 159 165 148 5 11 1 0 7</file>
|
||||
</tool>
|
||||
<tool>
|
||||
<name>BICOMP</name>
|
||||
<file> 31 30 29 32 212 33 34 35 36 37 155 133 142 26 132 134 135 136 96 140 139 168 157 150 141 144 137 143 151 160 149 152 167 153 154 145 156 159 165 148 5 11 1 0 7</file>
|
||||
</tool>
|
||||
</inputs>
|
||||
</file>
|
||||
<file>
|
||||
|
|
@ -378,11 +374,11 @@
|
|||
<inputs>
|
||||
<tool>
|
||||
<name>ICCARM</name>
|
||||
<file> 31 30 29 32 212 33 34 35 36 37 96 210 11 26 6 7 141 144 12 0 13</file>
|
||||
<file> 31 30 29 32 212 33 34 35 36 37 96 133 142 26 132 134 135 136 140 139 168 157 150 141 144 137 143 151 160 155 152 167 153 154 145 156 159 165 148 149 210 11 6 7 12 0 13</file>
|
||||
</tool>
|
||||
<tool>
|
||||
<name>BICOMP</name>
|
||||
<file> 31 30 29 32 212 33 34 35 36 37 96 210 11 26 6 7 141 144 12 0 13</file>
|
||||
<file> 31 30 29 32 212 33 34 35 36 37 96 133 142 26 132 134 135 136 140 139 168 157 150 141 144 137 143 151 160 155 152 167 153 154 145 156 159 165 148 149 210 11 6 7 12 0 13</file>
|
||||
</tool>
|
||||
</inputs>
|
||||
</file>
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ TriggerName=main
|
|||
LimitSize=0
|
||||
ByteLimit=50
|
||||
[DebugChecksum]
|
||||
Checksum=-203845490
|
||||
Checksum=-564150124
|
||||
[CodeCoverage]
|
||||
Enabled=_ 0
|
||||
[Exceptions]
|
||||
|
|
@ -54,8 +54,7 @@ ShowSource=1
|
|||
[Disassemble mode]
|
||||
mode=0
|
||||
[Breakpoints2]
|
||||
Bp0=_ 1 "EMUL_CODE" "{$PROJ_DIR$\..\src\app\main.c}.28.5" 0 0 1 "" 0 "" 0
|
||||
Count=1
|
||||
Count=0
|
||||
[Log file]
|
||||
LoggingEnabled=_ 0
|
||||
LogFile=_ ""
|
||||
|
|
|
|||
|
|
@ -10,13 +10,13 @@
|
|||
/*
|
||||
* 模拟定时器的数量
|
||||
*/
|
||||
#define SIMULAT_TIMER_NUM 3
|
||||
#define SIMULAT_TIMER_NUM 5
|
||||
|
||||
|
||||
|
||||
typedef struct st_register_
|
||||
{
|
||||
uint8_t count; // 定时器计数
|
||||
uint32_t count; // 定时器计数
|
||||
uint32_t cmr; // 比较寄存器
|
||||
struct
|
||||
{
|
||||
|
|
|
|||
|
|
@ -29,8 +29,9 @@ void tft_ok(void);
|
|||
|
||||
void tft_ret(void);
|
||||
|
||||
void tft_page_refresh(void);
|
||||
|
||||
int16_t get_value_of_kvp(char *name);
|
||||
int16_t *get_value_of_kvp(char *name, uint8_t objn);
|
||||
|
||||
input_limit tft_input_limit(char *name);
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#include "include/pm_init.h"
|
||||
#include "include/simulat_timer.h"
|
||||
#include "include/key.h"
|
||||
|
|
@ -20,11 +22,13 @@ void main(void)
|
|||
|
||||
pm_init();
|
||||
|
||||
st_init(0, COMPARE, 10);
|
||||
st_init(0, COMPARE, 10); // 作为按键扫描函数的定时使用,在simulat_timer.c的底层中使用
|
||||
st_init(1, COMPARE, 1);
|
||||
|
||||
|
||||
st_init(2, COMPARE, 3);
|
||||
st_init(2, COMPARE, 500);
|
||||
|
||||
st_init(3, COMPARE, 500);
|
||||
|
||||
ds1302_set_time(time);
|
||||
|
||||
knob_enable();
|
||||
|
|
@ -50,6 +54,19 @@ void main(void)
|
|||
time.hour, time.minute, time.sec);
|
||||
}
|
||||
|
||||
if (st_tcf(3) == 1)
|
||||
{
|
||||
enter_critical();
|
||||
ds1302_read_time(&time);
|
||||
exit_critical();
|
||||
*get_value_of_kvp("st_y", 0) = time.year;
|
||||
*get_value_of_kvp("st_mo", 0) = time.month;
|
||||
*get_value_of_kvp("st_d", 0) = time.day;
|
||||
*get_value_of_kvp("st_h", 0) = time.hour;
|
||||
*get_value_of_kvp("st_mi", 0) = time.minute;
|
||||
*get_value_of_kvp("st_s", 0) = time.sec;
|
||||
tft_page_refresh();
|
||||
}
|
||||
|
||||
switch (get_key_mean(UP_KEY))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -54,20 +54,21 @@ typedef enum tft_colour_
|
|||
static tft_state tft_stt = { 0, 0, 0, 0 };
|
||||
|
||||
static uint8_t original_lyt[] = { 0, 1 };
|
||||
static uint8_t menu_lyt[] = { 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 };
|
||||
static uint8_t menu_lyt[] = { 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
|
||||
static uint8_t obj_set_lyt[] = { 0, 4, 7, 11, 13};
|
||||
|
||||
|
||||
kv_pair kvp_original[] = { {"ori_0", 0, R_NUM} };
|
||||
kv_pair kvp_menu[] = {
|
||||
{ "st_y", 2016, RW_NUM }, { "st_mo", 4, RW_NUM }, { "st_d", 14, RW_NUM }, { "st_h", 0, RW_NUM }, { "st_mi", 0, RW_NUM },
|
||||
{ "st_y", 2016, RW_NUM }, { "st_mo", 4, RW_NUM }, { "st_d", 14, RW_NUM }, { "st_h", 0, RW_NUM }, { "st_mi", 0, RW_NUM }, { "st_s", 0, RW_NUM },
|
||||
{ "obj0", 0, SW_PAGE },
|
||||
{ "obj1", 0, SW_PAGE },
|
||||
{ "obj2", 0, SW_PAGE },
|
||||
{ "obj3", 0, SW_PAGE },
|
||||
{ "obj4", 0, SW_PAGE },
|
||||
{ "obj5", 0, SW_PAGE },
|
||||
{ "obj6", 0, SW_PAGE },
|
||||
{ "obj7", 0, SW_PAGE },
|
||||
{ "obj1", 1, SW_PAGE },
|
||||
{ "obj2", 2, SW_PAGE },
|
||||
{ "obj3", 3, SW_PAGE },
|
||||
{ "obj4", 4, SW_PAGE },
|
||||
{ "obj5", 5, SW_PAGE },
|
||||
{ "obj6", 6, SW_PAGE },
|
||||
{ "obj7", 7, SW_PAGE },
|
||||
{ "note", 0, RW_NUM }
|
||||
};
|
||||
|
||||
|
|
@ -512,6 +513,7 @@ void tft_ret(void)
|
|||
tft_stt.ln = 0;
|
||||
tft_stt.etn = 0;
|
||||
tft_send_cmd("page original");
|
||||
tft_page_refresh();
|
||||
tft_set_color(tft_stt.etn, TFT_PURPLE);
|
||||
break;
|
||||
case OBJ_SET_PG:
|
||||
|
|
@ -519,7 +521,8 @@ void tft_ret(void)
|
|||
tft_stt.ln = 0;
|
||||
tft_stt.etn = 0;
|
||||
tft_send_cmd("page menu");
|
||||
refrush_menu();
|
||||
tft_page_refresh();
|
||||
// refrush_menu();
|
||||
tft_set_color(tft_stt.etn, TFT_PURPLE);
|
||||
break;
|
||||
default:
|
||||
|
|
@ -573,6 +576,14 @@ void tft_input(void)
|
|||
}
|
||||
knob_disable();
|
||||
tft_set_color(tft_stt.etn, TFT_PURPLE);
|
||||
time_info time;
|
||||
time.year = *get_value_of_kvp("st_y", 0);
|
||||
time.month = *get_value_of_kvp("st_mo", 0);
|
||||
time.day = *get_value_of_kvp("st_d", 0);
|
||||
time.hour = *get_value_of_kvp("st_h", 0);
|
||||
time.minute = *get_value_of_kvp("st_mi", 0);
|
||||
time.sec= *get_value_of_kvp("st_s", 0);
|
||||
ds1302_set_time(time);
|
||||
clear_key_m();
|
||||
break;
|
||||
case RW_PIC:
|
||||
|
|
@ -681,6 +692,7 @@ void tft_ok(void)
|
|||
tft_stt.ln = 0;
|
||||
tft_stt.etn = 0;
|
||||
tft_send_cmd("page menu");
|
||||
tft_page_refresh();
|
||||
tft_set_color(tft_stt.etn, TFT_PURPLE);
|
||||
break;
|
||||
default:
|
||||
|
|
@ -704,8 +716,8 @@ void tft_ok(void)
|
|||
tft_stt.ln = 0;
|
||||
tft_stt.etn = 0;
|
||||
tft_send_cmd("page obj_set");
|
||||
tft_page_refresh();
|
||||
tft_set_color(tft_stt.etn, TFT_PURPLE);
|
||||
//refrush_obj();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
@ -734,26 +746,106 @@ void tft_ok(void)
|
|||
return;
|
||||
}
|
||||
|
||||
void tft_page_refresh(void)
|
||||
{
|
||||
switch (tft_stt.pgn)
|
||||
{
|
||||
case ORIGINAL_PG:
|
||||
for (uint8_t etn = 0; etn < sizeof(kvp_original) / sizeof(kv_pair); etn++)
|
||||
{
|
||||
switch (SW_PAGE)
|
||||
{
|
||||
case R_NUM:
|
||||
break;
|
||||
case RW_NUM:
|
||||
break;
|
||||
case RW_PIC:
|
||||
break;
|
||||
case SW_PAGE:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MENU_PG:
|
||||
for (int etn = 0; etn < sizeof(kvp_menu) / sizeof(kv_pair); etn++)
|
||||
{
|
||||
switch (kvp_menu[etn].attr)
|
||||
{
|
||||
case R_NUM:
|
||||
break;
|
||||
case RW_NUM:
|
||||
sprintf(tft_cmd_str, "%s.val=%d", kvp_menu[etn].key,
|
||||
kvp_menu[etn].value);
|
||||
tft_send_cmd(tft_cmd_str);
|
||||
sprintf(tft_cmd_str, "ref %s", kvp_menu[etn].key);
|
||||
tft_send_cmd(tft_cmd_str);
|
||||
break;
|
||||
case RW_PIC:
|
||||
sprintf(tft_cmd_str, "vis %s,%d", kvp_menu[etn].key,
|
||||
kvp_menu[etn].value);
|
||||
tft_send_cmd(tft_cmd_str);
|
||||
break;
|
||||
case SW_PAGE:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case OBJ_SET_PG:
|
||||
for (int etn = 0; etn < sizeof(kvp_obj_set[0]) / sizeof(kv_pair); etn++)
|
||||
{
|
||||
switch (kvp_obj_set[tft_stt.objn][etn].attr)
|
||||
{
|
||||
case R_NUM:
|
||||
break;
|
||||
case RW_NUM:
|
||||
sprintf(tft_cmd_str, "%s.val=%d", kvp_obj_set[tft_stt.objn][etn].key,
|
||||
kvp_obj_set[tft_stt.objn][etn].value);
|
||||
tft_send_cmd(tft_cmd_str);
|
||||
sprintf(tft_cmd_str, "ref %s", kvp_obj_set[tft_stt.objn][etn].key);
|
||||
tft_send_cmd(tft_cmd_str);
|
||||
break;
|
||||
case RW_PIC:
|
||||
sprintf(tft_cmd_str, "vis %s,%d",
|
||||
kvp_obj_set[tft_stt.objn][etn].key,
|
||||
kvp_obj_set[tft_stt.objn][etn].value);
|
||||
tft_send_cmd(tft_cmd_str);
|
||||
break;
|
||||
case SW_PAGE:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int16_t get_value_of_kvp(char *name)
|
||||
int16_t *get_value_of_kvp(char *name, uint8_t objn)
|
||||
{
|
||||
for (int i = 0; i < sizeof(kvp_menu) / sizeof(kv_pair); i++)
|
||||
{
|
||||
if (strcmp(name, kvp_menu[i].key) == 0)
|
||||
{
|
||||
return kvp_menu[i].value;
|
||||
return &kvp_menu[i].value;
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < sizeof(kvp_obj_set[0]) / sizeof(kv_pair); i++)
|
||||
for (int i = 0; i < sizeof(kvp_obj_set[objn]) / sizeof(kv_pair); i++)
|
||||
{
|
||||
if (strcmp(name, kvp_obj_set[0][i].key) == 0);
|
||||
if (strcmp(name, kvp_obj_set[objn][i].key) == 0);
|
||||
{
|
||||
return kvp_obj_set[0][i].value;
|
||||
return &kvp_obj_set[objn][i].value;
|
||||
}
|
||||
}
|
||||
return ~0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
input_limit tft_input_limit(char *name)
|
||||
|
|
@ -761,7 +853,7 @@ input_limit tft_input_limit(char *name)
|
|||
input_limit in_lmt;
|
||||
if (strcmp(name, "st_y") == 0)
|
||||
{
|
||||
in_lmt.min = 1970;
|
||||
in_lmt.min = 2000;
|
||||
in_lmt.max = 2100;
|
||||
}
|
||||
else if (strcmp(name, "st_mo") == 0)
|
||||
|
|
@ -772,7 +864,7 @@ input_limit tft_input_limit(char *name)
|
|||
else if (strcmp(name, "st_d") == 0)
|
||||
{
|
||||
in_lmt.min = 1;
|
||||
in_lmt.max = get_month_days(get_value_of_kvp("st_y"), get_value_of_kvp("st_mo"));
|
||||
in_lmt.max = get_month_days(*get_value_of_kvp("st_y", 0), *get_value_of_kvp("st_mo", 0));
|
||||
}
|
||||
else if (strcmp(name, "st_h") == 0)
|
||||
{
|
||||
|
|
@ -784,9 +876,14 @@ input_limit tft_input_limit(char *name)
|
|||
in_lmt.min = 0;
|
||||
in_lmt.max = 59;
|
||||
}
|
||||
else if (strcmp(name, "st_s") == 0)
|
||||
{
|
||||
in_lmt.min = 0;
|
||||
in_lmt.max = 59;
|
||||
}
|
||||
else if (strcmp(name, "bg_y") == 0)
|
||||
{
|
||||
in_lmt.min = 1970;
|
||||
in_lmt.min = 2000;
|
||||
in_lmt.max = 2100;
|
||||
}
|
||||
else if (strcmp(name, "bg_mo") == 0)
|
||||
|
|
@ -797,7 +894,7 @@ input_limit tft_input_limit(char *name)
|
|||
else if (strcmp(name, "bg_d") == 0)
|
||||
{
|
||||
in_lmt.min = 1;
|
||||
in_lmt.max = get_month_days(get_value_of_kvp("bg_y"), get_value_of_kvp("bg_mo"));
|
||||
in_lmt.max = get_month_days(*get_value_of_kvp("bg_y", 0), *get_value_of_kvp("bg_mo", 0));
|
||||
}
|
||||
else if (strcmp(name, "bg_h") == 0)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue