diff --git a/README/FlashPlus.png b/README/FlashPlus.png new file mode 100644 index 0000000..64ccde7 Binary files /dev/null and b/README/FlashPlus.png differ diff --git a/README/FlashPlus_v1.0.10.msi.zip b/README/FlashPlus_v1.0.10.msi.zip new file mode 100644 index 0000000..9a1da4b Binary files /dev/null and b/README/FlashPlus_v1.0.10.msi.zip differ diff --git a/README/README_Program.md b/README/README_Program.md new file mode 100644 index 0000000..9889c5e --- /dev/null +++ b/README/README_Program.md @@ -0,0 +1,73 @@ +# zTC1 固件烧录 + + +## 烧录前的准备 + +### 软件准备 + +烧录前,你需要下载好固件:即本项目release出来的bin文件 + +需要下载并安装软件FlashPlus + +### 硬件准备 + +不能直接使用在线升级的方式.需要使用烧录器对TC1烧录固件,所以需要购买一个烧录器,一般为支持swd的jlink,长这样:(避免广告,我就不放链接了,一般淘宝上支持swd的jlink应该都可以,购买时卖家应该会提供驱动,在电脑上安装即可,win10可能可以自动安装驱动).图中右下角为一个jtag转swd的转接板,如果没有这个转板就需要根据下图将swdio swck两根线及gnd引出. + +![jlink](jlink.jpg)![swd](swd.jpg) + +> 图片来自网络,侵删 + +#### TC1拆机与接线烧录 + +烧录器需要与TC1内电路板接线,需要将TC1拆开.拆开方式如下:卸掉背面垫片下2颗螺丝(螺丝可能与常用螺丝不同,需要使用对应的螺丝刀).然后就可以想帮忙直接送卡扣取下即可. + +> 我的方式为将TC1倒过来放,然后在背面垫上一本厚点的书,用拳头捶书,将TC1排插部分震下来了.效果很好,卡扣都没有断裂~ + +拆开后的样子:(右上角红框内就是后面烧录FW需要处理的位置了) + +![图片来着公众号:diydaily,已获授权使用](拆机.jpg) + + + +> 文中部分图片来自微信公众号diydaily的拆机评测:https://mp.weixin.qq.com/s/8pxjWlDdObah92j2gPPImQ +> +> 已经获权使用. + +如图,总共8个触点,分别为2个GND 2个3v3,clk,dio,tx,rx + +![tc1_swd](tc1_swd.jpg) + +我们需要使用的为dio,clk,gnd,3v3. + +**gnd与jlink的gnd相连,dio与jlink的swdio相连,clk与jlink的swclk相连**,jlnk上可能没有3.3V的电源,可以直接将tc1接220V供电(注意:接220V电时不要触摸电路板,上面是有走220V电的,担心触点),或是将jlink的5V接到上图中的5v标志位置.检查下接线,没有问题就可以准备烧录了. + +## 烧录 + + + +安装打开: + +1. 选择Chip :88MW30X +2. 选择Interface:JLINK +3. 现在Flash为External Flash,选择QSPI,选择Otehr +4. 单击PROGRAM按钮 +5. Step1:Flash Address中地址输入0 +6. Step2:Erase Mode中现在Erase all flash +7. Step3: Options中,建议勾选Verify after programming +8. 单击Browse,选择之前下载好的bin文件 +9. 点击start开始下载,直到有成功的提示,则烧录完成 + +整个过程需要点选的按钮截图如下: + +![FlashPlus](FlashPlus.png) + + + +### 烧录完成 + +烧录完成后,重新上电.确认没有问题装会壳内即可使用. + +接下来就可以开始使用. + + + diff --git a/README/jlink.jpg b/README/jlink.jpg new file mode 100644 index 0000000..cd94479 Binary files /dev/null and b/README/jlink.jpg differ diff --git a/README/swd.jpg b/README/swd.jpg new file mode 100644 index 0000000..5001082 Binary files /dev/null and b/README/swd.jpg differ diff --git a/README/tc1_swd.jpg b/README/tc1_swd.jpg new file mode 100644 index 0000000..a187049 Binary files /dev/null and b/README/tc1_swd.jpg differ diff --git a/README/拆机.jpg b/README/拆机.jpg new file mode 100644 index 0000000..b339366 Binary files /dev/null and b/README/拆机.jpg differ diff --git a/TC1/main.c b/TC1/main.c index d1b3530..221d10b 100644 --- a/TC1/main.c +++ b/TC1/main.c @@ -79,7 +79,7 @@ void appRestoreDefault_callback( void * const user_config_data, uint32_t size ) int application_start( void ) { int i; - os_log( "Start" ); + os_log( "Start v0.1" ); OSStatus err = kNoErr; diff --git a/TC1/user_rtc.c b/TC1/user_rtc.c index c3c5f7d..c87b17b 100644 --- a/TC1/user_rtc.c +++ b/TC1/user_rtc.c @@ -5,6 +5,8 @@ #include "sntp.h" #include "user_sntp.h" #include "cJSON/cJSON.h" +#include "user_mqtt_client.h" +#include "user_function.h" void rtc_thread( mico_thread_arg_t arg ); @@ -69,7 +71,7 @@ OSStatus user_sntp_get_time( ) os_log("sntp_get_time4 err = %d.", err); return err; } - + return kNoErr; } OSStatus user_rtc_init( void ) @@ -165,7 +167,7 @@ void rtc_thread( mico_thread_arg_t arg ) && ((repeat == 0x00) || repeat & (1 << (rtc_time.weekday - 1))) ) { - if ( user_config->plug[i].on = user_config->plug[i].task[j].action ) + if ( user_config->plug[i].on != user_config->plug[i].task[j].action ) { user_relay_set( i, user_config->plug[i].task[j].action ); update_user_config_flag = 1; @@ -244,7 +246,7 @@ void rtc_thread( mico_thread_arg_t arg ) free( json_str ); cJSON_Delete( json_send ); - os_log("cJSON_Delete"); +// os_log("cJSON_Delete"); } //SNTP ÿСʱУ׼һ @@ -264,7 +266,7 @@ void rtc_thread( mico_thread_arg_t arg ) mico_rtos_thread_msleep( 900 ); } - exit: +// exit: os_log("EXIT: rtc exit with err = %d.", err); mico_rtos_delete_thread( NULL ); }