diff --git a/plan_manage_main/ewp/plan_manage_main.dep b/plan_manage_main/ewp/plan_manage_main.dep
index 8aacd30..a9ac432 100644
--- a/plan_manage_main/ewp/plan_manage_main.dep
+++ b/plan_manage_main/ewp/plan_manage_main.dep
@@ -11,11 +11,13 @@
$PROJ_DIR$\..\src\app\include\isr.h
$PROJ_DIR$\..\src\app\include\key.h
$PROJ_DIR$\..\src\app\include\knob.h
+ $PROJ_DIR$\..\src\app\include\output.h
$PROJ_DIR$\..\src\app\include\plan_handle.h
$PROJ_DIR$\..\src\app\include\pm_flash.h
$PROJ_DIR$\..\src\app\include\pm_flash_cfg.h
$PROJ_DIR$\..\src\app\include\pm_init.h
$PROJ_DIR$\..\src\app\include\pm_time.h
+ $PROJ_DIR$\..\src\app\include\setup.h
$PROJ_DIR$\..\src\app\include\simulat_timer.h
$PROJ_DIR$\..\src\app\include\tft.h
$PROJ_DIR$\..\src\app\include\tft_plan_internal.h
@@ -28,6 +30,126 @@
$PROJ_DIR$\..\src\app\orient.c
$PROJ_DIR$\..\src\app\output.c
$PROJ_DIR$\..\src\app\plan_handle.c
+ $PROJ_DIR$\..\Debug\Obj\uart.pbi
+ $PROJ_DIR$\..\Debug\Obj\flash.o
+ $PROJ_DIR$\..\Debug\Obj\io.pbi
+ $PROJ_DIR$\..\Debug\Obj\vectors.o
+ $PROJ_DIR$\..\Debug\Obj\uart.o
+ $PROJ_DIR$\..\Debug\Obj\adc.pbi
+ $PROJ_DIR$\..\Debug\Obj\arm_cm0.o
+ $PROJ_DIR$\..\Debug\Obj\cmp.pbi
+ $PROJ_DIR$\..\Debug\Obj\dac.pbi
+ $PROJ_DIR$\..\Debug\Obj\start.o
+ $PROJ_DIR$\..\Debug\Obj\dma.pbi
+ $PROJ_DIR$\..\Debug\Obj\tick_timer.o
+ $PROJ_DIR$\..\Debug\Obj\rtc.pbi
+ $PROJ_DIR$\..\Debug\Obj\port.pbi
+ $PROJ_DIR$\..\Debug\Obj\mcg.pbi
+ $PROJ_DIR$\..\Debug\Obj\i2c.pbi
+ $PROJ_DIR$\..\Debug\Obj\queue.pbi
+ $PROJ_DIR$\..\Debug\Obj\time.pbi
+ $PROJ_DIR$\..\Debug\Exe\plan_manage_main.out
+ $PROJ_DIR$\..\Debug\Obj\DFlashGetProtection.o
+ $PROJ_DIR$\..\src\include\drivers\FTFx\SSD_FTFx_Internal.h
+ $PROJ_DIR$\..\Debug\Obj\dma.o
+ $PROJ_DIR$\..\Debug\Obj\CopyToRam.o
+ $TOOLKIT_DIR$\inc\c\DLib_Product.h
+ $PROJ_DIR$\..\Debug\Obj\isr.pbi
+ $PROJ_DIR$\..\src\app\input.c
+ $PROJ_DIR$\..\Debug\Obj\vectors.pbi
+ $PROJ_DIR$\..\src\include\drivers\FTFx\SSD_FTFx.h
+ $PROJ_DIR$\..\Debug\Obj\input.pbi
+ $TOOLKIT_DIR$\inc\c\time.h
+ $PROJ_DIR$\..\Debug\Obj\time64.pbi
+ $PROJ_DIR$\..\Debug\Obj\crt0.o
+ $PROJ_DIR$\..\src\app\clock.c
+ $TOOLKIT_DIR$\inc\c\yfuns.h
+ $PROJ_DIR$\..\Debug\Obj\DEFlashPartition.o
+ $PROJ_DIR$\..\src\app\time64.c
+ $PROJ_DIR$\..\src\app\getzone.c
+ $PROJ_DIR$\..\Debug\List\plan_manage_main.map
+ $PROJ_DIR$\..\Debug\Obj\SPI.o
+ $TOOLKIT_DIR$\inc\c\string.h
+ $TOOLKIT_DIR$\inc\c\DLib_Product_string.h
+ $PROJ_DIR$\..\Debug\Obj\systick.o
+ $PROJ_DIR$\..\Debug\Obj\common.pbi
+ $PROJ_DIR$\..\Debug\Obj\time64.o
+ $PROJ_DIR$\..\Debug\Obj\getzone.pbi
+ $PROJ_DIR$\..\Debug\Obj\memtest.pbi
+ $PROJ_DIR$\..\Debug\Obj\uif.o
+ $PROJ_DIR$\..\Debug\Obj\FlashCheckSum.pbi
+ $PROJ_DIR$\..\Debug\Obj\FlashCommandSequence.pbi
+ $PROJ_DIR$\..\Debug\Obj\DFlashSetProtection.pbi
+ $PROJ_DIR$\..\Debug\Obj\EERAMGetProtection.pbi
+ $PROJ_DIR$\..\Debug\Obj\FlashEraseAllBlock.pbi
+ $PROJ_DIR$\..\Debug\Obj\EEEWrite.pbi
+ $PROJ_DIR$\..\Debug\Obj\EERAMSetProtection.pbi
+ $PROJ_DIR$\..\Debug\Obj\DFlashGetProtection.pbi
+ $PROJ_DIR$\..\Debug\Obj\CopyToRam.pbi
+ $PROJ_DIR$\..\Debug\Obj\FlashEraseBlock.pbi
+ $PROJ_DIR$\..\Debug\Obj\DEFlashPartition.pbi
+ $PROJ_DIR$\..\Debug\Obj\output.o
+ $PROJ_DIR$\..\Debug\Obj\FlashVerifyAllBlock.pbi
+ $PROJ_DIR$\..\Debug\Obj\FlashInit.o
+ $PROJ_DIR$\..\Debug\Obj\PFlashSwap.o
+ $PROJ_DIR$\..\Debug\Obj\debug.pbi
+ $PROJ_DIR$\..\Debug\Obj\startup.pbi
+ $PROJ_DIR$\..\Debug\Obj\sysinit.pbi
+ $TOOLKIT_DIR$\inc\c\DLib_Threads.h
+ $PROJ_DIR$\..\Debug\Obj\plan_handle.pbi
+ $PROJ_DIR$\..\Debug\Obj\simulat_timer.pbi
+ $PROJ_DIR$\..\Debug\Obj\display.pbi
+ $PROJ_DIR$\..\Debug\Obj\isr.o
+ $PROJ_DIR$\..\Debug\Obj\start.pbi
+ $PROJ_DIR$\..\Debug\Obj\arm_cm0.pbi
+ $PROJ_DIR$\..\Debug\Obj\EEEWrite.o
+ $PROJ_DIR$\..\Debug\Obj\FlashEraseBlock.o
+ $PROJ_DIR$\..\Debug\Obj\FlashEraseResume.o
+ $PROJ_DIR$\..\Debug\Obj\FlashEraseAllBlock.o
+ $PROJ_DIR$\..\Debug\Obj\FlashCommandSequence.o
+ $PROJ_DIR$\..\Debug\Obj\FlashCheckSum.o
+ $PROJ_DIR$\..\src\app\display.c
+ $PROJ_DIR$\..\src\app\flash.c
+ $TOOLKIT_DIR$\inc\c\ystdio.h
+ $TOOLKIT_DIR$\inc\c\xencoding_limits.h
+ $PROJ_DIR$\..\Debug\Obj\SetEEEEnable.o
+ $PROJ_DIR$\..\Debug\Obj\PFlashSwapCtl.o
+ $PROJ_DIR$\..\Debug\Obj\FlashReadResource.pbi
+ $PROJ_DIR$\..\Debug\Obj\FlashProgramCheck.pbi
+ $PROJ_DIR$\..\Debug\Obj\FlashSecurityBypass.pbi
+ $PROJ_DIR$\..\Debug\Obj\FlashProgramOnce.pbi
+ $PROJ_DIR$\..\Debug\Obj\queue.o
+ $PROJ_DIR$\..\Debug\Obj\FlashGetSecurityState.o
+ $TOOLKIT_DIR$\inc\c\stdlib.h
+ $PROJ_DIR$\..\Debug\Obj\FlashProgram.pbi
+ $PROJ_DIR$\..\Debug\Obj\output.pbi
+ $PROJ_DIR$\..\Debug\Obj\NormalDemo_Flash.o
+ $PROJ_DIR$\..\Debug\Obj\PFlashSetProtection.o
+ $PROJ_DIR$\..\Debug\Obj\FlashVerifySection.pbi
+ $PROJ_DIR$\..\Debug\Obj\FlashVerifyAllBlock.o
+ $PROJ_DIR$\..\Debug\Obj\FlashReadResource.o
+ $PROJ_DIR$\..\Debug\Obj\FlashSecurityBypass.o
+ $PROJ_DIR$\..\Debug\Obj\FlashVerifyBlock.o
+ $PROJ_DIR$\..\Debug\Obj\FlashReadOnce.o
+ $PROJ_DIR$\..\Debug\Obj\FlashVerifySection.o
+ $PROJ_DIR$\..\Debug\Obj\PFlashGetProtection.o
+ $PROJ_DIR$\..\Debug\Obj\FlashProgramSection.o
+ $PROJ_DIR$\..\src\app\time.c
+ $PROJ_DIR$\..\Debug\Obj\tft.pbi
+ $PROJ_DIR$\..\Debug\Obj\startup.o
+ $TOOLKIT_DIR$\inc\c\ycheck.h
+ $PROJ_DIR$\..\Debug\Obj\printf.pbi
+ $PROJ_DIR$\..\Debug\Obj\time.o
+ $PROJ_DIR$\..\Debug\Obj\tsi.o
+ $PROJ_DIR$\..\Debug\Obj\tpm.o
+ $PROJ_DIR$\..\Debug\Obj\uif.pbi
+ $PROJ_DIR$\..\Debug\Obj\tft.o
+ $PROJ_DIR$\..\Debug\Obj\plan_handle.o
+ $PROJ_DIR$\..\Debug\Obj\SetEEEEnable.pbi
+ $PROJ_DIR$\..\src\app\NormalDemo_Flash.c
+ $PROJ_DIR$\..\Debug\Obj\key.o
+ $PROJ_DIR$\..\Debug\Obj\tsi.pbi
+ $PROJ_DIR$\..\Debug\Obj\knob.o
$PROJ_DIR$\..\src\app\pm_flash.c
$PROJ_DIR$\..\src\app\pm_init.c
$PROJ_DIR$\..\src\app\pm_time.c
@@ -88,66 +210,6 @@
$PROJ_DIR$\..\src\drivers\lptmr.c
$PROJ_DIR$\..\src\drivers\mcg.c
$PROJ_DIR$\..\src\drivers\pit.c
- $PROJ_DIR$\..\Debug\Obj\getzone.o
- $PROJ_DIR$\..\Debug\Obj\flash.pbi
- $PROJ_DIR$\..\Debug\Obj\pm_time.o
- $PROJ_DIR$\..\src\include\drivers\FTFx\demo_cfg.h
- $PROJ_DIR$\..\Debug\Obj\clock.o
- $PROJ_DIR$\..\Debug\Obj\alloc.o
- $PROJ_DIR$\..\Debug\Obj\lptmr.o
- $PROJ_DIR$\..\Debug\Obj\LandzoOLED.pbi
- $PROJ_DIR$\..\Debug\Obj\assert.o
- $TOOLKIT_DIR$\inc\c\stdint.h
- $TOOLKIT_DIR$\inc\c\DLib_Config_Normal.h
- $PROJ_DIR$\..\Debug\Obj\common.o
- $PROJ_DIR$\..\Debug\Obj\assert.pbi
- $PROJ_DIR$\..\Debug\Obj\memtest.o
- $PROJ_DIR$\..\Debug\Obj\knob.pbi
- $PROJ_DIR$\..\Debug\Obj\printf.o
- $PROJ_DIR$\..\Debug\Obj\plan_manage_main.pbd
- $PROJ_DIR$\..\Debug\Obj\alloc.pbi
- $PROJ_DIR$\..\Debug\Obj\stdlib.o
- $PROJ_DIR$\..\Debug\Obj\FlashGetSecurityState.pbi
- $PROJ_DIR$\..\Debug\Obj\FlashEraseSuspend.pbi
- $PROJ_DIR$\..\Debug\Obj\display.o
- $PROJ_DIR$\..\Debug\Obj\orient.o
- $PROJ_DIR$\..\Debug\Obj\FlashEraseResume.pbi
- $PROJ_DIR$\..\Debug\Obj\orient.pbi
- $PROJ_DIR$\..\Debug\Obj\io.o
- $PROJ_DIR$\..\Debug\Obj\FlashEraseSector.pbi
- $PROJ_DIR$\..\Debug\Obj\FlashVerifyBlock.pbi
- $PROJ_DIR$\..\Debug\Obj\FlashEraseSuspend.o
- $PROJ_DIR$\..\Debug\Obj\FlashEraseSector.o
- $PROJ_DIR$\..\Debug\Obj\FlashEraseResume.o
- $PROJ_DIR$\..\Debug\Obj\FlashEraseBlock.o
- $PROJ_DIR$\..\Debug\Obj\FlashEraseAllBlock.o
- $PROJ_DIR$\..\Debug\Obj\FlashCommandSequence.o
- $PROJ_DIR$\..\Debug\Obj\FlashCheckSum.o
- $PROJ_DIR$\..\src\app\display.c
- $PROJ_DIR$\..\src\app\flash.c
- $TOOLKIT_DIR$\inc\c\ystdio.h
- $TOOLKIT_DIR$\inc\c\xencoding_limits.h
- $TOOLKIT_DIR$\inc\c\ysizet.h
- $PROJ_DIR$\..\Debug\Obj\sysinit.pbi
- $PROJ_DIR$\..\Debug\Obj\debug.pbi
- $PROJ_DIR$\..\Debug\Obj\startup.pbi
- $PROJ_DIR$\..\Debug\Obj\arm_cm0.pbi
- $PROJ_DIR$\..\Debug\Obj\start.pbi
- $PROJ_DIR$\..\Debug\Obj\display.pbi
- $TOOLKIT_DIR$\inc\c\DLib_Threads.h
- $PROJ_DIR$\..\Debug\Obj\simulat_timer.pbi
- $PROJ_DIR$\..\Debug\Obj\plan_handle.pbi
- $PROJ_DIR$\..\Debug\Obj\isr.o
- $PROJ_DIR$\..\Debug\Obj\EEEWrite.o
- $PROJ_DIR$\..\Debug\Obj\EERAMSetProtection.o
- $PROJ_DIR$\..\Debug\Obj\EERAMGetProtection.o
- $PROJ_DIR$\..\Debug\Obj\DFlashSetProtection.o
- $PROJ_DIR$\..\Debug\Obj\LandzoOLED.o
- $PROJ_DIR$\..\Debug\Obj\pit.pbi
- $TOOLKIT_DIR$\lib\shb_l.a
- $PROJ_DIR$\..\Debug\Obj\adc.o
- $PROJ_DIR$\..\Debug\Obj\stdlib.pbi
- $PROJ_DIR$\..\Debug\Obj\tick_timer.pbi
$PROJ_DIR$\..\src\drivers\port.c
$PROJ_DIR$\..\src\drivers\rtc.c
$PROJ_DIR$\..\src\drivers\SPI.c
@@ -195,113 +257,17 @@
$PROJ_DIR$\..\src\include\platforms\freedom.h
$PROJ_DIR$\..\src\other\LandzoOLED.c
$PROJ_DIR$\..\src\other\LandzoOLED.h
- $PROJ_DIR$\..\Debug\Obj\systick.pbi
- $PROJ_DIR$\..\Debug\Obj\lptmr.pbi
- $PROJ_DIR$\..\Debug\Obj\SPI.pbi
- $PROJ_DIR$\..\Debug\Obj\main.pbi
- $PROJ_DIR$\..\Debug\Obj\i2c.o
- $PROJ_DIR$\..\Debug\Obj\clock.pbi
- $PROJ_DIR$\..\Debug\Obj\pit.o
$PROJ_DIR$\..\Debug\Obj\port.o
- $PROJ_DIR$\..\Debug\Obj\gpio.pbi
$TOOLKIT_DIR$\inc\c\stdarg.h
- $PROJ_DIR$\..\Debug\Obj\main.o
- $TOOLKIT_DIR$\lib\dl6M_tln.a
+ $PROJ_DIR$\..\Debug\Obj\gpio.pbi
$PROJ_DIR$\..\src\include\drivers\FTFx\user_cfg.h
- $PROJ_DIR$\..\Debug\Obj\rtc.o
- $PROJ_DIR$\..\Debug\Obj\pm_time.pbi
- $TOOLKIT_DIR$\lib\rt6M_tl.a
+ $TOOLKIT_DIR$\lib\dl6M_tln.a
$PROJ_DIR$\..\Debug\Obj\cmp.o
+ $PROJ_DIR$\..\Debug\Obj\pm_time.pbi
+ $PROJ_DIR$\..\Debug\Obj\main.o
+ $TOOLKIT_DIR$\lib\rt6M_tl.a
+ $PROJ_DIR$\..\Debug\Obj\rtc.o
$PROJ_DIR$\..\Debug\Obj\dac.o
- $PROJ_DIR$\..\Debug\Obj\uart.pbi
- $PROJ_DIR$\..\Debug\Obj\flash.o
- $PROJ_DIR$\..\Debug\Obj\io.pbi
- $PROJ_DIR$\..\Debug\Obj\vectors.o
- $PROJ_DIR$\..\Debug\Obj\uart.o
- $PROJ_DIR$\..\Debug\Obj\adc.pbi
- $PROJ_DIR$\..\Debug\Obj\arm_cm0.o
- $PROJ_DIR$\..\Debug\Obj\cmp.pbi
- $PROJ_DIR$\..\Debug\Obj\dac.pbi
- $PROJ_DIR$\..\Debug\Obj\start.o
- $PROJ_DIR$\..\Debug\Obj\dma.pbi
- $PROJ_DIR$\..\Debug\Obj\tick_timer.o
- $PROJ_DIR$\..\Debug\Obj\rtc.pbi
- $PROJ_DIR$\..\src\include\drivers\FTFx\SSD_FTFx_Internal.h
- $PROJ_DIR$\..\Debug\Obj\dma.o
- $PROJ_DIR$\..\Debug\Obj\port.pbi
- $PROJ_DIR$\..\Debug\Obj\mcg.pbi
- $PROJ_DIR$\..\Debug\Obj\i2c.pbi
- $PROJ_DIR$\..\Debug\Obj\queue.pbi
- $PROJ_DIR$\..\Debug\Obj\time.pbi
- $PROJ_DIR$\..\Debug\Exe\plan_manage_main.out
- $PROJ_DIR$\..\Debug\Obj\DFlashGetProtection.o
- $PROJ_DIR$\..\Debug\Obj\CopyToRam.o
- $TOOLKIT_DIR$\inc\c\DLib_Product.h
- $PROJ_DIR$\..\Debug\Obj\isr.pbi
- $PROJ_DIR$\..\src\app\input.c
- $PROJ_DIR$\..\Debug\Obj\vectors.pbi
- $PROJ_DIR$\..\src\include\drivers\FTFx\SSD_FTFx.h
- $PROJ_DIR$\..\Debug\Obj\input.pbi
- $TOOLKIT_DIR$\inc\c\time.h
- $PROJ_DIR$\..\Debug\Obj\time64.pbi
- $PROJ_DIR$\..\Debug\Obj\crt0.o
- $PROJ_DIR$\..\src\app\clock.c
- $TOOLKIT_DIR$\inc\c\yfuns.h
- $PROJ_DIR$\..\Debug\Obj\DEFlashPartition.o
- $PROJ_DIR$\..\src\app\time64.c
- $PROJ_DIR$\..\src\app\getzone.c
- $PROJ_DIR$\..\Debug\List\plan_manage_main.map
- $PROJ_DIR$\..\Debug\Obj\SPI.o
- $TOOLKIT_DIR$\inc\c\string.h
- $TOOLKIT_DIR$\inc\c\DLib_Product_string.h
- $PROJ_DIR$\..\Debug\Obj\systick.o
- $PROJ_DIR$\..\Debug\Obj\common.pbi
- $PROJ_DIR$\..\Debug\Obj\time64.o
- $PROJ_DIR$\..\Debug\Obj\getzone.pbi
- $PROJ_DIR$\..\Debug\Obj\memtest.pbi
- $PROJ_DIR$\..\Debug\Obj\uif.o
- $PROJ_DIR$\..\Debug\Obj\FlashCheckSum.pbi
- $PROJ_DIR$\..\Debug\Obj\FlashCommandSequence.pbi
- $PROJ_DIR$\..\Debug\Obj\DFlashSetProtection.pbi
- $PROJ_DIR$\..\Debug\Obj\EERAMGetProtection.pbi
- $PROJ_DIR$\..\Debug\Obj\FlashEraseAllBlock.pbi
- $PROJ_DIR$\..\Debug\Obj\EEEWrite.pbi
- $PROJ_DIR$\..\Debug\Obj\EERAMSetProtection.pbi
- $PROJ_DIR$\..\Debug\Obj\DFlashGetProtection.pbi
- $PROJ_DIR$\..\Debug\Obj\CopyToRam.pbi
- $PROJ_DIR$\..\Debug\Obj\FlashEraseBlock.pbi
- $PROJ_DIR$\..\Debug\Obj\DEFlashPartition.pbi
- $PROJ_DIR$\..\Debug\Obj\output.o
- $PROJ_DIR$\..\Debug\Obj\FlashVerifyAllBlock.pbi
- $PROJ_DIR$\..\Debug\Obj\FlashInit.o
- $PROJ_DIR$\..\Debug\Obj\PFlashSwap.o
- $PROJ_DIR$\..\Debug\Obj\FlashReadResource.pbi
- $PROJ_DIR$\..\Debug\Obj\PFlashSwapCtl.o
- $PROJ_DIR$\..\Debug\Obj\SetEEEEnable.o
- $PROJ_DIR$\..\Debug\Obj\FlashProgram.pbi
- $TOOLKIT_DIR$\inc\c\stdlib.h
- $PROJ_DIR$\..\Debug\Obj\queue.o
- $PROJ_DIR$\..\Debug\Obj\FlashProgramCheck.pbi
- $PROJ_DIR$\..\Debug\Obj\FlashProgramOnce.pbi
- $PROJ_DIR$\..\Debug\Obj\FlashSecurityBypass.pbi
- $PROJ_DIR$\..\Debug\Obj\FlashGetSecurityState.o
- $PROJ_DIR$\..\Debug\Obj\output.pbi
- $PROJ_DIR$\..\src\app\time.c
- $PROJ_DIR$\..\Debug\Obj\tft.pbi
- $PROJ_DIR$\..\Debug\Obj\startup.o
- $TOOLKIT_DIR$\inc\c\ycheck.h
- $PROJ_DIR$\..\Debug\Obj\printf.pbi
- $PROJ_DIR$\..\Debug\Obj\time.o
- $PROJ_DIR$\..\Debug\Obj\tsi.o
- $PROJ_DIR$\..\Debug\Obj\tpm.o
- $PROJ_DIR$\..\Debug\Obj\uif.pbi
- $PROJ_DIR$\..\Debug\Obj\tft.o
- $PROJ_DIR$\..\Debug\Obj\plan_handle.o
- $PROJ_DIR$\..\Debug\Obj\SetEEEEnable.pbi
- $PROJ_DIR$\..\src\app\NormalDemo_Flash.c
- $PROJ_DIR$\..\Debug\Obj\key.o
- $PROJ_DIR$\..\Debug\Obj\tsi.pbi
- $PROJ_DIR$\..\Debug\Obj\knob.o
$PROJ_DIR$\..\Debug\Obj\NormalDemo_Flash.pbi
$TOOLKIT_DIR$\inc\c\stdio.h
$PROJ_DIR$\..\src\include\drivers\FTFx\SSD_Types.h
@@ -313,30 +279,47 @@
$PROJ_DIR$\..\src\include\drivers\FTFx\FTFx_KX_(256_128_64_32_16_8)K_0K_0K_1K_0K.h
$PROJ_DIR$\..\Debug\Obj\PFlashSwapCtl.pbi
$PROJ_DIR$\..\Debug\Obj\PFlashSetProtection.pbi
- $PROJ_DIR$\..\src\include\drivers\FTFx\SSD_FTFx_Common.h
- $PROJ_DIR$\..\Debug\Obj\NormalDemo_Flash.o
$PROJ_DIR$\..\Debug\Obj\PFlashSwap.pbi
$PROJ_DIR$\..\Debug\Obj\PFlashGetProtection.pbi
- $PROJ_DIR$\..\Debug\Obj\FlashVerifySection.pbi
- $PROJ_DIR$\..\Debug\Obj\PFlashSetProtection.o
- $PROJ_DIR$\..\Debug\Obj\PFlashGetProtection.o
- $PROJ_DIR$\..\Debug\Obj\FlashVerifySection.o
- $PROJ_DIR$\..\Debug\Obj\FlashVerifyBlock.o
- $PROJ_DIR$\..\Debug\Obj\FlashVerifyAllBlock.o
- $PROJ_DIR$\..\Debug\Obj\FlashSecurityBypass.o
- $PROJ_DIR$\..\Debug\Obj\FlashReadResource.o
- $PROJ_DIR$\..\Debug\Obj\FlashReadOnce.o
- $PROJ_DIR$\..\Debug\Obj\FlashProgramSection.o
- $PROJ_DIR$\..\Debug\Obj\pm_flash.o
+ $PROJ_DIR$\..\Debug\Obj\flash.pbi
+ $PROJ_DIR$\..\Debug\Obj\pm_time.o
+ $PROJ_DIR$\..\Debug\Obj\getzone.o
+ $PROJ_DIR$\..\Debug\Obj\lptmr.o
+ $PROJ_DIR$\..\src\include\drivers\FTFx\SSD_FTFx_Common.h
+ $TOOLKIT_DIR$\inc\c\ysizet.h
+ $PROJ_DIR$\..\Debug\Obj\assert.o
+ $PROJ_DIR$\..\Debug\Obj\LandzoOLED.pbi
+ $PROJ_DIR$\..\Debug\Obj\alloc.o
+ $TOOLKIT_DIR$\inc\c\stdint.h
+ $PROJ_DIR$\..\Debug\Obj\clock.o
+ $PROJ_DIR$\..\src\include\drivers\FTFx\demo_cfg.h
+ $TOOLKIT_DIR$\inc\c\DLib_Config_Normal.h
+ $PROJ_DIR$\..\Debug\Obj\EERAMSetProtection.o
+ $PROJ_DIR$\..\Debug\Obj\EERAMGetProtection.o
+ $PROJ_DIR$\..\Debug\Obj\DFlashSetProtection.o
+ $PROJ_DIR$\..\Debug\Obj\LandzoOLED.o
+ $PROJ_DIR$\..\Debug\Obj\pit.pbi
+ $TOOLKIT_DIR$\lib\shb_l.a
+ $PROJ_DIR$\..\Debug\Obj\adc.o
+ $PROJ_DIR$\..\Debug\Obj\stdlib.pbi
+ $PROJ_DIR$\..\Debug\Obj\tick_timer.pbi
+ $PROJ_DIR$\..\Debug\Obj\SPI.pbi
+ $PROJ_DIR$\..\Debug\Obj\systick.pbi
+ $PROJ_DIR$\..\Debug\Obj\lptmr.pbi
+ $PROJ_DIR$\..\Debug\Obj\main.pbi
+ $PROJ_DIR$\..\Debug\Obj\i2c.o
+ $PROJ_DIR$\..\Debug\Obj\clock.pbi
+ $PROJ_DIR$\..\Debug\Obj\pit.o
$PROJ_DIR$\..\Debug\Obj\pm_flash.pbi
$PROJ_DIR$\..\Debug\Obj\FlashInit.pbi
- $PROJ_DIR$\..\Debug\Obj\debug.o
- $PROJ_DIR$\..\Debug\Obj\simulat_timer.o
- $PROJ_DIR$\..\Debug\Obj\input.o
+ $PROJ_DIR$\..\Debug\Obj\pm_flash.o
$PROJ_DIR$\..\src\common\stdlib.c
- $PROJ_DIR$\..\Debug\Obj\gpio.o
$PROJ_DIR$\..\Debug\Obj\mcg.o
+ $PROJ_DIR$\..\Debug\Obj\gpio.o
+ $PROJ_DIR$\..\Debug\Obj\input.o
$PROJ_DIR$\..\Debug\Obj\key.pbi
+ $PROJ_DIR$\..\Debug\Obj\simulat_timer.o
+ $PROJ_DIR$\..\Debug\Obj\debug.o
$PROJ_DIR$\..\config_files\128KB_Pflash.icf
$PROJ_DIR$\..\Debug\Obj\pm_init.pbi
$PROJ_DIR$\..\Debug\Obj\water.pbi
@@ -348,13 +331,32 @@
$TOOLKIT_DIR$\inc\c\DLib_Defaults.h
$PROJ_DIR$\..\Debug\Obj\FlashReadOnce.pbi
$PROJ_DIR$\..\Debug\Obj\FlashProgramCheck.o
+ $PROJ_DIR$\..\Debug\Obj\common.o
+ $PROJ_DIR$\..\Debug\Obj\assert.pbi
+ $PROJ_DIR$\..\Debug\Obj\memtest.o
+ $PROJ_DIR$\..\Debug\Obj\knob.pbi
+ $PROJ_DIR$\..\Debug\Obj\printf.o
+ $PROJ_DIR$\..\Debug\Obj\plan_manage_main.pbd
+ $PROJ_DIR$\..\Debug\Obj\alloc.pbi
+ $PROJ_DIR$\..\Debug\Obj\stdlib.o
+ $PROJ_DIR$\..\Debug\Obj\FlashGetSecurityState.pbi
+ $PROJ_DIR$\..\Debug\Obj\FlashEraseSuspend.pbi
+ $PROJ_DIR$\..\Debug\Obj\display.o
+ $PROJ_DIR$\..\Debug\Obj\orient.o
+ $PROJ_DIR$\..\Debug\Obj\FlashEraseResume.pbi
+ $PROJ_DIR$\..\Debug\Obj\orient.pbi
+ $PROJ_DIR$\..\Debug\Obj\io.o
+ $PROJ_DIR$\..\Debug\Obj\FlashEraseSector.pbi
+ $PROJ_DIR$\..\Debug\Obj\FlashVerifyBlock.pbi
+ $PROJ_DIR$\..\Debug\Obj\FlashEraseSuspend.o
+ $PROJ_DIR$\..\Debug\Obj\FlashEraseSector.o
[ROOT_NODE]
ILINK
- 227 244
+ 42 61
@@ -363,1248 +365,7 @@
BICOMP
- 123
-
-
- ICCARM
- 324
-
-
-
-
- BICOMP
- 91 283 300 339 92 230 120 128 173 151 160 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 170 185 171 172 163 174 177 183 166 1 0
-
-
- ICCARM
- 91 283 300 339 92 230 120 128 173 151 160 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 170 185 171 172 163 174 177 183 166 1 0
-
-
-
-
- $PROJ_DIR$\..\src\app\isr.c
-
-
- BICOMP
- 231
-
-
- ICCARM
- 131
-
-
-
-
- BICOMP
- 297 283 300 339 92 230 120 128 121 119 173 151 160 91 150 152 153 154 273 158 157 186 175 168 159 162 155 161 169 178 167 170 185 171 172 163 174 177 183 166 2 10 1 0 4
-
-
- ICCARM
- 297 283 300 339 92 230 120 128 121 119 173 151 160 91 150 152 153 154 273 158 157 186 175 168 159 162 155 161 169 178 167 170 185 171 172 163 174 177 183 166 2 10 1 0 4
-
-
-
-
- $PROJ_DIR$\..\src\app\key.c
-
-
- BICOMP
- 330
-
-
- ICCARM
- 293
-
-
-
-
- BICOMP
- 91 283 300 339 92 230 120 128 173 151 160 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 170 185 171 172 163 174 177 183 166 3 0
-
-
- ICCARM
- 91 283 300 339 92 230 120 128 173 151 160 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 170 185 171 172 163 174 177 183 166 3 0
-
-
-
-
- $PROJ_DIR$\..\src\app\knob.c
-
-
- BICOMP
- 96
-
-
- ICCARM
- 295
-
-
-
-
- BICOMP
- 91 283 300 339 92 230 120 128 173 151 160 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 170 185 171 172 163 174 177 183 166 4 0
-
-
- ICCARM
- 91 283 300 339 92 230 120 128 173 151 160 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 170 185 171 172 163 174 177 183 166 4 0
-
-
-
-
- $PROJ_DIR$\..\src\app\main.c
-
-
- BICOMP
- 192
-
-
- ICCARM
- 199
-
-
-
-
- BICOMP
- 297 283 300 339 92 230 120 128 121 119 273 151 160 91 150 152 153 154 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167 8 10 3 4 11 0 9 5 6 337
-
-
- ICCARM
- 297 283 300 339 92 230 120 128 121 119 273 151 160 91 150 152 153 154 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167 8 10 3 4 11 0 9 5 6 337
-
-
-
-
- $PROJ_DIR$\..\src\app\orient.c
-
-
- BICOMP
- 106
-
-
- ICCARM
- 104
-
-
-
-
- BICOMP
- 185 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 171 172 163 174 177 183 166 167 337 0
-
-
- ICCARM
- 185 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 171 172 163 174 177 183 166 167 337 0
-
-
-
-
- $PROJ_DIR$\..\src\app\output.c
-
-
- BICOMP
- 279
-
-
- ICCARM
- 265
-
-
-
-
- $PROJ_DIR$\..\src\app\plan_handle.c
-
-
- BICOMP
- 130
-
-
- ICCARM
- 290
-
-
-
-
- BICOMP
- 91 283 300 339 92 230 120 128 170 173 151 160 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 185 171 172 163 174 177 183 166 12 5 11 0 6 337 3
-
-
- ICCARM
- 91 283 300 339 92 230 120 128 170 173 151 160 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 185 171 172 163 174 177 183 166 12 9 5 11 0 6 337 3
-
-
-
-
- $PROJ_DIR$\..\src\app\pm_flash.c
-
-
- BICOMP
- 322
-
-
- ICCARM
- 321
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304 7 151 160 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304 7 151 160 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
-
-
- $PROJ_DIR$\..\src\app\pm_init.c
-
-
- BICOMP
- 332
-
-
- ICCARM
- 301
-
-
-
-
- BICOMP
- 10 91 283 300 339 92 230 120 128 3 4 159 162 1 11 0 9 5 6 337
-
-
- ICCARM
- 10 91 283 300 339 92 230 120 128 3 4 159 162 1 11 0 9 5 6 337
-
-
-
-
- $PROJ_DIR$\..\src\app\pm_time.c
-
-
- BICOMP
- 203
-
-
- ICCARM
- 84
-
-
-
-
- BICOMP
- 170 173 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 185 171 172 163 174 177 183 166 9 0
-
-
- ICCARM
- 170 173 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 185 171 172 163 174 177 183 166 9 0
-
-
-
-
- $PROJ_DIR$\..\src\app\simulat_timer.c
-
-
- BICOMP
- 129
-
-
- ICCARM
- 325
-
-
-
-
- BICOMP
- 173 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 170 185 171 172 163 174 177 183 166 10 0 3
-
-
- ICCARM
- 173 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 170 185 171 172 163 174 177 183 166 10 0 3
-
-
-
-
- $PROJ_DIR$\..\src\app\tft.c
-
-
- BICOMP
- 281
-
-
- ICCARM
- 289
-
-
-
-
- BICOMP
- 91 283 300 339 92 230 120 128 246 121 247 297 119 185 151 160 150 152 153 154 273 158 157 186 175 168 159 162 155 161 169 178 173 170 171 172 163 174 177 183 166 167 11 4 3 0 5 12 6 337
-
-
- ICCARM
- 91 283 300 339 92 230 120 128 246 121 247 297 119 185 151 160 150 152 153 154 273 158 157 186 175 168 159 162 155 161 169 178 173 170 171 172 163 174 177 183 166 167 11 4 3 0 5 12 9 6 337
-
-
-
-
- $PROJ_DIR$\..\src\app\water.c
-
-
- BICOMP
- 333
-
-
- ICCARM
- 334
-
-
-
-
- BICOMP
- 91 283 300 339 92 230 120 128 163 173 151 160 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 170 185 171 172 174 177 183 166 0 13
-
-
- ICCARM
- 91 283 300 339 92 230 120 128 163 173 151 160 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 170 185 171 172 174 177 183 166 0 13
-
-
-
-
- $PROJ_DIR$\..\src\common\alloc.c
-
-
- BICOMP
- 99
-
-
- ICCARM
- 87
-
-
-
-
- BICOMP
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
- ICCARM
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
-
-
- $PROJ_DIR$\..\src\common\assert.c
-
-
- BICOMP
- 94
-
-
- ICCARM
- 90
-
-
-
-
- BICOMP
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
- ICCARM
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
-
-
- $PROJ_DIR$\..\src\common\common.c
-
-
- BICOMP
- 249
-
-
- ICCARM
- 93
-
-
-
-
- BICOMP
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
- ICCARM
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
-
-
- $PROJ_DIR$\..\src\common\io.c
-
-
- BICOMP
- 209
-
-
- ICCARM
- 107
-
-
-
-
- BICOMP
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
- ICCARM
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
-
-
- $PROJ_DIR$\..\src\common\memtest.c
-
-
- BICOMP
- 252
-
-
- ICCARM
- 95
-
-
-
-
- BICOMP
- 153
-
-
- ICCARM
- 153
-
-
-
-
- $PROJ_DIR$\..\src\common\printf.c
-
-
- BICOMP
- 284
-
-
- ICCARM
- 97
-
-
-
-
- BICOMP
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167 198 246 247
-
-
- ICCARM
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167 246 247
-
-
-
-
- $PROJ_DIR$\..\src\common\queue.c
-
-
- BICOMP
- 225
-
-
- ICCARM
- 274
-
-
-
-
- BICOMP
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
- ICCARM
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
-
-
- $PROJ_DIR$\..\src\common\startup.c
-
-
- BICOMP
- 124
-
-
- ICCARM
- 282
-
-
-
-
- BICOMP
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
- ICCARM
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
-
-
- $PROJ_DIR$\..\src\common\uif.c
-
-
- BICOMP
- 288
-
-
- ICCARM
- 253
-
-
-
-
- BICOMP
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167 246 247
-
-
- ICCARM
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167 246 247
-
-
-
-
- $PROJ_DIR$\..\src\cpu\arm_cm0.c
-
-
- BICOMP
- 125
-
-
- ICCARM
- 213
-
-
-
-
- BICOMP
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
- ICCARM
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
-
-
- $PROJ_DIR$\..\src\cpu\crt0.s
-
-
- AARM
- 238
-
-
-
-
- $PROJ_DIR$\..\src\cpu\start.c
-
-
- BICOMP
- 126
-
-
- ICCARM
- 216
-
-
-
-
- BICOMP
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
- ICCARM
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
-
-
- $PROJ_DIR$\..\src\cpu\sysinit.c
-
-
- BICOMP
- 122
-
-
- ICCARM
- 302
-
-
-
-
- BICOMP
- 161 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
- ICCARM
- 161 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
-
-
- $PROJ_DIR$\..\src\cpu\vectors.c
-
-
- BICOMP
- 233
-
-
- ICCARM
- 210
-
-
-
-
- BICOMP
- 162 2 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
- ICCARM
- 162 2 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\CopyToRam.c
-
-
- BICOMP
- 262
-
-
- ICCARM
- 229
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\DEFlashPartition.c
-
-
- BICOMP
- 264
-
-
- ICCARM
- 241
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\EERAMGetProtection.c
-
-
- BICOMP
- 257
-
-
- ICCARM
- 134
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\DFlashGetProtection.c
-
-
- BICOMP
- 261
-
-
- ICCARM
- 228
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\DFlashSetProtection.c
-
-
- BICOMP
- 256
-
-
- ICCARM
- 135
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\EEEWrite.c
-
-
- BICOMP
- 259
-
-
- ICCARM
- 132
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\FlashCommandSequence.c
-
-
- BICOMP
- 255
-
-
- ICCARM
- 115
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\EERAMSetProtection.c
-
-
- BICOMP
- 260
-
-
- ICCARM
- 133
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\FlashCheckSum.c
-
-
- BICOMP
- 254
-
-
- ICCARM
- 116
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\FlashEraseResume.c
-
-
- BICOMP
- 105
-
-
- ICCARM
- 112
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\FlashEraseAllBlock.c
-
-
- BICOMP
- 258
-
-
- ICCARM
- 114
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\FlashEraseBlock.c
-
-
- BICOMP
- 263
-
-
- ICCARM
- 113
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\FlashProgram.c
-
-
- BICOMP
- 272
-
-
- ICCARM
- 335
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\FlashEraseSector.c
-
-
- BICOMP
- 108
-
-
- ICCARM
- 111
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\FlashEraseSuspend.c
-
-
- BICOMP
- 102
-
-
- ICCARM
- 110
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\FlashInit.c
-
-
- BICOMP
- 323
-
-
- ICCARM
- 267
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\FlashGetSecurityState.c
-
-
- BICOMP
- 101
-
-
- ICCARM
- 278
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\FlashProgramCheck.c
-
-
- BICOMP
- 275
-
-
- ICCARM
- 341
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\FlashReadResource.c
-
-
- BICOMP
- 269
-
-
- ICCARM
- 318
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\FlashProgramOnce.c
-
-
- BICOMP
- 276
-
-
- ICCARM
- 336
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\FlashProgramSection.c
-
-
- BICOMP
- 338
-
-
- ICCARM
- 320
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\FlashReadOnce.c
-
-
- BICOMP
- 340
-
-
- ICCARM
- 319
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\PFlashSwapCtl.c
-
-
- BICOMP
- 305
-
-
- ICCARM
- 270
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\FlashSecurityBypass.c
-
-
- BICOMP
- 277
-
-
- ICCARM
- 317
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\FlashVerifyAllBlock.c
-
-
- BICOMP
- 266
-
-
- ICCARM
- 316
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\FlashVerifyBlock.c
-
-
- BICOMP
- 109
-
-
- ICCARM
- 315
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\FlashVerifySection.c
-
-
- BICOMP
- 311
-
-
- ICCARM
- 314
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\PFlashGetProtection.c
-
-
- BICOMP
- 310
+ 86
ICCARM
@@ -1614,530 +375,162 @@
BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
+ 284 131 266 322 287 47 105 89 235 213 222 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 232 247 233 234 225 236 239 245 228 1 0
ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
+ 284 131 266 322 287 47 105 89 235 213 222 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 232 247 233 234 225 236 239 245 228 1 0
- $PROJ_DIR$\..\src\drivers\FTFx\source\PFlashSetProtection.c
+ $PROJ_DIR$\..\src\app\isr.c
BICOMP
- 306
+ 48
ICCARM
- 312
+ 93
BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
+ 263 131 266 322 287 47 105 89 280 104 235 213 222 284 212 214 215 216 114 220 219 248 237 230 221 224 217 223 231 240 229 232 247 233 234 225 236 239 245 228 2 12 1 0 4
ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
+ 263 131 266 322 287 47 105 89 280 104 235 213 222 284 212 214 215 216 114 220 219 248 237 230 221 224 217 223 231 240 229 232 247 233 234 225 236 239 245 228 2 12 1 0 4
- $PROJ_DIR$\..\src\drivers\FTFx\source\PFlashSwap.c
+ $PROJ_DIR$\..\src\app\key.c
BICOMP
- 309
+ 311
ICCARM
- 268
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\FTFx\source\SetEEEEnable.c
-
-
- BICOMP
- 291
-
-
- ICCARM
- 271
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304
-
-
-
-
- $PROJ_DIR$\..\src\drivers\adc.c
-
-
- BICOMP
- 212
-
-
- ICCARM
- 139
-
-
-
-
- BICOMP
- 163 173 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 170 185 171 172 174 177 183 166
-
-
- ICCARM
- 163 173 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 170 185 171 172 174 177 183 166
-
-
-
-
- $PROJ_DIR$\..\src\drivers\cmp.c
-
-
- BICOMP
- 214
-
-
- ICCARM
- 205
-
-
-
-
- BICOMP
- 164 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
- ICCARM
- 164 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
-
-
- $PROJ_DIR$\..\src\drivers\dac.c
-
-
- BICOMP
- 215
-
-
- ICCARM
- 206
-
-
-
-
- BICOMP
- 165 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
- ICCARM
- 165 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
-
-
- $PROJ_DIR$\..\src\drivers\dma.c
-
-
- BICOMP
- 217
-
-
- ICCARM
- 221
-
-
-
-
- BICOMP
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
- ICCARM
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
-
-
- $PROJ_DIR$\..\src\drivers\gpio.c
-
-
- BICOMP
- 197
-
-
- ICCARM
- 328
-
-
-
-
- BICOMP
- 170 173 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 185 171 172 163 174 177 183 166
-
-
- ICCARM
- 170 173 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 185 171 172 163 174 177 183 166
-
-
-
-
- $PROJ_DIR$\..\src\drivers\i2c.c
-
-
- BICOMP
- 224
-
-
- ICCARM
- 193
-
-
-
-
- BICOMP
- 171 172 173 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 170 185 163 174 177 183 166
-
-
- ICCARM
- 171 172 173 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 170 185 163 174 177 183 166
-
-
-
-
- $PROJ_DIR$\..\src\drivers\lptmr.c
-
-
- BICOMP
- 190
-
-
- ICCARM
- 88
-
-
-
-
- BICOMP
- 174 173 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 170 185 171 172 163 177 183 166
-
-
- ICCARM
- 174 173 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 170 185 171 172 163 177 183 166
-
-
-
-
- $PROJ_DIR$\..\src\drivers\mcg.c
-
-
- BICOMP
- 223
-
-
- ICCARM
- 329
-
-
-
-
- BICOMP
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167 176
-
-
- ICCARM
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167 176
-
-
-
-
- $PROJ_DIR$\..\src\drivers\pit.c
-
-
- BICOMP
- 137
-
-
- ICCARM
- 195
-
-
-
-
- BICOMP
- 177 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 183 166 167
-
-
- ICCARM
- 177 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 183 166 167
-
-
-
-
- $PROJ_DIR$\..\src\app\display.c
-
-
- BICOMP
- 127
-
-
- ICCARM
- 103
-
-
-
-
- $PROJ_DIR$\..\src\app\flash.c
-
-
- BICOMP
- 83
-
-
- ICCARM
- 208
-
-
-
-
- BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304 7 151 160 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
- ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304 7 151 160 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
-
-
- $PROJ_DIR$\..\src\drivers\port.c
-
-
- BICOMP
- 222
-
-
- ICCARM
- 196
-
-
-
-
- BICOMP
- 178 173 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 167 170 185 171 172 163 174 177 183 166
-
-
- ICCARM
- 178 173 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 167 170 185 171 172 163 174 177 183 166
-
-
-
-
- $PROJ_DIR$\..\src\drivers\rtc.c
-
-
- BICOMP
- 219
-
-
- ICCARM
- 202
-
-
-
-
- BICOMP
- 173 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 170 185 171 172 163 174 177 183 166 179
-
-
- ICCARM
- 173 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 170 185 171 172 163 174 177 183 166 179
-
-
-
-
- $PROJ_DIR$\..\src\drivers\SPI.c
-
-
- BICOMP
- 191
-
-
- ICCARM
- 245
-
-
-
-
- BICOMP
- 180 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
- ICCARM
- 180 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
-
-
- $PROJ_DIR$\..\src\drivers\systick.c
-
-
- BICOMP
- 189
-
-
- ICCARM
- 248
-
-
-
-
- BICOMP
- 181 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
- ICCARM
- 181 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
-
-
-
-
- $PROJ_DIR$\..\src\drivers\tick_timer.c
-
-
- BICOMP
141
-
- ICCARM
- 218
-
BICOMP
- 182 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167 181
+ 284 131 266 322 287 47 105 89 235 213 222 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 232 247 233 234 225 236 239 245 228 3 0
ICCARM
- 182 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167 181
+ 284 131 266 322 287 47 105 89 235 213 222 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 232 247 233 234 225 236 239 245 228 3 0
- $PROJ_DIR$\..\src\drivers\tpm.c
+ $PROJ_DIR$\..\src\app\knob.c
BICOMP
- 299
+ 328
ICCARM
- 287
+ 143
BICOMP
- 183 173 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 170 185 171 172 163 174 177 166
+ 284 131 266 322 287 47 105 89 235 213 222 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 232 247 233 234 225 236 239 245 228 0 4
ICCARM
- 183 173 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 170 185 171 172 163 174 177 166
+ 284 131 266 322 287 47 105 89 235 213 222 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 232 247 233 234 225 236 239 245 228 0 4
- $PROJ_DIR$\..\src\drivers\tsi.c
+ $PROJ_DIR$\..\src\app\main.c
BICOMP
- 294
+ 300
ICCARM
- 286
+ 258
BICOMP
- 184 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
+ 263 131 266 322 287 47 105 89 280 104 114 213 222 284 212 214 215 216 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229 9 12 3 4 13 0 10 6 7 320
ICCARM
- 184 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
+ 263 131 266 322 287 47 105 89 280 104 114 213 222 284 212 214 215 216 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229 9 12 3 4 13 0 10 6 7 320
- $PROJ_DIR$\..\src\drivers\uart.c
+ $PROJ_DIR$\..\src\app\orient.c
BICOMP
- 207
+ 338
ICCARM
- 211
+ 336
BICOMP
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
+ 247 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 233 234 225 236 239 245 228 229 320 0
ICCARM
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
+ 247 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 233 234 225 236 239 245 228 229 320 0
- $PROJ_DIR$\..\src\other\LandzoOLED.c
+ $PROJ_DIR$\..\src\app\output.c
BICOMP
- 89
+ 116
ICCARM
- 136
+ 82
+
+
+
+
+ $PROJ_DIR$\..\src\app\plan_handle.c
+
+
+ BICOMP
+ 90
+
+
+ ICCARM
+ 138
BICOMP
- 188 173 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 170 185 171 172 163 174 177 183 166
+ 284 131 266 322 287 47 105 89 232 235 213 222 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 247 233 234 225 236 239 245 228 14 6 13 0 7 320 3
ICCARM
- 188 173 151 160 91 283 300 339 92 230 120 128 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 167 170 185 171 172 163 174 177 183 166
+ 284 131 266 322 287 47 105 89 232 235 213 222 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 247 233 234 225 236 239 245 228 14 10 6 13 0 7 320 3
@@ -2146,13 +539,13 @@
ILINK
- 244
+ 61
ILINK
- 331 139 87 213 90 205 93 229 238 206 324 241 228 135 221 132 134 133 116 115 114 113 112 111 110 278 267 335 341 336 320 319 318 317 316 315 314 328 193 107 131 293 295 88 199 329 95 104 265 313 312 268 270 195 290 321 301 84 196 97 274 202 271 325 245 216 282 302 248 289 218 287 286 211 253 210 334 138 204 303 200
+ 314 294 283 30 281 256 325 46 55 261 313 58 43 290 45 96 289 288 101 100 99 97 98 343 342 113 84 318 324 319 127 124 121 122 120 123 125 309 301 339 93 141 143 278 258 308 327 336 82 126 118 85 107 303 138 306 267 276 251 329 112 260 106 312 62 33 130 268 65 137 35 135 134 28 70 27 317 293 259 269 255
@@ -2161,11 +554,11 @@
BICOMP
- 235
+ 52
ICCARM
- 326
+ 310
@@ -2174,76 +567,7 @@
BICOMP
- 194
-
-
- ICCARM
- 86
-
-
-
-
- BICOMP
- 236 283 300 339 92 230 120 128 121
-
-
- ICCARM
- 236 283 300 339 92 230 120 128 121
-
-
-
-
- $PROJ_DIR$\..\src\app\time64.c
-
-
- BICOMP
- 237
-
-
- ICCARM
- 250
-
-
-
-
- BICOMP
- 236 283 300 339 92 230 120 128 121
-
-
- ICCARM
- 236 283 300 339 92 230 120 128 121
-
-
-
-
- $PROJ_DIR$\..\src\app\getzone.c
-
-
- BICOMP
- 251
-
-
- ICCARM
- 82
-
-
-
-
- BICOMP
- 240 121 283 300 339 92 230 120 128
-
-
- ICCARM
- 240 121 283 300 339 92 230 120 128
-
-
-
-
- $PROJ_DIR$\..\src\app\time.c
-
-
- BICOMP
- 226
+ 302
ICCARM
@@ -2253,11 +577,116 @@
BICOMP
- 236 283 300 339 92 230 120 128 121
+ 53 131 266 322 287 47 105 89 280
ICCARM
- 236 283 300 339 92 230 120 128 121
+ 53 131 266 322 287 47 105 89 280
+
+
+
+
+ $PROJ_DIR$\..\src\app\time64.c
+
+
+ BICOMP
+ 54
+
+
+ ICCARM
+ 67
+
+
+
+
+ BICOMP
+ 53 131 266 322 287 47 105 89 280
+
+
+ ICCARM
+ 53 131 266 322 287 47 105 89 280
+
+
+
+
+ $PROJ_DIR$\..\src\app\getzone.c
+
+
+ BICOMP
+ 68
+
+
+ ICCARM
+ 277
+
+
+
+
+ BICOMP
+ 57 280 131 266 322 287 47 105 89
+
+
+ ICCARM
+ 57 280 131 266 322 287 47 105 89
+
+
+
+
+ $PROJ_DIR$\..\src\app\display.c
+
+
+ BICOMP
+ 92
+
+
+ ICCARM
+ 335
+
+
+
+
+ $PROJ_DIR$\..\src\app\flash.c
+
+
+ BICOMP
+ 275
+
+
+ ICCARM
+ 25
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270 8 213 222 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270 8 213 222 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+
+
+ $PROJ_DIR$\..\src\app\time.c
+
+
+ BICOMP
+ 41
+
+
+ ICCARM
+ 133
+
+
+
+
+ BICOMP
+ 53 131 266 322 287 47 105 89 280
+
+
+ ICCARM
+ 53 131 266 322 287 47 105 89 280
@@ -2266,30 +695,614 @@
BICOMP
- 296
+ 262
ICCARM
- 308
+ 117
BICOMP
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304 85 151 160 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270 286 213 222 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
ICCARM
- 234 220 307 298 91 283 300 339 92 230 120 128 201 304 85 151 160 150 152 153 154 273 121 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270 286 213 222 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
- $PROJ_DIR$\..\src\common\stdlib.c
+ $PROJ_DIR$\..\src\app\pm_flash.c
BICOMP
- 140
+ 304
+
+
+ ICCARM
+ 306
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270 8 213 222 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270 8 213 222 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+
+
+ $PROJ_DIR$\..\src\app\pm_init.c
+
+
+ BICOMP
+ 315
+
+
+ ICCARM
+ 267
+
+
+
+
+ BICOMP
+ 12 284 131 266 322 287 47 105 89 3 4 1 13 0 10 6 7 320
+
+
+ ICCARM
+ 12 284 131 266 322 287 47 105 89 3 4 1 13 0 10 6 7 320
+
+
+
+
+ $PROJ_DIR$\..\src\app\pm_time.c
+
+
+ BICOMP
+ 257
+
+
+ ICCARM
+ 276
+
+
+
+
+ BICOMP
+ 232 235 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 247 233 234 225 236 239 245 228 10 0
+
+
+ ICCARM
+ 232 235 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 247 233 234 225 236 239 245 228 10 0
+
+
+
+
+ $PROJ_DIR$\..\src\app\simulat_timer.c
+
+
+ BICOMP
+ 91
+
+
+ ICCARM
+ 312
+
+
+
+
+ BICOMP
+ 235 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 232 247 233 234 225 236 239 245 228 0 3 12
+
+
+ ICCARM
+ 235 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 232 247 233 234 225 236 239 245 228 0 3 12
+
+
+
+
+ $PROJ_DIR$\..\src\app\tft.c
+
+
+ BICOMP
+ 129
+
+
+ ICCARM
+ 137
+
+
+
+
+ BICOMP
+ 284 131 266 322 287 47 105 89 63 280 64 263 104 247 213 222 212 214 215 216 114 220 219 248 237 230 221 224 217 223 231 240 235 232 233 234 225 236 239 245 228 229 13 4 3 0 6 14 7 320
+
+
+ ICCARM
+ 284 131 266 322 287 47 105 89 63 280 64 263 104 247 213 222 212 214 215 216 114 220 219 248 237 230 221 224 217 223 231 240 235 232 233 234 225 236 239 245 228 229 13 4 3 0 6 14 10 7 320
+
+
+
+
+ $PROJ_DIR$\..\src\app\water.c
+
+
+ BICOMP
+ 316
+
+
+ ICCARM
+ 317
+
+
+
+
+ BICOMP
+ 284 131 266 322 287 47 105 89 225 235 213 222 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 232 247 233 234 236 239 245 228 0 15
+
+
+ ICCARM
+ 284 131 266 322 287 47 105 89 225 235 213 222 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 232 247 233 234 236 239 245 228 0 15
+
+
+
+
+ $PROJ_DIR$\..\src\common\alloc.c
+
+
+ BICOMP
+ 331
+
+
+ ICCARM
+ 283
+
+
+
+
+ BICOMP
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+ ICCARM
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+
+
+ $PROJ_DIR$\..\src\common\assert.c
+
+
+ BICOMP
+ 326
+
+
+ ICCARM
+ 281
+
+
+
+
+ BICOMP
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+ ICCARM
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+
+
+ $PROJ_DIR$\..\src\common\common.c
+
+
+ BICOMP
+ 66
+
+
+ ICCARM
+ 325
+
+
+
+
+ BICOMP
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+ ICCARM
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+
+
+ $PROJ_DIR$\..\src\common\io.c
+
+
+ BICOMP
+ 26
+
+
+ ICCARM
+ 339
+
+
+
+
+ BICOMP
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+ ICCARM
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+
+
+ $PROJ_DIR$\..\src\common\memtest.c
+
+
+ BICOMP
+ 69
+
+
+ ICCARM
+ 327
+
+
+
+
+ BICOMP
+ 215
+
+
+ ICCARM
+ 215
+
+
+
+
+ $PROJ_DIR$\..\src\common\printf.c
+
+
+ BICOMP
+ 132
+
+
+ ICCARM
+ 329
+
+
+
+
+ BICOMP
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229 252 63 64
+
+
+ ICCARM
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229 63 64
+
+
+
+
+ $PROJ_DIR$\..\src\common\queue.c
+
+
+ BICOMP
+ 40
+
+
+ ICCARM
+ 112
+
+
+
+
+ BICOMP
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+ ICCARM
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+
+
+ $PROJ_DIR$\..\src\common\startup.c
+
+
+ BICOMP
+ 87
+
+
+ ICCARM
+ 130
+
+
+
+
+ BICOMP
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+ ICCARM
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+
+
+ $PROJ_DIR$\..\src\common\uif.c
+
+
+ BICOMP
+ 136
+
+
+ ICCARM
+ 70
+
+
+
+
+ BICOMP
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229 63 64
+
+
+ ICCARM
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229 63 64
+
+
+
+
+ $PROJ_DIR$\..\src\cpu\arm_cm0.c
+
+
+ BICOMP
+ 95
+
+
+ ICCARM
+ 30
+
+
+
+
+ BICOMP
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+ ICCARM
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+
+
+ $PROJ_DIR$\..\src\cpu\crt0.s
+
+
+ AARM
+ 55
+
+
+
+
+ $PROJ_DIR$\..\src\cpu\start.c
+
+
+ BICOMP
+ 94
+
+
+ ICCARM
+ 33
+
+
+
+
+ BICOMP
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+ ICCARM
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+
+
+ $PROJ_DIR$\..\src\cpu\sysinit.c
+
+
+ BICOMP
+ 88
+
+
+ ICCARM
+ 268
+
+
+
+
+ BICOMP
+ 223 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+ ICCARM
+ 223 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+
+
+ $PROJ_DIR$\..\src\cpu\vectors.c
+
+
+ BICOMP
+ 50
+
+
+ ICCARM
+ 27
+
+
+
+
+ BICOMP
+ 224 2 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+ ICCARM
+ 224 2 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\CopyToRam.c
+
+
+ BICOMP
+ 79
+
+
+ ICCARM
+ 46
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\DEFlashPartition.c
+
+
+ BICOMP
+ 81
+
+
+ ICCARM
+ 58
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\EERAMGetProtection.c
+
+
+ BICOMP
+ 74
+
+
+ ICCARM
+ 289
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\DFlashGetProtection.c
+
+
+ BICOMP
+ 78
+
+
+ ICCARM
+ 43
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\DFlashSetProtection.c
+
+
+ BICOMP
+ 73
+
+
+ ICCARM
+ 290
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\EEEWrite.c
+
+
+ BICOMP
+ 76
+
+
+ ICCARM
+ 96
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\FlashCommandSequence.c
+
+
+ BICOMP
+ 72
ICCARM
@@ -2299,11 +1312,1000 @@
BICOMP
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 156 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
ICCARM
- 151 160 91 283 300 339 92 230 120 128 150 152 153 154 156 158 157 186 175 168 159 162 155 161 169 178 173 170 185 171 172 163 174 177 183 166 167
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\EERAMSetProtection.c
+
+
+ BICOMP
+ 77
+
+
+ ICCARM
+ 288
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\FlashCheckSum.c
+
+
+ BICOMP
+ 71
+
+
+ ICCARM
+ 101
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\FlashEraseResume.c
+
+
+ BICOMP
+ 337
+
+
+ ICCARM
+ 98
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\FlashEraseAllBlock.c
+
+
+ BICOMP
+ 75
+
+
+ ICCARM
+ 99
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\FlashEraseBlock.c
+
+
+ BICOMP
+ 80
+
+
+ ICCARM
+ 97
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\FlashProgram.c
+
+
+ BICOMP
+ 115
+
+
+ ICCARM
+ 318
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\FlashEraseSector.c
+
+
+ BICOMP
+ 340
+
+
+ ICCARM
+ 343
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\FlashEraseSuspend.c
+
+
+ BICOMP
+ 334
+
+
+ ICCARM
+ 342
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\FlashInit.c
+
+
+ BICOMP
+ 305
+
+
+ ICCARM
+ 84
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\FlashGetSecurityState.c
+
+
+ BICOMP
+ 333
+
+
+ ICCARM
+ 113
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\FlashProgramCheck.c
+
+
+ BICOMP
+ 109
+
+
+ ICCARM
+ 324
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\FlashReadResource.c
+
+
+ BICOMP
+ 108
+
+
+ ICCARM
+ 121
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\FlashProgramOnce.c
+
+
+ BICOMP
+ 111
+
+
+ ICCARM
+ 319
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\FlashProgramSection.c
+
+
+ BICOMP
+ 321
+
+
+ ICCARM
+ 127
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\FlashReadOnce.c
+
+
+ BICOMP
+ 323
+
+
+ ICCARM
+ 124
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\PFlashSwapCtl.c
+
+
+ BICOMP
+ 271
+
+
+ ICCARM
+ 107
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\FlashSecurityBypass.c
+
+
+ BICOMP
+ 110
+
+
+ ICCARM
+ 122
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\FlashVerifyAllBlock.c
+
+
+ BICOMP
+ 83
+
+
+ ICCARM
+ 120
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\FlashVerifyBlock.c
+
+
+ BICOMP
+ 341
+
+
+ ICCARM
+ 123
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\FlashVerifySection.c
+
+
+ BICOMP
+ 119
+
+
+ ICCARM
+ 125
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\PFlashGetProtection.c
+
+
+ BICOMP
+ 274
+
+
+ ICCARM
+ 126
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\PFlashSetProtection.c
+
+
+ BICOMP
+ 272
+
+
+ ICCARM
+ 118
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\PFlashSwap.c
+
+
+ BICOMP
+ 273
+
+
+ ICCARM
+ 85
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\FTFx\source\SetEEEEnable.c
+
+
+ BICOMP
+ 139
+
+
+ ICCARM
+ 106
+
+
+
+
+ BICOMP
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+ ICCARM
+ 51 44 279 264 284 131 266 322 287 47 105 89 254 270
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\adc.c
+
+
+ BICOMP
+ 29
+
+
+ ICCARM
+ 294
+
+
+
+
+ BICOMP
+ 225 235 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 232 247 233 234 236 239 245 228
+
+
+ ICCARM
+ 225 235 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 232 247 233 234 236 239 245 228
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\cmp.c
+
+
+ BICOMP
+ 31
+
+
+ ICCARM
+ 256
+
+
+
+
+ BICOMP
+ 226 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+ ICCARM
+ 226 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\dac.c
+
+
+ BICOMP
+ 32
+
+
+ ICCARM
+ 261
+
+
+
+
+ BICOMP
+ 227 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+ ICCARM
+ 227 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\dma.c
+
+
+ BICOMP
+ 34
+
+
+ ICCARM
+ 45
+
+
+
+
+ BICOMP
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+ ICCARM
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\gpio.c
+
+
+ BICOMP
+ 253
+
+
+ ICCARM
+ 309
+
+
+
+
+ BICOMP
+ 232 235 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 247 233 234 225 236 239 245 228
+
+
+ ICCARM
+ 232 235 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 247 233 234 225 236 239 245 228
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\i2c.c
+
+
+ BICOMP
+ 39
+
+
+ ICCARM
+ 301
+
+
+
+
+ BICOMP
+ 233 234 235 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 232 247 225 236 239 245 228
+
+
+ ICCARM
+ 233 234 235 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 232 247 225 236 239 245 228
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\lptmr.c
+
+
+ BICOMP
+ 299
+
+
+ ICCARM
+ 278
+
+
+
+
+ BICOMP
+ 236 235 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 232 247 233 234 225 239 245 228
+
+
+ ICCARM
+ 236 235 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 232 247 233 234 225 239 245 228
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\mcg.c
+
+
+ BICOMP
+ 38
+
+
+ ICCARM
+ 308
+
+
+
+
+ BICOMP
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229 238
+
+
+ ICCARM
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229 238
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\pit.c
+
+
+ BICOMP
+ 292
+
+
+ ICCARM
+ 303
+
+
+
+
+ BICOMP
+ 239 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 245 228 229
+
+
+ ICCARM
+ 239 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 245 228 229
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\port.c
+
+
+ BICOMP
+ 37
+
+
+ ICCARM
+ 251
+
+
+
+
+ BICOMP
+ 240 235 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 229 232 247 233 234 225 236 239 245 228
+
+
+ ICCARM
+ 240 235 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 229 232 247 233 234 225 236 239 245 228
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\rtc.c
+
+
+ BICOMP
+ 36
+
+
+ ICCARM
+ 260
+
+
+
+
+ BICOMP
+ 235 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 232 247 233 234 225 236 239 245 228 241
+
+
+ ICCARM
+ 235 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 232 247 233 234 225 236 239 245 228 241
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\SPI.c
+
+
+ BICOMP
+ 297
+
+
+ ICCARM
+ 62
+
+
+
+
+ BICOMP
+ 242 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+ ICCARM
+ 242 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\systick.c
+
+
+ BICOMP
+ 298
+
+
+ ICCARM
+ 65
+
+
+
+
+ BICOMP
+ 243 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+ ICCARM
+ 243 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\tick_timer.c
+
+
+ BICOMP
+ 296
+
+
+ ICCARM
+ 35
+
+
+
+
+ BICOMP
+ 244 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229 243
+
+
+ ICCARM
+ 244 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229 243
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\tpm.c
+
+
+ BICOMP
+ 265
+
+
+ ICCARM
+ 135
+
+
+
+
+ BICOMP
+ 245 235 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 232 247 233 234 225 236 239 228
+
+
+ ICCARM
+ 245 235 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 232 247 233 234 225 236 239 228
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\tsi.c
+
+
+ BICOMP
+ 142
+
+
+ ICCARM
+ 134
+
+
+
+
+ BICOMP
+ 246 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+ ICCARM
+ 246 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+
+
+ $PROJ_DIR$\..\src\drivers\uart.c
+
+
+ BICOMP
+ 24
+
+
+ ICCARM
+ 28
+
+
+
+
+ BICOMP
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+ ICCARM
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+
+
+ $PROJ_DIR$\..\src\other\LandzoOLED.c
+
+
+ BICOMP
+ 282
+
+
+ ICCARM
+ 291
+
+
+
+
+ BICOMP
+ 250 235 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 232 247 233 234 225 236 239 245 228
+
+
+ ICCARM
+ 250 235 213 222 284 131 266 322 287 47 105 89 212 214 215 216 114 280 220 219 248 237 230 221 224 217 223 231 240 229 232 247 233 234 225 236 239 245 228
+
+
+
+
+ $PROJ_DIR$\..\src\common\stdlib.c
+
+
+ BICOMP
+ 295
+
+
+ ICCARM
+ 332
+
+
+
+
+ BICOMP
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 218 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
+
+
+ ICCARM
+ 213 222 284 131 266 322 287 47 105 89 212 214 215 216 218 220 219 248 237 230 221 224 217 223 231 240 235 232 247 233 234 225 236 239 245 228 229
diff --git a/plan_manage_main/ewp/plan_manage_main.ewd b/plan_manage_main/ewp/plan_manage_main.ewd
index feea8ad..2856592 100644
--- a/plan_manage_main/ewp/plan_manage_main.ewd
+++ b/plan_manage_main/ewp/plan_manage_main.ewd
@@ -1,2697 +1,2697 @@
-
-
-
- 2
-
- Debug
-
- ARM
-
- 1
-
- C-SPY
- 2
-
- 26
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ARMSIM_ID
- 2
-
- 1
- 1
- 1
-
-
-
-
-
-
-
- ANGEL_ID
- 2
-
- 0
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
- CMSISDAP_ID
- 2
-
- 2
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GDBSERVER_ID
- 2
-
- 0
- 1
- 1
-
-
-
-
-
-
-
-
-
-
- IARROM_ID
- 2
-
- 1
- 1
- 1
-
-
-
-
-
-
-
-
- IJET_ID
- 2
-
- 3
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- JLINK_ID
- 2
-
- 15
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- LMIFTDI_ID
- 2
-
- 2
- 1
- 1
-
-
-
-
-
-
-
-
-
- MACRAIGOR_ID
- 2
-
- 3
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PEMICRO_ID
- 2
-
- 1
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- RDI_ID
- 2
-
- 2
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- STLINK_ID
- 2
-
- 2
- 1
- 1
-
-
-
-
-
-
-
-
-
-
- THIRDPARTY_ID
- 2
-
- 0
- 1
- 1
-
-
-
-
-
-
-
- XDS100_ID
- 2
-
- 2
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
- $TOOLKIT_DIR$\plugins\middleware\HCCWare\HCCWare.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\AVIX\AVIX.ENU.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin
- 0
-
-
- $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin
- 1
-
-
- $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin
- 0
-
-
- $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin
- 1
-
-
- $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin
- 0
-
-
-
-
- Release
-
- ARM
-
- 0
-
- C-SPY
- 2
-
- 26
- 1
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ARMSIM_ID
- 2
-
- 1
- 1
- 0
-
-
-
-
-
-
-
- ANGEL_ID
- 2
-
- 0
- 1
- 0
-
-
-
-
-
-
-
-
-
-
-
- CMSISDAP_ID
- 2
-
- 2
- 1
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GDBSERVER_ID
- 2
-
- 0
- 1
- 0
-
-
-
-
-
-
-
-
-
-
- IARROM_ID
- 2
-
- 1
- 1
- 0
-
-
-
-
-
-
-
-
- IJET_ID
- 2
-
- 3
- 1
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- JLINK_ID
- 2
-
- 15
- 1
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- LMIFTDI_ID
- 2
-
- 2
- 1
- 0
-
-
-
-
-
-
-
-
-
- MACRAIGOR_ID
- 2
-
- 3
- 1
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PEMICRO_ID
- 2
-
- 1
- 1
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- RDI_ID
- 2
-
- 2
- 1
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- STLINK_ID
- 2
-
- 2
- 1
- 0
-
-
-
-
-
-
-
-
-
-
- THIRDPARTY_ID
- 2
-
- 0
- 1
- 0
-
-
-
-
-
-
-
- XDS100_ID
- 2
-
- 2
- 1
- 0
-
-
-
-
-
-
-
-
-
-
-
-
- $TOOLKIT_DIR$\plugins\middleware\HCCWare\HCCWare.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\AVIX\AVIX.ENU.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin
- 0
-
-
- $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin
- 1
-
-
- $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin
- 0
-
-
- $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin
- 1
-
-
- $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin
- 0
-
-
-
-
-
-
+
+
+
+ 2
+
+ Debug
+
+ ARM
+
+ 1
+
+ C-SPY
+ 2
+
+ 26
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ARMSIM_ID
+ 2
+
+ 1
+ 1
+ 1
+
+
+
+
+
+
+
+ ANGEL_ID
+ 2
+
+ 0
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+ CMSISDAP_ID
+ 2
+
+ 2
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GDBSERVER_ID
+ 2
+
+ 0
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+ IARROM_ID
+ 2
+
+ 1
+ 1
+ 1
+
+
+
+
+
+
+
+
+ IJET_ID
+ 2
+
+ 3
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ JLINK_ID
+ 2
+
+ 15
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LMIFTDI_ID
+ 2
+
+ 2
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+ MACRAIGOR_ID
+ 2
+
+ 3
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PEMICRO_ID
+ 2
+
+ 1
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RDI_ID
+ 2
+
+ 2
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ STLINK_ID
+ 2
+
+ 2
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+ THIRDPARTY_ID
+ 2
+
+ 0
+ 1
+ 1
+
+
+
+
+
+
+
+ XDS100_ID
+ 2
+
+ 2
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+ $TOOLKIT_DIR$\plugins\middleware\HCCWare\HCCWare.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\AVIX\AVIX.ENU.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin
+ 0
+
+
+ $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin
+ 1
+
+
+ $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin
+ 0
+
+
+ $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin
+ 1
+
+
+ $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin
+ 0
+
+
+
+
+ Release
+
+ ARM
+
+ 0
+
+ C-SPY
+ 2
+
+ 26
+ 1
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ARMSIM_ID
+ 2
+
+ 1
+ 1
+ 0
+
+
+
+
+
+
+
+ ANGEL_ID
+ 2
+
+ 0
+ 1
+ 0
+
+
+
+
+
+
+
+
+
+
+
+ CMSISDAP_ID
+ 2
+
+ 2
+ 1
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GDBSERVER_ID
+ 2
+
+ 0
+ 1
+ 0
+
+
+
+
+
+
+
+
+
+
+ IARROM_ID
+ 2
+
+ 1
+ 1
+ 0
+
+
+
+
+
+
+
+
+ IJET_ID
+ 2
+
+ 3
+ 1
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ JLINK_ID
+ 2
+
+ 15
+ 1
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LMIFTDI_ID
+ 2
+
+ 2
+ 1
+ 0
+
+
+
+
+
+
+
+
+
+ MACRAIGOR_ID
+ 2
+
+ 3
+ 1
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PEMICRO_ID
+ 2
+
+ 1
+ 1
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RDI_ID
+ 2
+
+ 2
+ 1
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ STLINK_ID
+ 2
+
+ 2
+ 1
+ 0
+
+
+
+
+
+
+
+
+
+
+ THIRDPARTY_ID
+ 2
+
+ 0
+ 1
+ 0
+
+
+
+
+
+
+
+ XDS100_ID
+ 2
+
+ 2
+ 1
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+ $TOOLKIT_DIR$\plugins\middleware\HCCWare\HCCWare.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\AVIX\AVIX.ENU.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin
+ 0
+
+
+ $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin
+ 1
+
+
+ $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin
+ 0
+
+
+ $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin
+ 1
+
+
+ $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin
+ 0
+
+
+
+
+
+
diff --git a/plan_manage_main/ewp/settings/plan_manage_main.Debug.cspy.bat b/plan_manage_main/ewp/settings/plan_manage_main.Debug.cspy.bat
index d86e155..6081a0f 100644
--- a/plan_manage_main/ewp/settings/plan_manage_main.Debug.cspy.bat
+++ b/plan_manage_main/ewp/settings/plan_manage_main.Debug.cspy.bat
@@ -19,6 +19,6 @@
@REM
-"D:\work_soft\iar\arm\common\bin\cspybat" "D:\work_soft\iar\arm\arm\bin\armproc.dll" "D:\work_soft\iar\arm\arm\bin\armjlink.dll" %1 --plugin "D:\work_soft\iar\arm\arm\bin\armbat.dll" --device_macro "D:\work_soft\iar\arm\arm\config\debugger\Freescale\Kinetis.dmac" --backend -B "--endian=little" "--cpu=Cortex-M0+" "--fpu=None" "-p" "D:\work_soft\iar\arm\arm\CONFIG\debugger\Freescale\MKL25Z128xxx4.ddf" "--semihosting" "--device=MKL25Z128xxx4" "--drv_mtb_regbase=0xF0000000" "--drv_mtb_dwtregbase=0xF0001000" "--drv_mtb_minramaddr=0x20000000" "--drv_mtb_maxramaddr=0x20002FFF" "--drv_communication=USB0" "--jlink_speed=auto" "--jlink_initial_speed=1000" "--jlink_reset_strategy=0,0" "--jlink_interface=SWD" "--drv_catch_exceptions=0x000" "--drv_swo_clock_setup=72000000,0,2000000"
+"D:\work_soft\iar\arm\common\bin\cspybat" "D:\work_soft\iar\arm\arm\bin\armproc.dll" "D:\work_soft\iar\arm\arm\bin\armjlink.dll" %1 --plugin "D:\work_soft\iar\arm\arm\bin\armbat.dll" --device_macro "D:\work_soft\iar\arm\arm\config\debugger\Freescale\Kinetis.dmac" --backend -B "--endian=little" "--cpu=Cortex-M0+" "--fpu=None" "-p" "D:\work_soft\iar\arm\arm\CONFIG\debugger\Freescale\MKL25Z128xxx4.ddf" "--drv_attach_to_program" "--semihosting" "--device=MKL25Z128xxx4" "--drv_mtb_regbase=0xF0000000" "--drv_mtb_dwtregbase=0xF0001000" "--drv_mtb_minramaddr=0x20000000" "--drv_mtb_maxramaddr=0x20002FFF" "--drv_communication=USB0" "--jlink_speed=auto" "--jlink_initial_speed=1000" "--jlink_reset_strategy=0,0" "--jlink_interface=SWD" "--drv_catch_exceptions=0x000" "--drv_swo_clock_setup=72000000,0,2000000"
diff --git a/plan_manage_main/ewp/settings/plan_manage_main.dni b/plan_manage_main/ewp/settings/plan_manage_main.dni
index 2f181ca..b0d40a3 100644
--- a/plan_manage_main/ewp/settings/plan_manage_main.dni
+++ b/plan_manage_main/ewp/settings/plan_manage_main.dni
@@ -9,7 +9,7 @@ TriggerName=main
LimitSize=0
ByteLimit=50
[DebugChecksum]
-Checksum=231404021
+Checksum=2097835749
[CodeCoverage]
Enabled=_ 0
[Exceptions]
diff --git a/plan_manage_main/res/pm_tft_001.HMI b/plan_manage_main/res/pm_tft_001.HMI
index f4c36ea..a51ed0e 100644
Binary files a/plan_manage_main/res/pm_tft_001.HMI and b/plan_manage_main/res/pm_tft_001.HMI differ
diff --git a/plan_manage_main/src/app/include/key.h b/plan_manage_main/src/app/include/key.h
index 584f7c9..fe9a814 100644
--- a/plan_manage_main/src/app/include/key.h
+++ b/plan_manage_main/src/app/include/key.h
@@ -1,58 +1,40 @@
-/* key.h - 监测并采集按键的输入
- * 共有四种输入,无键,单击,双击,长击。
- * 使用一个定时器每10ms采集一次io状态来实现的。
- */
-
-#ifndef KEY_H
-#define KEY_H
-
-
-typedef enum key_mean_
-{
- N_KEY = 0, S_KEY, D_KEY, L_KEY
-} key_mean;
-
-
-
-/*
- * key_type - 按键的种类
- */
-typedef enum key_type_
-{
- UP_KEY = 0, DOWN_KEY, OK_KEY, RET_KEY, AMS_KEY, WIFI_KEY, MR_KEY, MB_KEY, MUVB_KEY
-} key_type;
-
-
-
-/*
- * key_init() - 按键模块初始化
- *
- */
-void key_init(void);
-
-
-/*
- * key_detect() - 检测按键
- *
- * 要求每隔10ms调用一次
- */
-void key_detect(void);
-
-
-
-/*
- * get_key_mean() - 得到指定的按键信息
- *
- * 这个函数中在取得信息后会将对应按键重新标记为N_KEY
- */
-key_mean get_key_mean(key_type key_t);
-
-
-
-
-void clear_key_m(void);
-
-
-
-
-#endif // KEY_H
+/* key.h - 监测并采集按键的输入
+ * 共有四种输入,无键,单击,双击,长击。
+ * 使用一个定时器每10ms采集一次io状态来实现的。
+ */
+
+#ifndef KEY_H
+#define KEY_H
+
+
+/*
+ * key_mean - 按键的状态标志符号
+ * N_KEY表示无键按下状态,S_KEY表示单击,D_KEY表示双击,L_KEY表示长按
+ */
+typedef enum key_mean_
+{
+ N_KEY = 0, S_KEY, D_KEY, L_KEY
+} key_mean;
+
+
+
+/*
+ * key_type - 按键的种类
+ */
+typedef enum key_type_
+{
+ UP_KEY = 0, DOWN_KEY, OK_KEY, RET_KEY, AMS_KEY, WIFI_KEY, MR_KEY, MB_KEY, MUVB_KEY
+} key_type;
+
+
+
+
+void key_init(void);
+void key_detect(void);
+key_mean get_key_mean(key_type key_t);
+void clear_key_m(void);
+
+
+
+
+#endif // KEY_H
diff --git a/plan_manage_main/src/app/include/knob.h b/plan_manage_main/src/app/include/knob.h
index be9fe38..9a37c42 100644
--- a/plan_manage_main/src/app/include/knob.h
+++ b/plan_manage_main/src/app/include/knob.h
@@ -1,56 +1,29 @@
-/*
- * knob.h - 提供旋钮输入的接口函数
- *
- * 使用的是一个数字旋钮,利用计数来采集输入
- */
-
-#ifndef KNOB_H
-#define KNOB_H
-
-#include "arm_cm0.h"
-#include "vectors.h"
-
-
-
-
-/*
- * knob_init() - 为旋钮输入而执行的初始化
- *
- * 旋钮的检测初始化后默认是禁止的
- */
-void knob_init(void);
-
-
-
-/*
- * knob_enable() - 使能旋钮脉冲检测
- */
-void knob_enable(void);
-
-
-/*
- * knob_disable() - 禁止旋钮脉冲检测
- */
-void knob_disable(void);
-
-
-/*
- * knob_clear() - 清除旋钮值
- */
-void knob_clear(void);
-
-/*
- * get_knob_val() - 返回旋钮值
- */
-int32_t get_knob_val(void);
-
-
-/*
- * knob_detect() - 旋钮检测
- *
- * 这个函数需要在旋钮编码器的A相输出发生沿跳变时调用,即上下沿中断时
- */
-void knob_detect(void);
-
-
-#endif /* KNOB_H */
+/*
+ * knob.h - 提供旋钮输入的接口函数
+ *
+ * 使用的是一个数字旋钮,利用计数来采集输入
+ */
+
+#ifndef KNOB_H
+#define KNOB_H
+
+
+
+
+
+
+void knob_init(void);
+
+
+void knob_enable(void);
+
+void knob_disable(void);
+
+void knob_clear(void);
+
+int32_t get_knob_val(void);
+
+void knob_detect(void);
+
+
+#endif /* KNOB_H */
diff --git a/plan_manage_main/src/app/include/pm_time.h b/plan_manage_main/src/app/include/pm_time.h
index f414570..daf7175 100644
--- a/plan_manage_main/src/app/include/pm_time.h
+++ b/plan_manage_main/src/app/include/pm_time.h
@@ -1,38 +1,34 @@
-/*
- * time.h - 鏃堕棿澶勭悊
- */
-
-#include
-
-
-typedef struct calendar_info_
-{
- uint8_t sec;
- uint8_t min;
- uint8_t hour;
- uint8_t mday;
- uint8_t month;
- uint16_t year;
- uint8_t wday;
- uint16_t yday;
-} calendar_info;
-
-enum { START_YEAR = 2000, SEC_IN_DAY = 24 * 60 * 60};
-
-uint8_t is_leapyear(uint16_t year);
-
-uint8_t get_month_days(uint16_t year, uint8_t month);
-
-void ds1302_init(void);
-
-void ds1302_set_time(calendar_info *cal);
-
-void ds1302_read_time(calendar_info *cal);
-
-void maintain_system_time(void);
-
-calendar_info get_system_time(void);
-
-uint32_t calendar_to_sec(calendar_info *cal);
-
-calendar_info sec_to_calendar(uint32_t sec);
+/*
+ * time.h - 鏃堕棿澶勭悊
+ */
+
+#include
+
+
+/*
+ * calendar_info - 鍒嗚В鏃堕棿
+ */
+typedef struct calendar_info_
+{
+ uint8_t sec;
+ uint8_t min;
+ uint8_t hour;
+ uint8_t mday;
+ uint8_t month;
+ uint16_t year;
+ uint8_t wday;
+ uint16_t yday;
+} calendar_info;
+
+// START_YEAR涓鸿绠楁棩鍘嗘椂闂存椂鐨勮捣濮嬫椂闂
+enum { START_YEAR = 2000, SEC_IN_DAY = 24 * 60 * 60};
+
+uint8_t is_leapyear(uint16_t year);
+uint8_t get_month_days(uint16_t year, uint8_t month);
+void ds1302_init(void);
+void ds1302_set_time(calendar_info *cal);
+void ds1302_read_time(calendar_info *cal);
+void maintain_system_time(void);
+calendar_info get_system_time(void);
+uint32_t calendar_to_sec(calendar_info *cal);
+calendar_info sec_to_calendar(uint32_t sec);
diff --git a/plan_manage_main/src/app/include/simulat_timer.h b/plan_manage_main/src/app/include/simulat_timer.h
index 225330a..c0a5d08 100644
--- a/plan_manage_main/src/app/include/simulat_timer.h
+++ b/plan_manage_main/src/app/include/simulat_timer.h
@@ -1,107 +1,52 @@
-/*
- * simulat_timer.h - 实现一个模拟定时器
- */
-
-#ifndef SIMULAT_TIMER_H
-#define SIMULAT_TIMER_H
-
-#include
-
-/*
- * 模拟定时器的数量
- */
-#define SIMULAT_TIMER_NUM 5
-
-
-
-typedef struct st_register_
-{
- uint32_t count; // 定时器计数
- uint32_t cmr; // 比较寄存器
- struct
- {
- uint8_t ten : 1; // 使能标志
- uint8_t tov : 1; // 溢出标志
- uint8_t tfc : 1; // 自由运行标志
- uint8_t tcf : 1; // 比较标志
- } flag;
-} st_register;
-
-
-typedef enum st_mode_
-{
- COMPARE = 0,
- NO_COMPARE
-} st_mode;
-
-/*
- * st_init() - 初始化实现模拟定时器所需的pit定时器
- *
- * 基础定时为1ms
- */
-void st_base_init(void);
-
-
-/*
- * st_init() - 初始化一个给定编号的模拟定时器
- * @n: 定时器编号
- * @st_m: 定时模式
- * @cmr_v: 定时器比较值,在非比较模式可以为任意值
- *
- * 这个函数返回0表示正常完成了初始化任务,返回~0表示定时器已打开或不存在
- */
-uint8_t st_init(uint8_t n, st_mode st_m, uint32_t cmr_v);
-
-
-/*
- * st_close() - 关闭一个给定编号的模拟定时器
- * @n: 定时器编号
- */
-void st_close(uint8_t n);
-
-/*
- * st_tcf() - 查询tcf位返回
- * @n: 定时器编号
- *
- * 这个函数在没有过比较值的时候返回0,已过比较值得时候返回1,对于不存在或未打开
- */
-uint8_t st_tcf(uint8_t n);
-
-
-
-/*
- * st_tov() - 查询tov位返回
- * @n: 定时器编号
- *
- * 这个函数在没有溢出时返回0,没有溢出时返回1,对于不存在或未打开
- */
-uint8_t st_tov(uint8_t n);
-
-
-
-/*
- * st_count() - 查询当前模拟定时值
- * @n: 定时器编号
- *
- * 对于不存在或未打开
- */
-uint32_t st_count(uint8_t n);
-
-
-
-/********************ISR******************/
-
-/*
- * st_base() -定时调用以模拟N路定时器
- *
- * 定时的最小间隔等于这个函数被调用的周期
- */
-void st_base(void);
-
-
-
-
-
-
-
-#endif /* SIMULAT_TIMER_H */
+/*
+ * simulat_timer.h - 实现一个模拟定时器
+ */
+
+#ifndef SIMULAT_TIMER_H
+#define SIMULAT_TIMER_H
+
+#include
+
+/*
+ * 模拟定时器的数量
+ */
+#define SIMULAT_TIMER_NUM 5
+
+
+
+typedef struct st_register_
+{
+ uint32_t count; // 定时器计数
+ uint32_t cmr; // 比较寄存器
+ struct
+ {
+ uint8_t ten : 1; // 使能标志
+ uint8_t tov : 1; // 溢出标志
+ uint8_t tfc : 1; // 自由运行标志
+ uint8_t tcf : 1; // 比较标志
+ } flag;
+} st_register;
+
+
+typedef enum st_mode_
+{
+ COMPARE = 0,
+ NO_COMPARE
+} st_mode;
+
+
+void st_base_init(void);
+uint8_t st_init(uint8_t n, st_mode st_m, uint32_t cmr_v);
+void st_close(uint8_t n);
+uint8_t st_tcf(uint8_t n);
+uint8_t st_tov(uint8_t n);
+uint32_t st_count(uint8_t n);
+void st_base(void);
+
+
+
+
+
+
+
+#endif /* SIMULAT_TIMER_H */
diff --git a/plan_manage_main/src/app/include/tft.h b/plan_manage_main/src/app/include/tft.h
index a7b23f8..1786ab0 100644
--- a/plan_manage_main/src/app/include/tft.h
+++ b/plan_manage_main/src/app/include/tft.h
@@ -1,43 +1,42 @@
-/*
- * tft.h - tft接口
- */
-
-
-#ifndef TFT_H
-#define TFT_H
-
-
-typedef struct input_limit_
-{
- int16_t max;
- int16_t min;
-} input_limit;
-
-void tft_init(void);
-
-void tft_send_cmd(const char *cmd);
-
-void tft_left(void);
-
-void tft_right(void);
-
-void tft_up(void);
-
-void tft_down(void);
-
-void tft_ok(void);
-
-void tft_ret(void);
-
-void tft_page_refresh(void);
-
-int16_t *get_value_of_kvp(char *name, uint8_t objn);
-
-input_limit tft_input_limit(char *name);
-
-//const kv_pair *get_plan_data(uint8_t objn)[][PLAN_DATA_NUM];
-
-
-
-
-#endif /* TFT_H */
+/*
+ * tft.h - tft接口
+ */
+
+
+#ifndef TFT_H
+#define TFT_H
+
+
+typedef struct input_limit_
+{
+ int16_t max;
+ int16_t min;
+} input_limit;
+
+void tft_init(void);
+
+void tft_send_cmd(const char *cmd);
+
+void tft_left(void);
+
+void tft_right(void);
+
+void tft_up(void);
+
+void tft_down(void);
+
+void tft_ok(void);
+
+void tft_ret(void);
+
+void tft_page_refresh(void);
+
+int16_t *get_value_of_kvp(char *name, uint8_t objn);
+
+input_limit tft_input_limit(char *name);
+
+
+
+
+
+#endif /* TFT_H */
diff --git a/plan_manage_main/src/app/include/tft_plan_internal.h b/plan_manage_main/src/app/include/tft_plan_internal.h
index e682dfa..4b65eae 100644
--- a/plan_manage_main/src/app/include/tft_plan_internal.h
+++ b/plan_manage_main/src/app/include/tft_plan_internal.h
@@ -1,41 +1,48 @@
-/*
- * tft_handle_internal.h - tft鍜宲lan_handle妯″潡鍏卞悓浣跨敤閮ㄥ垎鐨勫唴閮ㄥ0鏄
- *
- * 杩欎釜鏂囦欢鍙簲鍖呭惈鍦╰ft鍜宲lan_handle妯″潡
- */
-
-#include "include/pm_time.h"
-
-
-typedef struct plan_input_
-{
- calendar_info bg_t;
- calendar_info ed_t;
- calendar_info pd_t;
-
- uint8_t x_orient;
- uint8_t y_orient;
- uint8_t lg_r : 1;
- uint8_t lg_b : 1;
- uint8_t lg_uvb : 1;
- uint8_t water : 1;
- uint8_t sw : 1;
- uint8_t cnt;
-} plan_input;
-
-typedef struct kv_pair_
-{
- char *key;
- int16_t value;
- int8_t attr;
-} kv_pair;
-
-enum { PLAN_DATA_NUM = 19 };
-
-extern plan_input plan_in[PLAN_DATA_NUM];
-
-extern kv_pair kvp_obj_set[][PLAN_DATA_NUM];
-
-
-
-void tft_to_plan_input(uint8_t objn);
+/*
+ * tft_handle_internal.h - tft鍜宲lan_handle妯″潡鍏卞悓浣跨敤閮ㄥ垎鐨勫唴閮ㄥ0鏄
+ *
+ * 杩欎釜鏂囦欢鍙簲鍖呭惈鍦╰ft鍜宲lan_handle妯″潡
+ */
+
+#include "include/pm_time.h"
+
+/*
+ * plan_input - 琛ㄧず璁″垝杈撳叆鐨勭被鍨
+ *
+ */
+typedef struct plan_input_
+{
+ calendar_info bg_t; // 寮濮嬫椂闂
+ calendar_info ed_t; // 缁撴潫鏃堕棿
+ calendar_info pd_t; // 鍛ㄦ湡鏃堕暱
+
+ uint8_t x_orient; // x鏂瑰悜鍊硷紝鏈娇鐢
+ uint8_t y_orient; // y鏂瑰悜鍊硷紝鏈娇鐢
+ uint8_t lg_r : 1; // 绾㈢伅
+ uint8_t lg_b : 1; // 钃濈伅
+ uint8_t lg_uvb : 1; // uvb
+ uint8_t water : 1; // 娴囨按锛屾湭浣跨敤
+ uint8_t sw : 1; // 鏄惁鍔犲叆璁″垝
+ uint8_t cnt; // 瀹屾垚娆℃暟
+} plan_input;
+
+/*
+ * kv_pair - 琛ㄧず椤甸潰涓殑鍏冪礌
+ * key涓哄瓨鍌ㄥ厓绱營D鐨勫瓧绗︿覆锛寁alue涓轰竴涓暣褰㈠硷紝attr涓哄厓绱犲睘鎬
+ */
+typedef struct kv_pair_
+{
+ char *key;
+ int16_t value;
+ int8_t attr;
+} kv_pair;
+
+enum { PLAN_DATA_NUM = 19, OBJ_NUM = 8 };
+
+extern plan_input plan_in[OBJ_NUM];
+
+extern kv_pair kvp_obj_set[][PLAN_DATA_NUM];
+
+
+
+void tft_to_plan_input(uint8_t objn);
diff --git a/plan_manage_main/src/app/include/water.h b/plan_manage_main/src/app/include/water.h
index d39a6f8..1e4294a 100644
--- a/plan_manage_main/src/app/include/water.h
+++ b/plan_manage_main/src/app/include/water.h
@@ -14,11 +14,7 @@
void water_init(void);
-
-
uint16_t get_moisture(void);
-
-
void water_ctr(uint16_t sv_moist);
diff --git a/plan_manage_main/src/app/key.c b/plan_manage_main/src/app/key.c
index 5ab7f4d..0dea6bc 100644
--- a/plan_manage_main/src/app/key.c
+++ b/plan_manage_main/src/app/key.c
@@ -1,352 +1,364 @@
-/*
- * key.c - 监测并采集按键的输入
- *
- * 共有四种输入,无键,单击,双击,长击。
- * 每10ms需要采集一次io状态。
- * 每增减一个按键,需要设置的有:
- *
- * key_type枚举类型中对应的枚举元素
- *
- * 对应的key_infomation变量
- *
- * key_init()函数中对应的初始化条目
- * key_detect()函数中对应检测条目
- * get_key_mean()函数中对应获取条目
- */
-
-
-#include
-
-#include "include.h"
-
-#include "include/key.h"
-#include "include/config.h"
-
-
-/*
- * key_state - 表示按键的状态
- * key_state_0 初始状态,或者表示第一次单击状态
- * key_state_1 消抖和确认状态,或表示第二次单击状态
- * key_state_2 按键计时状态
- * key_state_3 按键等待释放状态
- */
-typedef enum key_state_
-{
- key_state_0 = 0, key_state_1, key_state_2, key_state_3
-} key_state;
-
-/*
- * IO状态符号定义
- */
-typedef enum state_sign_
-{
- INVALID = 0, VALID = 1
-} state_sign;
-
-
-typedef struct key_infomation_
-{
- key_state state_base;
- uint8_t time_base;
-
- key_state state;
- uint8_t time;
-
- key_mean key_m;
-
- state_sign (*get_state_io)(void);
-} key_infomation;
-
-
-
-state_sign get_state_up_key_io(void)
-{ return !gpio_get(UP_KEY_PINX) ? VALID : INVALID; }
-
-state_sign get_state_down_key_io(void)
-{ return !gpio_get(DOWN_KEY_PINX) ? VALID : INVALID; }
-
-state_sign get_state_ok_key_io(void)
-{ return !gpio_get(OK_KEY_PINX) ? VALID : INVALID; }
-
-state_sign get_state_ret_key_io(void)
-{ return !gpio_get(RET_KEY_PINX) ? VALID : INVALID; }
-
-state_sign get_state_ams_key_io(void)
-{ return !gpio_get(AMS_KEY_PINX) ? VALID : INVALID; }
-
-state_sign get_state_wifi_key_io(void)
-{ return !gpio_get(WIFI_KEY_PINX) ? VALID : INVALID; }
-
-state_sign get_state_mr_key_io(void)
-{ return !gpio_get(MR_KEY_PINX) ? VALID : INVALID; }
-
-state_sign get_state_mb_key_io(void)
-{ return !gpio_get(MB_KEY_PINX) ? VALID : INVALID; }
-
-state_sign get_state_muvb_key_io(void)
-{ return !gpio_get(MUVB_KEY_PINX) ? VALID : INVALID; }
-
-
-static volatile key_infomation
- up_key_info = { key_state_0, 0, key_state_0, 0, N_KEY, get_state_up_key_io },
- down_key_info = { key_state_0, 0, key_state_0, 0, N_KEY, get_state_down_key_io },
- ok_key_info = { key_state_0, 0, key_state_0, 0, N_KEY, get_state_ok_key_io },
- ret_key_info = { key_state_0, 0, key_state_0, 0, N_KEY, get_state_ret_key_io },
- ams_key_info = { key_state_0, 0, key_state_0, 0, N_KEY, get_state_ams_key_io },
- wifi_key_info = { key_state_0, 0, key_state_0, 0, N_KEY, get_state_wifi_key_io },
- mr_key_info = { key_state_0, 0, key_state_0, 0, N_KEY, get_state_mr_key_io },
- mb_key_info = { key_state_0, 0, key_state_0, 0, N_KEY, get_state_mb_key_io },
- muvb_key_info = { key_state_0, 0, key_state_0, 0, N_KEY, get_state_muvb_key_io };
-
-
-
-/*
- * key_init() - 按键模块初始化
- *
- */
-void key_init(void)
-{
- gpio_Interrupt_init(UP_KEY_PINX, GPI_UP_PF, GPI_DISAB);
- gpio_Interrupt_init(DOWN_KEY_PINX, GPI_UP_PF, GPI_DISAB);
- gpio_Interrupt_init(OK_KEY_PINX, GPI_UP_PF, GPI_DISAB);
- gpio_Interrupt_init(RET_KEY_PINX, GPI_UP_PF, GPI_DISAB);
- gpio_Interrupt_init(AMS_KEY_PINX, GPI_UP_PF, GPI_DISAB);
- gpio_Interrupt_init(WIFI_KEY_PINX, GPI_UP_PF, GPI_DISAB);
- gpio_Interrupt_init(MR_KEY_PINX, GPI_UP_PF, GPI_DISAB);
- gpio_Interrupt_init(MB_KEY_PINX, GPI_UP_PF, GPI_DISAB);
- gpio_Interrupt_init(MUVB_KEY_PINX, GPI_UP_PF, GPI_DISAB);
-
-
- /*
- * 初始化定时器为10ms定时中断,用于按键检测的定时执行
- */
-
-
- return;
-}
-
-
-/*
- * key_read_base - 按键基础读取函数,
- * @key_info: 要检测按键的所需信息,必须在是全局变量区中存储的
- *
- * 这个函数返回 N_KEY,S_KEY,L_KEY三种情况
- */
-key_mean key_read_base(volatile key_infomation *key_info)
-{
- state_sign key_state_io;
- key_mean key_m = N_KEY;
-
- key_state_io = (*((*key_info).get_state_io))(); // 获取io状态
- switch((*key_info).state_base)
- {
- case key_state_0:
- if (key_state_io == VALID)
- {
- (*key_info).state_base = key_state_1; // 按键按下后首先进入消抖和按键确
- // 认状态
- }
- break;
- case key_state_1:
- if (key_state_io == VALID)
- {
- (*key_info).time_base = 0;
- (*key_info).state_base = key_state_2; // 按键如果仍然按下,则消抖完成,
- // 状态转换,此时返回无按键事件
- }
- else
- {
- (*key_info).state_base = key_state_0;
- }
- break;
- case key_state_2:
- if (key_state_io == INVALID)
- {
- key_m = S_KEY; // 此时按键释放说明为一次短操作
- (*key_info).state_base = key_state_0;
- }
- else if (++(*key_info).time_base > 100) // 继续按下,计时加10ms,即本函
- // 数调用周期
- {
- key_m = L_KEY; // 按下时间大于1s,返回 长按键
- (*key_info).state_base = key_state_3; // 转换为等待按键释放状态
- }
- break;
- case key_state_3:
- if (key_state_io == INVALID)
- {
- (*key_info).state_base = key_state_0; // 按键此时已释放,转换为初始状态
- }
- break;
- default:
- break;
- }
- return key_m;
-}
-
-/*
- * key_read - 按键读取函数
- * @key_info: 要检测的按键所需的信息,必须是在全局变量区中存储的
- *
- * 这个函数会返回N_KEY,S_KEY,D_KEY,L_KEY四情况
- */
-key_mean key_read(volatile key_infomation *key_info)
-{
- key_mean key_m = N_KEY,
- key_m_temp;
-
- key_m_temp = key_read_base(key_info);
- switch((*key_info).state)
- {
- case key_state_0:
- if (key_m_temp == S_KEY)
- {
- (*key_info).time = 0; // 第一次单击状态,仍然返回无键,到下个周期
- // 判断是否出现双击
- (*key_info).state = key_state_1;
- }
- else
- {
- key_m = key_m_temp; // 对于非单击,返回原事件
- }
- break;
- case key_state_1:
- if (key_m_temp == S_KEY) // 又一次单击,间隔 < 300ms
- {
- key_m = D_KEY;
- (*key_info).state = key_state_0;
- }
- else
- {
- if (++(*key_info).time > 30)
- {
- key_m = S_KEY; // 300ms内没有再出现单击事件,则返回上一次单
- // 击事件
- (*key_info).state = key_state_0;
- }
- }
- break;
- default:
- break;
- }
- return key_m;
-}
-
-
-/*
- * key_detect() - 检测按键
- *
- * 这个函数仅在N_KEY状态时记录按键信息,N_KEY是在应用程序获取按键信息的时候同时被设
- * 置的,这样做的目的是保证采集到的按键一定会被执行
- * 要求每隔10ms调用一次
- */
-void key_detect(void)
-{
- key_mean key_m;
-
- if ((key_m = key_read(&up_key_info)) != N_KEY)
- {
- up_key_info.key_m = key_m;
- }
- if ((key_m = key_read(&down_key_info)) != N_KEY)
- {
- down_key_info.key_m = key_m;
- }
- if ((key_m = key_read(&ok_key_info)) != N_KEY)
- {
- ok_key_info.key_m = key_m;
- }
- if ((key_m = key_read(&ret_key_info)) != N_KEY)
- {
- ret_key_info.key_m = key_m;
- }
- if ((key_m = key_read(&ams_key_info)) != N_KEY)
- {
- ams_key_info.key_m = key_m;
- }
- if ((key_m = key_read(&wifi_key_info)) != N_KEY)
- {
- wifi_key_info.key_m = key_m;
- }
- if ((key_m = key_read(&mr_key_info)) != N_KEY)
- {
- mr_key_info.key_m = key_m;
- }
- if ((key_m = key_read(&mb_key_info)) != N_KEY)
- {
- mb_key_info.key_m = key_m;
- }
- if ((key_m = key_read(&muvb_key_info)) != N_KEY)
- {
- muvb_key_info.key_m = key_m;
- }
- return;
-}
-
-
-/*
- * get_key_mean() - 得到指定的按键信息
- *
- * 这个函数中在取得信息后会将对应按键重新标记为N_KEY
- */
-key_mean get_key_mean(key_type key_t)
-{
- key_mean key_m;
-
- switch (key_t)
- {
- case UP_KEY:
- key_m = up_key_info.key_m;
- up_key_info.key_m = N_KEY;
- break;
- case DOWN_KEY:
- key_m = down_key_info.key_m;
- down_key_info.key_m = N_KEY;
- break;
- case OK_KEY:
- key_m = ok_key_info.key_m;
- ok_key_info.key_m = N_KEY;
- break;
- case RET_KEY:
- key_m = ret_key_info.key_m;
- ret_key_info.key_m = N_KEY;
- break;
- case AMS_KEY:
- key_m = ams_key_info.key_m;
- ams_key_info.key_m = N_KEY;
- break;
- case WIFI_KEY:
- key_m = wifi_key_info.key_m;
- wifi_key_info.key_m = N_KEY;
- break;
- case MR_KEY:
- key_m = mr_key_info.key_m;
- mr_key_info.key_m = N_KEY;
- break;
- case MB_KEY:
- key_m = mb_key_info.key_m;
- mb_key_info.key_m = N_KEY;
- break;
- case MUVB_KEY:
- key_m = muvb_key_info.key_m;
- muvb_key_info.key_m = N_KEY;
- break;
- default:
- break;
- }
- return key_m;
-}
-
-
-void clear_key_m(void)
-{
- down_key_info.key_m = N_KEY;
- up_key_info.key_m = N_KEY;
- ok_key_info.key_m = N_KEY;
- ret_key_info.key_m = N_KEY;
- ams_key_info.key_m = N_KEY;
- wifi_key_info.key_m = N_KEY;
- mr_key_info.key_m = N_KEY;
- mb_key_info.key_m = N_KEY;
- muvb_key_info.key_m = N_KEY;
-}
+/*
+ * key.c - 监测并采集按键的输入
+ *
+ * 共有四种输入,无键,单击,双击,长击。
+ * 每10ms需要采集一次io状态。
+ * 每增减一个按键,需要设置的有:
+ *
+ * key_type枚举类型中对应的枚举元素
+ *
+ * 对应的key_infomation变量
+ *
+ * key_init()函数中对应的初始化条目
+ * key_detect()函数中对应检测条目
+ * get_key_mean()函数中对应获取条目
+ */
+
+
+#include
+
+#include "include.h"
+
+#include "include/key.h"
+#include "include/config.h"
+
+
+/*
+ * key_state - 表示按键的状态
+ * key_state_0 初始状态,或者表示第一次单击状态
+ * key_state_1 消抖和确认状态,或表示第二次单击状态
+ * key_state_2 按键计时状态
+ * key_state_3 按键等待释放状态
+ */
+typedef enum key_state_
+{
+ key_state_0 = 0, key_state_1, key_state_2, key_state_3
+} key_state;
+
+/*
+ * IO状态符号定义
+ */
+typedef enum state_sign_
+{
+ INVALID = 0, VALID = 1
+} state_sign;
+
+
+/*
+ * key_infomation - 表示一个按键的信息
+ * state_base和time_base在key_read_base函数中使用的状态变量
+ * state和time在key_read函数中使用的状态变量
+ * key_m保存当前按键读取的结果
+ * get_state_io变量指向获取按键对应输入io状态的函数
+ */
+typedef struct key_infomation_
+{
+ key_state state_base;
+ uint8_t time_base;
+
+ key_state state;
+ uint8_t time;
+
+ key_mean key_m;
+
+ state_sign (*get_state_io)(void);
+} key_infomation;
+
+
+
+/*
+ * 下边这几个函数定义的是获取按键io状态的函数
+ */
+state_sign get_state_up_key_io(void)
+{ return !gpio_get(UP_KEY_PINX) ? VALID : INVALID; }
+
+state_sign get_state_down_key_io(void)
+{ return !gpio_get(DOWN_KEY_PINX) ? VALID : INVALID; }
+
+state_sign get_state_ok_key_io(void)
+{ return !gpio_get(OK_KEY_PINX) ? VALID : INVALID; }
+
+state_sign get_state_ret_key_io(void)
+{ return !gpio_get(RET_KEY_PINX) ? VALID : INVALID; }
+
+state_sign get_state_ams_key_io(void)
+{ return !gpio_get(AMS_KEY_PINX) ? VALID : INVALID; }
+
+state_sign get_state_wifi_key_io(void)
+{ return !gpio_get(WIFI_KEY_PINX) ? VALID : INVALID; }
+
+state_sign get_state_mr_key_io(void)
+{ return !gpio_get(MR_KEY_PINX) ? VALID : INVALID; }
+
+state_sign get_state_mb_key_io(void)
+{ return !gpio_get(MB_KEY_PINX) ? VALID : INVALID; }
+
+state_sign get_state_muvb_key_io(void)
+{ return !gpio_get(MUVB_KEY_PINX) ? VALID : INVALID; }
+
+
+// 定义按键变量并初始化
+static volatile key_infomation
+up_key_info = { key_state_0, 0, key_state_0, 0, N_KEY, get_state_up_key_io },
+down_key_info = { key_state_0, 0, key_state_0, 0, N_KEY, get_state_down_key_io },
+ok_key_info = { key_state_0, 0, key_state_0, 0, N_KEY, get_state_ok_key_io },
+ret_key_info = { key_state_0, 0, key_state_0, 0, N_KEY, get_state_ret_key_io },
+ams_key_info = { key_state_0, 0, key_state_0, 0, N_KEY, get_state_ams_key_io },
+wifi_key_info = { key_state_0, 0, key_state_0, 0, N_KEY, get_state_wifi_key_io },
+mr_key_info = { key_state_0, 0, key_state_0, 0, N_KEY, get_state_mr_key_io },
+mb_key_info = { key_state_0, 0, key_state_0, 0, N_KEY, get_state_mb_key_io },
+muvb_key_info = { key_state_0, 0, key_state_0, 0, N_KEY, get_state_muvb_key_io };
+
+
+
+/**
+ * key_init() - 按键模块初始化
+ *
+ */
+void key_init(void)
+{
+ gpio_Interrupt_init(UP_KEY_PINX, GPI_UP_PF, GPI_DISAB);
+ gpio_Interrupt_init(DOWN_KEY_PINX, GPI_UP_PF, GPI_DISAB);
+ gpio_Interrupt_init(OK_KEY_PINX, GPI_UP_PF, GPI_DISAB);
+ gpio_Interrupt_init(RET_KEY_PINX, GPI_UP_PF, GPI_DISAB);
+ gpio_Interrupt_init(AMS_KEY_PINX, GPI_UP_PF, GPI_DISAB);
+ gpio_Interrupt_init(WIFI_KEY_PINX, GPI_UP_PF, GPI_DISAB);
+ gpio_Interrupt_init(MR_KEY_PINX, GPI_UP_PF, GPI_DISAB);
+ gpio_Interrupt_init(MB_KEY_PINX, GPI_UP_PF, GPI_DISAB);
+ gpio_Interrupt_init(MUVB_KEY_PINX, GPI_UP_PF, GPI_DISAB);
+
+ return;
+}
+
+
+/**
+ * key_read_base - 按键基础读取函数,
+ * @key_info: 要检测按键的所需信息,必须在是全局变量区中存储的
+ *
+ * 这个函数返回 N_KEY,S_KEY,L_KEY三种情况
+ */
+key_mean key_read_base(volatile key_infomation *key_info)
+{
+ state_sign key_state_io;
+ key_mean key_m = N_KEY;
+
+ // 获取io状态
+ key_state_io = (*(key_info->get_state_io))();
+ switch(key_info->state_base)
+ {
+ case key_state_0:
+ if (key_state_io == VALID)
+ {
+ // 按键按下后首先进入消抖和按键确认状态
+ key_info->state_base = key_state_1;
+ }
+ break;
+ case key_state_1:
+ if (key_state_io == VALID)
+ {
+ // 按键如果仍然按下,则消抖完成
+ // 进行状态转换,并且返回无按键事件
+ key_info->time_base = 0;
+ key_info->state_base = key_state_2;
+ }
+ else
+ {
+ key_info->state_base = key_state_0;
+ }
+ break;
+ case key_state_2:
+ if (key_state_io == INVALID)
+ {
+ // 此时按键释放说明为一次短操作
+ key_m = S_KEY;
+ key_info->state_base = key_state_0;
+ }
+ // 继续按下,计时加10ms,即本函数调用周期
+ else if (++key_info->time_base > 100)
+ {
+ // 按下时间大于1s,返回长按键,并且转换为等待按键释放状态
+ key_m = L_KEY;
+ key_info->state_base = key_state_3;
+ }
+ break;
+ case key_state_3:
+ if (key_state_io == INVALID)
+ {
+ // 按键此时已释放,转换为初始状态
+ key_info->state_base = key_state_0;
+ }
+ break;
+ default:
+ break;
+ }
+ return key_m;
+}
+
+/**
+ * key_read - 按键读取函数
+ * @key_info: 要检测的按键所需的信息,必须是在全局变量区中存储的
+ *
+ * 这个函数会返回N_KEY,S_KEY,D_KEY,L_KEY四情况
+ */
+key_mean key_read(volatile key_infomation *key_info)
+{
+ key_mean key_m = N_KEY,
+ key_m_temp;
+
+ key_m_temp = key_read_base(key_info);
+ switch(key_info->state)
+ {
+ case key_state_0:
+ if (key_m_temp == S_KEY)
+ {
+ // 第一次单击状态,仍然返回无键,到下个周期判断是否出现双击
+ key_info->time = 0;
+ key_info->state = key_state_1;
+ }
+ else
+ {
+ // 对于非单击,返回原事件
+ key_m = key_m_temp;
+ }
+ break;
+ case key_state_1:
+ // 又一次单击,间隔 < 300ms
+ if (key_m_temp == S_KEY)
+ {
+ key_m = D_KEY;
+ key_info->state = key_state_0;
+ }
+ else
+ {
+ if (++key_info->time > 30)
+ {
+ // 300ms内没有再出现单击事件,则返回上一次单击事件
+ key_m = S_KEY;
+ key_info->state = key_state_0;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ return key_m;
+}
+
+
+/**
+ * key_detect() - 检测按键
+ *
+ * 这个函数仅在N_KEY状态时记录按键信息,N_KEY是在应用程序获取按键信息的时候同时
+ * 被设置的,这样做的目的是保证采集到的按键一定会被执行
+ * 要求每隔10ms调用一次
+ */
+void key_detect(void)
+{
+ key_mean key_m;
+
+ if ((key_m = key_read(&up_key_info)) != N_KEY)
+ {
+ up_key_info.key_m = key_m;
+ }
+ if ((key_m = key_read(&down_key_info)) != N_KEY)
+ {
+ down_key_info.key_m = key_m;
+ }
+ if ((key_m = key_read(&ok_key_info)) != N_KEY)
+ {
+ ok_key_info.key_m = key_m;
+ }
+ if ((key_m = key_read(&ret_key_info)) != N_KEY)
+ {
+ ret_key_info.key_m = key_m;
+ }
+ if ((key_m = key_read(&ams_key_info)) != N_KEY)
+ {
+ ams_key_info.key_m = key_m;
+ }
+ if ((key_m = key_read(&wifi_key_info)) != N_KEY)
+ {
+ wifi_key_info.key_m = key_m;
+ }
+ if ((key_m = key_read(&mr_key_info)) != N_KEY)
+ {
+ mr_key_info.key_m = key_m;
+ }
+ if ((key_m = key_read(&mb_key_info)) != N_KEY)
+ {
+ mb_key_info.key_m = key_m;
+ }
+ if ((key_m = key_read(&muvb_key_info)) != N_KEY)
+ {
+ muvb_key_info.key_m = key_m;
+ }
+ return;
+}
+
+
+/**
+ * get_key_mean() - 得到指定的按键信息
+ *
+ * 这个函数中在取得信息后会将对应按键重新标记为N_KEY
+ */
+key_mean get_key_mean(key_type key_t)
+{
+ key_mean key_m;
+
+ switch (key_t)
+ {
+ case UP_KEY:
+ key_m = up_key_info.key_m;
+ up_key_info.key_m = N_KEY;
+ break;
+ case DOWN_KEY:
+ key_m = down_key_info.key_m;
+ down_key_info.key_m = N_KEY;
+ break;
+ case OK_KEY:
+ key_m = ok_key_info.key_m;
+ ok_key_info.key_m = N_KEY;
+ break;
+ case RET_KEY:
+ key_m = ret_key_info.key_m;
+ ret_key_info.key_m = N_KEY;
+ break;
+ case AMS_KEY:
+ key_m = ams_key_info.key_m;
+ ams_key_info.key_m = N_KEY;
+ break;
+ case WIFI_KEY:
+ key_m = wifi_key_info.key_m;
+ wifi_key_info.key_m = N_KEY;
+ break;
+ case MR_KEY:
+ key_m = mr_key_info.key_m;
+ mr_key_info.key_m = N_KEY;
+ break;
+ case MB_KEY:
+ key_m = mb_key_info.key_m;
+ mb_key_info.key_m = N_KEY;
+ break;
+ case MUVB_KEY:
+ key_m = muvb_key_info.key_m;
+ muvb_key_info.key_m = N_KEY;
+ break;
+ default:
+ break;
+ }
+ return key_m;
+}
+
+
+void clear_key_m(void)
+{
+ down_key_info.key_m = N_KEY;
+ up_key_info.key_m = N_KEY;
+ ok_key_info.key_m = N_KEY;
+ ret_key_info.key_m = N_KEY;
+ ams_key_info.key_m = N_KEY;
+ wifi_key_info.key_m = N_KEY;
+ mr_key_info.key_m = N_KEY;
+ mb_key_info.key_m = N_KEY;
+ muvb_key_info.key_m = N_KEY;
+}
diff --git a/plan_manage_main/src/app/knob.c b/plan_manage_main/src/app/knob.c
index e804882..fee929e 100644
--- a/plan_manage_main/src/app/knob.c
+++ b/plan_manage_main/src/app/knob.c
@@ -1,95 +1,97 @@
-/*
- * knob.c - 提供旋钮输入的接口函数
- *
- * 使用的是一个数字旋钮,利用计数来采集输入
- */
-
-#include
-
-#include "include.h"
-
-
-#include "include/knob.h"
-#include "include/config.h"
-
-
-
-static volatile int32_t knob_val;
-
-
-
-
-/*
- * knob_init() - 为旋钮输入而执行的初始化
- *
- * 旋钮的检测初始化后默认是禁止的
- */
-void knob_init(void)
-{
- gpio_Interrupt_init(KNOB_A_PINX, GPI_UP_PF, GPI_INP_EITH);
- gpio_Interrupt_init(KNOB_B_PINX, GPI_UP_PF, GPI_DISAB);
- // gpio_Interrupt_init(KNOB_KEY_PINX, GPI_UP_PF, GPI_INP_EITH);
- disable_irq(PortD_irq_no);
-
-}
-
-
-/*
- * knob_enable() - 使能旋钮脉冲检测
- */
-void knob_enable(void)
-{
- enable_irq(PortD_irq_no);
- return;
-}
-
-/*
- * knob_disable() - 禁止旋钮脉冲检测
- */
-void knob_disable(void)
-{
- disable_irq(PortA_irq_no);
- return;
-}
-
-
-
-/*
- * knob_clear() - 清除旋钮值
- */
-void knob_clear(void)
-{
- knob_val = 0;
- return;
-}
-
-/*
- * get_knob_val() - 返回旋钮值
- */
-int32_t get_knob_val(void)
-{
- return knob_val;
-}
-
-
-/*
- * knob_detect() - 旋钮检测
- *
- * 这个函数需要在旋钮编码器的A相输出发生沿跳变时调用,即上下沿中断时
- */
-void knob_detect(void)
-{
- uint8_t knob_A, knob_B;
-
- knob_A = gpio_get(KNOB_A_PINX);
- knob_B = gpio_get(KNOB_B_PINX);
- if ((knob_A == 0 && knob_B == 1) || (knob_A == 1 && knob_B == 0))
- {
- knob_val++;
- }
- else // 即if ((knob_A == 0 && knob_B == 0) || (knob_A == 1 && knob_B == 1))
- {
- knob_val--;
- }
- return;
-}
+/*
+ * knob.c - 提供旋钮输入的接口函数
+ *
+ * 使用的是一个数字旋钮,利用计数来采集输入
+ */
+
+#include
+
+#include "include.h"
+#include "arm_cm0.h"
+#include "vectors.h"
+
+#include "include/config.h"
+#include "include/knob.h"
+
+
+
+static volatile int32_t knob_val;
+
+
+
+
+/*
+ * knob_init() - 为旋钮输入而执行的初始化
+ *
+ * 旋钮的检测初始化后默认是禁止的
+ */
+void knob_init(void)
+{
+ gpio_Interrupt_init(KNOB_A_PINX, GPI_UP_PF, GPI_INP_EITH);
+ gpio_Interrupt_init(KNOB_B_PINX, GPI_UP_PF, GPI_DISAB);
+ // gpio_Interrupt_init(KNOB_KEY_PINX, GPI_UP_PF, GPI_INP_EITH);
+ disable_irq(PortD_irq_no);
+
+}
+
+
+/*
+ * knob_enable() - 使能旋钮脉冲检测
+ */
+void knob_enable(void)
+{
+ enable_irq(PortD_irq_no);
+ return;
+}
+
+/*
+ * knob_disable() - 禁止旋钮脉冲检测
+ */
+void knob_disable(void)
+{
+ disable_irq(PortD_irq_no);
+ return;
+}
+
+
+
+/*
+ * knob_clear() - 清除旋钮值
+ */
+void knob_clear(void)
+{
+ knob_val = 0;
+ return;
+}
+
+/*
+ * get_knob_val() - 返回旋钮值
+ */
+int32_t get_knob_val(void)
+{
+ return knob_val;
+}
+
+
+/*
+ * knob_detect() - 旋钮检测
+ *
+ * 这个函数需要在旋钮编码器的A相输出发生沿跳变时调用,即上下沿中断时
+ */
+void knob_detect(void)
+{
+ uint8_t knob_A, knob_B;
+
+ knob_A = gpio_get(KNOB_A_PINX);
+ knob_B = gpio_get(KNOB_B_PINX);
+ if ((knob_A == 0 && knob_B == 1) || (knob_A == 1 && knob_B == 0))
+ {
+ knob_val++;
+ }
+ // 即if ((knob_A == 0 && knob_B == 0) || (knob_A == 1 && knob_B == 1))
+ else
+ {
+ knob_val--;
+ }
+ return;
+}
diff --git a/plan_manage_main/src/app/main.c b/plan_manage_main/src/app/main.c
index 71d4aaa..78da0f8 100644
--- a/plan_manage_main/src/app/main.c
+++ b/plan_manage_main/src/app/main.c
@@ -24,8 +24,10 @@ void main(void)
enter_critical();
pm_init();
exit_critical();
-
- st_init(0, COMPARE, 10); // 作为按键扫描函数的定时使用,在simulat_timer.c的底层中使用
+ /*
+ * 作为按键扫描函数的定时使用,在simulat_timer.c的底层中使用
+ */
+ st_init(0, COMPARE, 10);
st_init(1, COMPARE, 100);
#ifdef PM_DEBUG
diff --git a/plan_manage_main/src/app/orient.c b/plan_manage_main/src/app/orient.c
index 7bccdc1..619a603 100644
--- a/plan_manage_main/src/app/orient.c
+++ b/plan_manage_main/src/app/orient.c
@@ -1,120 +1,120 @@
-/*
- * orient.c - 鍏充簬鍏夌収鏂瑰悜鎺у埗鐨勬ā鍧
- *
- * 鎵鏈夊涓婏紝鎵鏈夊涓
- */
-
-
-#include "uart.h"
-
-#include "include/orient.h"
-#include "include/config.h"
-
-
-void orient_init(void)
-{
- uart_init(ORIENT_UARTX, 2400);
- gpio_init(RE_DE_PINX, 1, 1);
-
- orient_setmode(0, MODE_MANUL);
- orient_setmode(1, MODE_MANUL);
- return;
-}
-
-/*
- * orient_setspeed() - 璁剧疆鏂瑰悜鎺у埗鐨勯熷害浠ュ強瑙掑害
- *
- * @addr: 鍦板潃鐮
- * @ori: 鏂瑰悜
- * @spd: 琛ㄧず閫熷害锛岃寖鍥村湪0~100
- */
-void orient_setspeed(uint8_t addr, orient ori, uint8_t spd)
-{
- uint8_t cmd[7] = { 0xff, addr, 0x00, 0x00, 0x00, 0x00, 0x00 };
-
- switch (ori)
- {
- case ORIENT_UP:
- cmd[3] = 0x08;
- break;
- case ORIENT_DOWN:
- cmd[3] = 0x10;
- break;
- case ORIENT_LEFT:
- cmd[3] = 0x04;
- break;
- case ORIENT_RIGHT:
- cmd[3] = 0x02;
- default:
- break;
- }
-
- if (spd > 100)
- {
- spd = 100;
- }
- cmd[4] = 0x3f * spd / 100;
- cmd[6] = cmd[1] + cmd[2] + cmd[3] + cmd[4] + cmd[5];
-
- uart_sendN(ORIENT_UARTX, cmd, 7);
- return;
-}
-
-
-/*
- * orient_presetop() - 璁剧疆棰勭疆鐐
- *
- * @addr: 鍦板潃鐮
- * @op: 瀵归缃偣鐨勬搷浣
- * @npre: 棰勭疆鐐圭紪鍙
- */
-void orient_presetop(uint8_t addr, preset_op op, uint8_t npre)
-{
- uint8_t cmd[7] = { 0xff, addr, 0x00, 0x00, 0x00, npre, 0x00 };
-
- switch (op)
- {
- case PRESET_SET:
- cmd[3] = 0x03;
- break;
- case PRESET_CALL:
- cmd[3] = 0x07;
- break;
- case PRESET_CLEAR:
- cmd[3] = 0x05;
- break;
- default:
- break;
- }
-
- cmd[6] = cmd[1] + cmd[2] + cmd[3] + cmd[4] + cmd[5];
- uart_sendN(ORIENT_UARTX, cmd, 7);
- return;
-}
-
-/*
- * orient_setmode() - 璁剧疆浜戝彴妯″紡
- *
- * @addr: 鍦板潃鐮
- * @mod: 妯″紡鏍囧織
- */
-void orient_setmode(uint8_t addr, orient_mode mod)
-{
- uint8_t cmd[7] = { 0xff, addr, 0x00, 0x00, 0x00, 0x00, 0x00 };
-
- switch (mod)
- {
- case MODE_AUTO:
- cmd[2] = 0x90;
- break;
- case MODE_MANUL:
- cmd[2] = 0x00;
- break;
- default:
- break;
- }
- cmd[6] = cmd[1] + cmd[2] + cmd[3] + cmd[4] + cmd[5];
-
- uart_sendN(ORIENT_UARTX, cmd, 7);
- return;
-}
+/*
+ * orient.c - 鍏充簬鍏夌収鏂瑰悜鎺у埗鐨勬ā鍧
+ *
+ * 鎵鏈夊涓婏紝鎵鏈夊涓
+ */
+
+
+#include "uart.h"
+
+#include "include/orient.h"
+#include "include/config.h"
+
+
+void orient_init(void)
+{
+ uart_init(ORIENT_UARTX, 2400);
+ gpio_init(RE_DE_PINX, 1, 1);
+
+ orient_setmode(0, MODE_MANUL);
+ orient_setmode(1, MODE_MANUL);
+ return;
+}
+
+/*
+ * orient_setspeed() - 璁剧疆鏂瑰悜鎺у埗鐨勯熷害浠ュ強瑙掑害
+ *
+ * @addr: 鍦板潃鐮
+ * @ori: 鏂瑰悜
+ * @spd: 琛ㄧず閫熷害锛岃寖鍥村湪0~100
+ */
+void orient_setspeed(uint8_t addr, orient ori, uint8_t spd)
+{
+ uint8_t cmd[7] = { 0xff, addr, 0x00, 0x00, 0x00, 0x00, 0x00 };
+
+ switch (ori)
+ {
+ case ORIENT_UP:
+ cmd[3] = 0x08;
+ break;
+ case ORIENT_DOWN:
+ cmd[3] = 0x10;
+ break;
+ case ORIENT_LEFT:
+ cmd[3] = 0x04;
+ break;
+ case ORIENT_RIGHT:
+ cmd[3] = 0x02;
+ default:
+ break;
+ }
+
+ if (spd > 100)
+ {
+ spd = 100;
+ }
+ cmd[4] = (uint16_t)0x3f * spd / 100;
+ cmd[6] = cmd[1] + cmd[2] + cmd[3] + cmd[4] + cmd[5];
+
+ uart_sendN(ORIENT_UARTX, cmd, 7);
+ return;
+}
+
+
+/*
+ * orient_presetop() - 璁剧疆棰勭疆鐐
+ *
+ * @addr: 鍦板潃鐮
+ * @op: 瀵归缃偣鐨勬搷浣
+ * @npre: 棰勭疆鐐圭紪鍙
+ */
+void orient_presetop(uint8_t addr, preset_op op, uint8_t npre)
+{
+ uint8_t cmd[7] = { 0xff, addr, 0x00, 0x00, 0x00, npre, 0x00 };
+
+ switch (op)
+ {
+ case PRESET_SET:
+ cmd[3] = 0x03;
+ break;
+ case PRESET_CALL:
+ cmd[3] = 0x07;
+ break;
+ case PRESET_CLEAR:
+ cmd[3] = 0x05;
+ break;
+ default:
+ break;
+ }
+
+ cmd[6] = cmd[1] + cmd[2] + cmd[3] + cmd[4] + cmd[5];
+ uart_sendN(ORIENT_UARTX, cmd, 7);
+ return;
+}
+
+/*
+ * orient_setmode() - 璁剧疆浜戝彴妯″紡
+ *
+ * @addr: 鍦板潃鐮
+ * @mod: 妯″紡鏍囧織
+ */
+void orient_setmode(uint8_t addr, orient_mode mod)
+{
+ uint8_t cmd[7] = { 0xff, addr, 0x00, 0x00, 0x00, 0x00, 0x00 };
+
+ switch (mod)
+ {
+ case MODE_AUTO:
+ cmd[2] = 0x90;
+ break;
+ case MODE_MANUL:
+ cmd[2] = 0x00;
+ break;
+ default:
+ break;
+ }
+ cmd[6] = cmd[1] + cmd[2] + cmd[3] + cmd[4] + cmd[5];
+
+ uart_sendN(ORIENT_UARTX, cmd, 7);
+ return;
+}
diff --git a/plan_manage_main/src/app/plan_handle.c b/plan_manage_main/src/app/plan_handle.c
index 672c21e..c31a5d8 100644
--- a/plan_manage_main/src/app/plan_handle.c
+++ b/plan_manage_main/src/app/plan_handle.c
@@ -1,537 +1,714 @@
-/*
- * plan_handle.c - 计划处理模块
- *
- * 计划处理,指的是根据内存中的计划数据和时间数据得出输出数据,输出数据包括继电器信
- * 号、植物属性值。
- * 关于植物属性值,包括已完成计划周期次数,等。
- * 基本原则是,起始周期时间区间加上重复周期数可以得到一个区间集合,判断当前时间是否
- * 属于这个时间区间集合中的一个区间中的一个时间点。由此得到继电器信号,并在继电器信
- * 号被置为无效的时候将计划周期次数加一。
- * 需要解决的问题有,如何访问计划数据与时间数据,以及如何写入输出数据。
- * 计划数据在tft.c模块,属于静态数据,如果要访问的话,有两种方式,一是声明计划数据
- * 的类型并返回其整体地址,一个整体地址可以访问到所有的对象属性,不过需要知道这个地
- * 址上数据的分布情况,需要额外的数据。二是根据每个元素的名字通过查询得到其单独的值。
- */
-
-#include
-
-#include "gpio.h"
-
-#include "include/tft_plan_internal.h"
-
-#include "include/plan_handle.h"
-#include "include/tft.h"
-#include "include/config.h"
-#include "include/pm_flash.h"
-#include "include/orient.h"
-#include "include/key.h"
-
-typedef struct plan_output_
-{
- uint8_t is_reach;
- uint8_t note[10];
-} plan_output;
-
-typedef enum lg_state_
-{
- LIGHT = 1, NO_LIGHT = 0
-} lg_state;
-
-
-static void indata_to_outdata(plan_input *ind, plan_output *outd);
-static void plan_ctr_exe(uint8_t activity);
-static void plan_inpu_to_tft(void);
-static void plan_key_func(void);
-static void manul_key_func(void);
-static void manul_ctr(void);
-static void plan_ctr(void);
-
-static plan_output plan_out[PLAN_DATA_NUM] = { 0 };
-plan_input plan_in[PLAN_DATA_NUM] = { 0 };
-
-
-
-void plan_handle_init(void)
-{
- gpio_init(LGRED_PINX, 1, NO_LIGHT);
- gpio_init(LGBLUE_PINX, 1, NO_LIGHT);
- gpio_init(LGUVB_PINX, 1, NO_LIGHT);
- gpio_init(WATER_PINX, 1, 0);
-
- gpio_init(LG1_PINX, 1, 1);
- gpio_init(LG2_PINX, 1, 1);
- gpio_init(LG3_PINX, 1, 1);
- // 还有设置方向的初始化
-
- /*
- * 数据恢复,数据从从flash到plan_handle模块,再从plan_handle模块到tft模块
- */
- flash_read((uint8_t *)&plan_in, sizeof(plan_in));
- plan_inpu_to_tft();
-
- return;
-}
-
-
-
-static void indata_to_outdata(plan_input *ind, plan_output *outd)
-{
- calendar_info st = get_system_time();
- uint32_t sys_sec = calendar_to_sec(&st);
-
- ind->pd_t.year = START_YEAR;
- ind->pd_t.month = 1;
- ind->pd_t.mday = 1;
- ind->pd_t.sec = 0;
- uint32_t pd_sec = calendar_to_sec(&ind->pd_t);
-
- uint32_t ctr_bg_sec = calendar_to_sec(&ind->bg_t) + pd_sec * ind->cnt;
- uint32_t ctr_ed_sec = calendar_to_sec(&ind->ed_t) + pd_sec * ind->cnt;
-
- if (ctr_bg_sec < sys_sec && ctr_ed_sec > sys_sec)
- {
- outd->is_reach = 1;
- }
- else
- {
- if (outd->is_reach == 1)
- {
- ind->cnt++;
- }
- outd->is_reach = 0;
- }
-
- return;
-}
-
-
-static void plan_ctr_exe(uint8_t activity)
-{
- if (activity >= PLAN_DATA_NUM)
- {
- gpio_set(LGRED_PINX, NO_LIGHT);
- gpio_set(LGBLUE_PINX, NO_LIGHT);
- gpio_set(LGUVB_PINX, NO_LIGHT);
- gpio_set(WATER_PINX, NO_LIGHT);
- }
- else
- {
- orient_presetop(0, PRESET_CALL, activity + 1);
- orient_presetop(1, PRESET_CALL, activity + 1);
- gpio_set(LGRED_PINX, plan_in[activity].lg_r == 1 ? LIGHT : NO_LIGHT);
- gpio_set(LGBLUE_PINX, plan_in[activity].lg_b == 1 ? LIGHT : NO_LIGHT);
- gpio_set(LGUVB_PINX, plan_in[activity].lg_uvb == 1 ? LIGHT : NO_LIGHT);
- gpio_set(WATER_PINX, plan_in[activity].water == 1 ? LIGHT : NO_LIGHT);
- }
- return;
-}
-
-
-void plan_ctr(void)
-{
- uint8_t activity = PLAN_DATA_NUM;
-
- for (uint8_t i = 0; i < PLAN_DATA_NUM; i++)
- {
- indata_to_outdata(&plan_in[i], &plan_out[i]);
- if (plan_in[i].sw == 1)
- {
- if (plan_out[i].is_reach == 1)
- {
- activity = i;
- break;
- }
- }
- }
- plan_ctr_exe(activity);
- return;
-}
-
-
-void plan_handle(void)
-{
- if (gpio_get(AMS_KEY_PINX))
- {
- plan_ctr();
- }
- else
- {
- manul_ctr();
- }
- return;
-}
-
-void key_func(void)
-{
- if (gpio_get(AMS_KEY_PINX))
- {
- plan_key_func();
- }
- else
- {
- manul_key_func();
- }
- return;
-}
-
-
-void manul_ctr(void)
-{
- return;
-}
-
-/*
- * tft_to_plan_input() - 将tft显示的数据提取到计划处理的输入数据结构中
- * @objn: 提取的对象号,0~7
- *
- * 这个函数应该在tft输入有改变是被调用。
- */
-void tft_to_plan_input(uint8_t objn)
-{
- plan_in[objn].bg_t.year = *get_value_of_kvp("bg_y", objn);
- plan_in[objn].bg_t.month = *get_value_of_kvp("bg_mo", objn);
- plan_in[objn].bg_t.mday = *get_value_of_kvp("bg_d", objn);
- plan_in[objn].bg_t.hour = *get_value_of_kvp("bg_h", objn);
- plan_in[objn].bg_t.min = *get_value_of_kvp("bg_mi", objn);
- plan_in[objn].bg_t.sec = 0;
-
- /*
- * 结束时间在tft条目没有年、月、日,赋值为何开始时间相同
- */
- plan_in[objn].ed_t.year = plan_in[objn].bg_t.year;
- plan_in[objn].ed_t.month = plan_in[objn].bg_t.month;
- plan_in[objn].ed_t.mday = plan_in[objn].bg_t.mday;
- plan_in[objn].ed_t.hour = *get_value_of_kvp("ed_h", objn);
- plan_in[objn].ed_t.min = *get_value_of_kvp("ed_mi", objn);
- plan_in[objn].ed_t.sec = 0;
-
- plan_in[objn].pd_t.mday = *get_value_of_kvp("pd_d", objn);
- plan_in[objn].pd_t.hour = *get_value_of_kvp("pd_h", objn);
- plan_in[objn].pd_t.min = *get_value_of_kvp("pd_mi", objn);
-
- plan_in[objn].lg_r = *get_value_of_kvp("lg_r", objn);
- plan_in[objn].lg_b = *get_value_of_kvp("lg_b", objn);
- plan_in[objn].lg_uvb = *get_value_of_kvp("lg_uvb", objn);
- plan_in[objn].water = *get_value_of_kvp("water", objn);
-
- plan_in[objn].sw = *get_value_of_kvp("sw", objn);
- plan_in[objn].cnt = *get_value_of_kvp("cnt", objn);
-
- return;
-}
-
-
-/*
- * plan_inpu_to_tft() - 计划数据到tft
- *
- * 这个函数是为了在初始化时将从flash中恢复的计划数据重新装入tft
- */
-static void plan_inpu_to_tft(void)
-{
- for(uint8_t objn = 0; objn < 8; objn++)
- {
- *get_value_of_kvp("bg_y", objn) = plan_in[objn].bg_t.year;
- *get_value_of_kvp("bg_mo", objn) = plan_in[objn].bg_t.month;
- *get_value_of_kvp("bg_d", objn) = plan_in[objn].bg_t.mday;
- *get_value_of_kvp("bg_h", objn) = plan_in[objn].bg_t.hour;
- *get_value_of_kvp("bg_mi", objn) = plan_in[objn].bg_t.min;
-
- /*
- * 结束时间在tft条目没有年、月、日
- * *get_value_of_kvp("ed_y", objn) = plan_in[objn].ed_t.year;
- * *get_value_of_kvp("ed_mo", objn) = plan_in[objn].ed_t.month;
- * *get_value_of_kvp("ed_d", objn) = plan_in[objn].ed_t.mday;
- */
- *get_value_of_kvp("ed_h", objn) = plan_in[objn].ed_t.hour;
- *get_value_of_kvp("ed_mi", objn) = plan_in[objn].ed_t.min;
-
- *get_value_of_kvp("pd_d", objn) = plan_in[objn].pd_t.mday;
- *get_value_of_kvp("pd_h", objn) = plan_in[objn].pd_t.hour;
- *get_value_of_kvp("pd_mi", objn) = plan_in[objn].pd_t.min;
-
- *get_value_of_kvp("lg_r", objn) = plan_in[objn].lg_r;
- *get_value_of_kvp("lg_b", objn) = plan_in[objn].lg_b;
- *get_value_of_kvp("lg_uvb", objn) = plan_in[objn].lg_uvb;
- *get_value_of_kvp("water", objn) = plan_in[objn].water;
-
- *get_value_of_kvp("sw", objn) = plan_in[objn].sw;
- *get_value_of_kvp("cnt", objn) = plan_in[objn].cnt;
- }
- return;
-}
-
-
-static void plan_key_func(void)
-{
- /*
- * 按键功能注册部分
- */
- switch (get_key_mean(UP_KEY))
- {
- case N_KEY:
- //printf("无键\n");
- break;
- case S_KEY:
- printf("UP_KEY 单击\n");
- tft_left();
- break;
- case D_KEY:
- printf("UP_KEY 双击\n");
- tft_up();
- break;
- case L_KEY:
- printf("UP_KEY 长按\n");
- break;
- default:
- break;
- }
- switch (get_key_mean(DOWN_KEY))
- {
- case N_KEY:
- //printf("无键\n");
- break;
- case S_KEY:
- printf("DOWN_KEY 单击\n");
- tft_right();
- break;
- case D_KEY:
- printf("DOWN_KEY 双击\n");
- tft_down();
- break;
- case L_KEY:
- printf("DOWN_KEY 长按\n");
- break;
- default:
- break;
- }
- switch (get_key_mean(OK_KEY))
- {
- case N_KEY:
- //printf("无键\n");
- break;
- case S_KEY:
- printf("OK_KEY 单击\n");
- tft_ok();
- break;
- case D_KEY:
- printf("OK_KEY 双击\n");
- break;
- case L_KEY:
- printf("OK_KEY 长按\n");
- break;
- default:
- break;
- }
- switch (get_key_mean(RET_KEY))
- {
- case N_KEY:
- //printf("无键\n");
- break;
- case S_KEY:
- printf("RET_KEY 单击\n");
- tft_ret();
- break;
- case D_KEY:
- printf("RET_KEY 双击\n");
- break;
- case L_KEY:
- printf("RET_KEY 长按\n");
- break;
- default:
- break;
- }
- switch (get_key_mean(MR_KEY))
- {
- case N_KEY:
- //printf("无键\n");
- break;
- case S_KEY:
- printf("MR_KEY 单击\n");
- break;
- case D_KEY:
- printf("MR_KEY 双击\n");
- break;
- case L_KEY:
- printf("MR_KEY 长按\n");
- break;
- default:
- break;
- }
- switch (get_key_mean(MB_KEY))
- {
- case N_KEY:
- //printf("无键\n");
- break;
- case S_KEY:
- printf("MB_KEY 单击\n");
- break;
- case D_KEY:
- printf("MB_KEY 双击\n");
- break;
- case L_KEY:
- printf("MB_KEY 长按\n");
- break;
- default:
- break;
- }
- switch (get_key_mean(MUVB_KEY))
- {
- case N_KEY:
- //printf("无键\n");
- break;
- case S_KEY:
- printf("MUVB_KEY 单击\n");
- break;
- case D_KEY:
- printf("MUVB_KEY 双击\n");
- break;
- case L_KEY:
- printf("MUVB_KEY 长按\n");
- break;
- default:
- break;
- }
- return;
-}
-
-
-static void manul_key_func(void)
-{
- /*
- * 按键功能注册部分
- */
- static uint8_t mlgr, mlgb, mlguvb;
-
- switch (get_key_mean(UP_KEY))
- {
- case N_KEY:
- //printf("无键\n");
- break;
- case S_KEY:
- printf("UP_KEY 单击\n");
- orient_setspeed(0, ORIENT_LEFT, 100);
- break;
- case D_KEY:
- printf("UP_KEY 双击\n");
- orient_setspeed(0, ORIENT_RIGHT, 100);
- break;
- case L_KEY:
- printf("UP_KEY 长按\n");
- break;
- default:
- break;
- }
- switch (get_key_mean(DOWN_KEY))
- {
- case N_KEY:
- //printf("无键\n");
- break;
- case S_KEY:
- printf("DOWN_KEY 单击\n");
- orient_setspeed(1, ORIENT_LEFT, 100);
- break;
- case D_KEY:
- printf("DOWN_KEY 双击\n");
- orient_setspeed(1, ORIENT_RIGHT, 100);
- break;
- case L_KEY:
- printf("DOWN_KEY 长按\n");
- break;
- default:
- break;
- }
- switch (get_key_mean(OK_KEY))
- {
- case N_KEY:
- //printf("无键\n");
- break;
- case S_KEY:
- printf("OK_KEY 单击\n");
- break;
- case D_KEY:
- printf("OK_KEY 双击\n");
- break;
- case L_KEY:
- printf("OK_KEY 长按\n");
- break;
- default:
- break;
- }
- switch (get_key_mean(RET_KEY))
- {
- case N_KEY:
- //printf("无键\n");
- break;
- case S_KEY:
- printf("RET_KEY 单击\n");
- orient_setmode(0, MODE_MANUL);
- orient_setmode(1, MODE_MANUL);
- break;
- case D_KEY:
- printf("RET_KEY 双击\n");
- break;
- case L_KEY:
- printf("RET_KEY 长按\n");
- break;
- default:
- break;
- }
- switch (get_key_mean(MR_KEY))
- {
- case N_KEY:
- //printf("无键\n");
- break;
- case S_KEY:
- printf("MR_KEY 单击\n");
- mlgr = !mlgr;
- gpio_set(LGRED_PINX, mlgr == 1 ? LIGHT : NO_LIGHT);
- break;
- case D_KEY:
- printf("MR_KEY 双击\n");
- break;
- case L_KEY:
- printf("MR_KEY 长按\n");
- break;
- default:
- break;
- }
- switch (get_key_mean(MB_KEY))
- {
- case N_KEY:
- //printf("无键\n");
- break;
- case S_KEY:
- printf("MB_KEY 单击\n");
- mlgb = !mlgb;
- gpio_set(LGBLUE_PINX, mlgb == 1 ? LIGHT : NO_LIGHT);
- break;
- case D_KEY:
- printf("MB_KEY 双击\n");
- break;
- case L_KEY:
- printf("MB_KEY 长按\n");
- break;
- default:
- break;
- }
- switch (get_key_mean(MUVB_KEY))
- {
- case N_KEY:
- //printf("无键\n");
- break;
- case S_KEY:
- printf("MUVB_KEY 单击\n");
- mlguvb = !mlguvb;
- gpio_set(LGUVB_PINX, mlguvb == 1 ? LIGHT : NO_LIGHT);
- break;
- case D_KEY:
- printf("MUVB_KEY 双击\n");
- break;
- case L_KEY:
- printf("MUVB_KEY 长按\n");
- break;
- default:
- break;
- }
- return;
-}
+/*
+ * plan_handle.c - 计划处理模块
+ *
+ * 计划处理,指的是根据内存中的计划数据和时间数据得出输出数据,输出数据包括继电
+ * 器信号、植物属性值。
+ * 关于植物属性值,包括已完成计划周期次数,等。
+ * 基本原则是,起始周期时间区间加上重复周期数可以得到一个区间集合,判断当前时间
+ * 是否属于这个时间区间集合中的一个区间中的一个时间点。由此得到继电器信号,并在
+ * 继电器信号被置为无效的时候将计划周期次数加一。
+ * 需要解决的问题有,如何访问计划数据与时间数据,以及如何写入输出数据。
+ * 计划数据在tft.c模块,属于静态数据,如果要访问的话,有两种方式,一是声明计划
+ * 数据的类型并返回其整体地址,一个整体地址可以访问到所有的对象属性,不过需要知
+ * 道这个地址上数据的分布情况,需要额外的数据。二是根据每个元素的名字通过查询得
+ * 到其单独的值。
+ */
+
+#include
+
+#include "gpio.h"
+
+#include "include/tft_plan_internal.h"
+
+#include "include/plan_handle.h"
+#include "include/tft.h"
+#include "include/config.h"
+#include "include/pm_flash.h"
+#include "include/orient.h"
+#include "include/key.h"
+
+/*
+ * 计划输出数据类型定义
+ * is_reach表示是否到达计划执行时间,
+ * note是一个字符串,可以用来存储一些提示性字符
+ */
+typedef struct plan_output_
+{
+ uint8_t is_reach;
+ uint8_t note[10];
+} plan_output;
+
+typedef enum lg_state_
+{
+ LIGHT = 1, NO_LIGHT = 0
+} lg_state;
+
+
+/*
+ * 静态函数声明
+ */
+static void indata_to_outdata(plan_input *ind, plan_output *outd);
+static void plan_ctr_exe(uint8_t activity);
+static void plan_inpu_to_tft(void);
+static void plan_key_func(void);
+static void manul_key_func(void);
+static void manul_ctr(void);
+static void plan_ctr(void);
+
+/*
+ * 输出和输入变量定义,初始化全部为0
+ */
+static plan_output plan_out[OBJ_NUM] = { 0 };
+plan_input plan_in[OBJ_NUM] = { 0 };
+
+
+
+/**
+ * plan_handle_init() - 对计划处理模块进行初始化
+ *
+ * 主要包括IO初始化和计划数据的上电恢复工作
+ */
+void plan_handle_init(void)
+{
+ gpio_init(LGRED_PINX, 1, NO_LIGHT);
+ gpio_init(LGBLUE_PINX, 1, NO_LIGHT);
+ gpio_init(LGUVB_PINX, 1, NO_LIGHT);
+ gpio_init(WATER_PINX, 1, 0);
+
+ gpio_init(LG1_PINX, 1, 1);
+ gpio_init(LG2_PINX, 1, 1);
+ gpio_init(LG3_PINX, 1, 1);
+
+ /*
+ * 数据恢复,数据从从flash到plan_handle模块,再从plan_handle模块到tft模块
+ */
+ flash_read((uint8_t *)&plan_in, sizeof(plan_in));
+ plan_inpu_to_tft();
+
+ return;
+}
+
+
+
+/**
+ * indata_to_outdata() - 将一个植物输入的计划数据转换为对应的输出数据
+ * @ind: 计划输入数据的地址
+ * @outd: 转换后的值得地址
+ *
+ * 主要的功能是根据输入的数据得到是否到达计划执行时间,以及完成计划的次数
+ */
+static void indata_to_outdata(plan_input *ind, plan_output *outd)
+{
+ // 首先得到系统时间并转换为日历时间格式
+ calendar_info st = get_system_time();
+ uint32_t sys_sec = calendar_to_sec(&st);
+
+ /*
+ * 因为在周期时间输入的时候没有输入年、月、秒的地方,所以将其初始化为起始值
+ * 以方便计算周期时间
+ */
+ ind->pd_t.year = START_YEAR;
+ ind->pd_t.month = 1;
+ ind->pd_t.sec = 0;
+ uint32_t pd_sec = calendar_to_sec(&ind->pd_t);
+
+ /*
+ * 将第一次开始的时间加上周期时长乘以已完成次数,得到当前的开始时间;
+ * 结束时间的计算同开始时间。
+ * 由这两个时间可以得到当前执行计划的区间。
+ */
+ uint32_t ctr_bg_sec = calendar_to_sec(&ind->bg_t) + pd_sec * ind->cnt;
+ uint32_t ctr_ed_sec = calendar_to_sec(&ind->ed_t) + pd_sec * ind->cnt;
+
+ // 比较系统时间是否在执行计划的区间
+ if (ctr_bg_sec < sys_sec && ctr_ed_sec > sys_sec)
+ {
+ outd->is_reach = 1;
+ }
+ else
+ {
+ if (outd->is_reach == 1)
+ {
+ /*
+ * 如果没有在执行区间,并且上一次在执行区间的话,表明一次计划执行完
+ * 成,给计划完成次数加一。
+ */
+ ind->cnt++;
+ }
+ outd->is_reach = 0;
+ }
+
+ return;
+}
+
+
+/**
+ * plan_ctr_exe() - 计划控制的输出执行
+ * @activity: 表示执行哪一个计划活动,一个活动编号对应一个植物,当activity大于
+ * 植物的编号时,表示没有计划任务需要执行。
+ *
+ * 主要包括IO输出控制以及云台预置位控制
+ */
+static void plan_ctr_exe(uint8_t activity)
+{
+ /*
+ * isnt_first数组是为了标记每一个活动在一次计划区间内是不是第一次执行,主要
+ * 是因为不能频繁的多次调用云台的预置位
+ */
+ static uint8_t isnt_first[OBJ_NUM] = { 0 };
+ if (activity >= OBJ_NUM)
+ {
+ // activity大于植物的编号的话,代表没有计划任务需要执行
+ for (uint8_t i = 0; i < OBJ_NUM; i++)
+ {
+ isnt_first[i] = 0;
+ }
+ gpio_set(LGRED_PINX, NO_LIGHT);
+ gpio_set(LGBLUE_PINX, NO_LIGHT);
+ gpio_set(LGUVB_PINX, NO_LIGHT);
+ gpio_set(WATER_PINX, NO_LIGHT);
+ }
+ else
+ {
+ // 当activity对应于一个植物编号并且是第一次执行的时候,就执行计划
+ if (isnt_first[activity] == 0)
+ {
+ orient_presetop(0, PRESET_CALL, activity + 1);
+ orient_presetop(1, PRESET_CALL, activity + 1);
+ gpio_set(LGRED_PINX, plan_in[activity].lg_r == 1 ? LIGHT : NO_LIGHT);
+ gpio_set(LGBLUE_PINX, plan_in[activity].lg_b == 1 ? LIGHT : NO_LIGHT);
+ gpio_set(LGUVB_PINX, plan_in[activity].lg_uvb == 1 ? LIGHT : NO_LIGHT);
+ gpio_set(WATER_PINX, plan_in[activity].water == 1 ? LIGHT : NO_LIGHT);
+ isnt_first[activity] = 1;
+ }
+
+ }
+ return;
+}
+
+
+/**
+ * plan_ctr() - 计划控制
+ *
+ * 完成从计划数据到输出执行的功能。
+ */
+void plan_ctr(void)
+{
+ // 首先初始化活动不为任意一个植物编号
+ uint8_t activity = OBJ_NUM;
+
+ // 依次遍历每一个植物,得到需要执行的活动号,即对应的植物编号
+ for (uint8_t i = 0; i < OBJ_NUM; i++)
+ {
+ indata_to_outdata(&plan_in[i], &plan_out[i]);
+ if (plan_in[i].sw == 1)
+ {
+ if (plan_out[i].is_reach == 1)
+ {
+ activity = i;
+ break;
+ }
+ }
+ }
+ plan_ctr_exe(activity);
+ return;
+}
+
+
+/**
+ * plan_handle() - 计划处理
+ *
+ * 完成计划模式的数据处理及输出功能,手动模式下因为简单不需要复杂的数据运算,
+ * 此处处理为空,直接在其输入部分执行
+ */
+void plan_handle(void)
+{
+ if (gpio_get(AMS_KEY_PINX))
+ {
+ plan_ctr();
+ }
+ else
+ {
+ manul_ctr();
+ }
+ return;
+}
+
+/**
+ * key_func() - 完成手动和自动模式下的按键输入功能
+ *
+ * 在自动模式下只是数据的输入,在手动模式在包括数据的输入和对应的输出执行部分。
+ */
+void key_func(void)
+{
+ if (gpio_get(AMS_KEY_PINX))
+ {
+ plan_key_func();
+ }
+ else
+ {
+ manul_key_func();
+ }
+ return;
+}
+
+
+/**
+ * manul_ctr() - 手动控制部分
+ *
+ * 为空函数
+ */
+void manul_ctr(void)
+{
+ return;
+}
+
+/**
+ * tft_to_plan_input() - 将tft显示的数据提取到计划处理的输入数据结构中
+ * @objn: 提取的对象号,0~7
+ *
+ * 这个函数应该在tft输入有改变是被调用。
+ */
+void tft_to_plan_input(uint8_t objn)
+{
+ plan_in[objn].bg_t.year = *get_value_of_kvp("bg_y", objn);
+ plan_in[objn].bg_t.month = *get_value_of_kvp("bg_mo", objn);
+ plan_in[objn].bg_t.mday = *get_value_of_kvp("bg_d", objn);
+ plan_in[objn].bg_t.hour = *get_value_of_kvp("bg_h", objn);
+ plan_in[objn].bg_t.min = *get_value_of_kvp("bg_mi", objn);
+ plan_in[objn].bg_t.sec = 0;
+
+ /*
+ * 结束时间在tft条目没有年、月、日,赋值为和开始时间相同
+ */
+ plan_in[objn].ed_t.year = plan_in[objn].bg_t.year;
+ plan_in[objn].ed_t.month = plan_in[objn].bg_t.month;
+ plan_in[objn].ed_t.mday = plan_in[objn].bg_t.mday;
+ plan_in[objn].ed_t.hour = *get_value_of_kvp("ed_h", objn);
+ plan_in[objn].ed_t.min = *get_value_of_kvp("ed_mi", objn);
+ plan_in[objn].ed_t.sec = 0;
+
+ plan_in[objn].pd_t.mday = *get_value_of_kvp("pd_d", objn);
+ plan_in[objn].pd_t.hour = *get_value_of_kvp("pd_h", objn);
+ plan_in[objn].pd_t.min = *get_value_of_kvp("pd_mi", objn);
+
+ plan_in[objn].lg_r = *get_value_of_kvp("lg_r", objn);
+ plan_in[objn].lg_b = *get_value_of_kvp("lg_b", objn);
+ plan_in[objn].lg_uvb = *get_value_of_kvp("lg_uvb", objn);
+ plan_in[objn].water = *get_value_of_kvp("water", objn);
+
+ plan_in[objn].sw = *get_value_of_kvp("sw", objn);
+ plan_in[objn].cnt = *get_value_of_kvp("cnt", objn);
+
+ return;
+}
+
+
+/*
+ * plan_inpu_to_tft() - 计划数据到tft
+ *
+ * 这个函数是为了在初始化时将从flash中恢复的计划数据重新装入tft
+ */
+static void plan_inpu_to_tft(void)
+{
+ for(uint8_t objn = 0; objn < 8; objn++)
+ {
+ *get_value_of_kvp("bg_y", objn) = plan_in[objn].bg_t.year;
+ *get_value_of_kvp("bg_mo", objn) = plan_in[objn].bg_t.month;
+ *get_value_of_kvp("bg_d", objn) = plan_in[objn].bg_t.mday;
+ *get_value_of_kvp("bg_h", objn) = plan_in[objn].bg_t.hour;
+ *get_value_of_kvp("bg_mi", objn) = plan_in[objn].bg_t.min;
+
+ /*
+ * 结束时间在tft条目没有年、月、日
+ * *get_value_of_kvp("ed_y", objn) = plan_in[objn].ed_t.year;
+ * *get_value_of_kvp("ed_mo", objn) = plan_in[objn].ed_t.month;
+ * *get_value_of_kvp("ed_d", objn) = plan_in[objn].ed_t.mday;
+ */
+ *get_value_of_kvp("ed_h", objn) = plan_in[objn].ed_t.hour;
+ *get_value_of_kvp("ed_mi", objn) = plan_in[objn].ed_t.min;
+
+ *get_value_of_kvp("pd_d", objn) = plan_in[objn].pd_t.mday;
+ *get_value_of_kvp("pd_h", objn) = plan_in[objn].pd_t.hour;
+ *get_value_of_kvp("pd_mi", objn) = plan_in[objn].pd_t.min;
+
+ *get_value_of_kvp("lg_r", objn) = plan_in[objn].lg_r;
+ *get_value_of_kvp("lg_b", objn) = plan_in[objn].lg_b;
+ *get_value_of_kvp("lg_uvb", objn) = plan_in[objn].lg_uvb;
+ *get_value_of_kvp("water", objn) = plan_in[objn].water;
+
+ *get_value_of_kvp("sw", objn) = plan_in[objn].sw;
+ *get_value_of_kvp("cnt", objn) = plan_in[objn].cnt;
+ }
+ return;
+}
+
+
+/**
+ * plan_key_func() - 计划模式下按键的处理
+ *
+ * 主要和tft显示屏关
+ */
+static void plan_key_func(void)
+{
+ /*
+ * 按键功能注册部分
+ */
+ switch (get_key_mean(UP_KEY))
+ {
+ case N_KEY:
+ //printf("无键\n");
+ break;
+ case S_KEY:
+#ifdef PM_DEBUG
+ printf("UP_KEY 单击\n");
+#endif /* PM_DEBUG */
+ tft_left();
+ break;
+ case D_KEY:
+#ifdef PM_DEBUG
+ printf("UP_KEY 双击\n");
+#endif /* PM_DEBUG */
+ tft_up();
+ break;
+ case L_KEY:
+#ifdef PM_DEBUG
+ printf("UP_KEY 长按\n");
+#endif /* PM_DEBUG */
+ break;
+ default:
+ break;
+ }
+ switch (get_key_mean(DOWN_KEY))
+ {
+ case N_KEY:
+ //printf("无键\n");
+ break;
+ case S_KEY:
+#ifdef PM_DEBUG
+ printf("DOWN_KEY 单击\n");
+#endif /* PM_DEBUG */
+ tft_right();
+ break;
+ case D_KEY:
+#ifdef PM_DEBUG
+ printf("DOWN_KEY 双击\n");
+#endif /* PM_DEBUG */
+ tft_down();
+ break;
+ case L_KEY:
+#ifdef PM_DEBUG
+ printf("DOWN_KEY 长按\n");
+#endif /* PM_DEBUG */
+ break;
+ default:
+ break;
+ }
+ switch (get_key_mean(OK_KEY))
+ {
+ case N_KEY:
+ //printf("无键\n");
+ break;
+ case S_KEY:
+#ifdef PM_DEBUG
+ printf("OK_KEY 单击\n");
+ tft_ok();
+#endif /* PM_DEBUG */
+ break;
+ case D_KEY:
+#ifdef PM_DEBUG
+ printf("OK_KEY 双击\n");
+#endif /* PM_DEBUG */
+ break;
+ case L_KEY:
+#ifdef PM_DEBUG
+ printf("OK_KEY 长按\n");
+#endif /* PM_DEBUG */
+ break;
+ default:
+ break;
+ }
+ switch (get_key_mean(RET_KEY))
+ {
+ case N_KEY:
+ //printf("无键\n");
+ break;
+ case S_KEY:
+#ifdef PM_DEBUG
+ printf("RET_KEY 单击\n");
+#endif /* PM_DEBUG */
+ tft_ret();
+ break;
+ case D_KEY:
+#ifdef PM_DEBUG
+ printf("RET_KEY 双击\n");
+#endif /* PM_DEBUG */
+ break;
+ case L_KEY:
+#ifdef PM_DEBUG
+ printf("RET_KEY 长按\n");
+#endif /* PM_DEBUG */
+ break;
+ default:
+ break;
+ }
+ switch (get_key_mean(MR_KEY))
+ {
+ case N_KEY:
+ //printf("无键\n");
+ break;
+ case S_KEY:
+#ifdef PM_DEBUG
+ printf("MR_KEY 单击\n");
+#endif /* PM_DEBUG */
+ break;
+ case D_KEY:
+#ifdef PM_DEBUG
+ printf("MR_KEY 双击\n");
+#endif /* PM_DEBUG */
+ break;
+ case L_KEY:
+#ifdef PM_DEBUG
+ printf("MR_KEY 长按\n");
+#endif /* PM_DEBUG */
+ break;
+ default:
+ break;
+ }
+ switch (get_key_mean(MB_KEY))
+ {
+ case N_KEY:
+ //printf("无键\n");
+ break;
+ case S_KEY:
+#ifdef PM_DEBUG
+ printf("MB_KEY 单击\n");
+#endif /* PM_DEBUG */
+ break;
+ case D_KEY:
+#ifdef PM_DEBUG
+ printf("MB_KEY 双击\n");
+#endif /* PM_DEBUG */
+ break;
+ case L_KEY:
+#ifdef PM_DEBUG
+ printf("MB_KEY 长按\n");
+#endif /* PM_DEBUG */
+ break;
+ default:
+ break;
+ }
+ switch (get_key_mean(MUVB_KEY))
+ {
+ case N_KEY:
+ //printf("无键\n");
+ break;
+ case S_KEY:
+#ifdef PM_DEBUG
+ printf("MUVB_KEY 单击\n");
+#endif /* PM_DEBUG */
+ break;
+ case D_KEY:
+#ifdef PM_DEBUG
+ printf("MUVB_KEY 双击\n");
+#endif /* PM_DEBUG */
+ break;
+ case L_KEY:
+#ifdef PM_DEBUG
+ printf("MUVB_KEY 长按\n");
+#endif /* PM_DEBUG */
+ break;
+ default:
+ break;
+ }
+ return;
+}
+
+
+/**
+ * manul_key_func() - 手动模式下的按键功能
+ *
+ * 包括了按键的输入和对应的输出执行部分
+ */
+static void manul_key_func(void)
+{
+ /*
+ * 按键功能注册部分
+ */
+ static uint8_t mlgr, mlgb, mlguvb;
+
+ switch (get_key_mean(UP_KEY))
+ {
+ case N_KEY:
+ //printf("无键\n");
+ break;
+ case S_KEY:
+#ifdef PM_DEBUG
+ printf("UP_KEY 单击\n");
+#endif /* PM_DEBUG */
+ orient_setspeed(0, ORIENT_LEFT, 100);
+ break;
+ case D_KEY:
+#ifdef PM_DEBUG
+ printf("UP_KEY 双击\n");
+#endif /* PM_DEBUG */
+ orient_setspeed(0, ORIENT_RIGHT, 100);
+ break;
+ case L_KEY:
+#ifdef PM_DEBUG
+ printf("UP_KEY 长按\n");
+#endif /* PM_DEBUG */
+ break;
+ default:
+ break;
+ }
+ switch (get_key_mean(DOWN_KEY))
+ {
+ case N_KEY:
+ //printf("无键\n");
+ break;
+ case S_KEY:
+#ifdef PM_DEBUG
+ printf("DOWN_KEY 单击\n");
+#endif /* PM_DEBUG */
+ orient_setspeed(1, ORIENT_LEFT, 100);
+ break;
+ case D_KEY:
+#ifdef PM_DEBUG
+ printf("DOWN_KEY 双击\n");
+#endif /* PM_DEBUG */
+ orient_setspeed(1, ORIENT_RIGHT, 100);
+ break;
+ case L_KEY:
+#ifdef PM_DEBUG
+ printf("DOWN_KEY 长按\n");
+#endif /* PM_DEBUG */
+ break;
+ default:
+ break;
+ }
+ switch (get_key_mean(OK_KEY))
+ {
+ case N_KEY:
+ //printf("无键\n");
+ break;
+ case S_KEY:
+#ifdef PM_DEBUG
+ printf("OK_KEY 单击\n");
+#endif /* PM_DEBUG */
+ break;
+ case D_KEY:
+#ifdef PM_DEBUG
+ printf("OK_KEY 双击\n");
+#endif /* PM_DEBUG */
+ break;
+ case L_KEY:
+#ifdef PM_DEBUG
+ printf("OK_KEY 长按\n");
+#endif /* PM_DEBUG */
+ break;
+ default:
+ break;
+ }
+ switch (get_key_mean(RET_KEY))
+ {
+ case N_KEY:
+ //printf("无键\n");
+ break;
+ case S_KEY:
+#ifdef PM_DEBUG
+ printf("RET_KEY 单击\n");
+#endif /* PM_DEBUG */
+ orient_setmode(0, MODE_MANUL);
+ orient_setmode(1, MODE_MANUL);
+ break;
+ case D_KEY:
+#ifdef PM_DEBUG
+ printf("RET_KEY 双击\n");
+#endif /* PM_DEBUG */
+ break;
+ case L_KEY:
+#ifdef PM_DEBUG
+ printf("RET_KEY 长按\n");
+#endif /* PM_DEBUG */
+ break;
+ default:
+ break;
+ }
+ switch (get_key_mean(MR_KEY))
+ {
+ case N_KEY:
+ //printf("无键\n");
+ break;
+ case S_KEY:
+#ifdef PM_DEBUG
+ printf("MR_KEY 单击\n");
+#endif /* PM_DEBUG */
+ mlgr = !mlgr;
+ gpio_set(LGRED_PINX, mlgr == 1 ? LIGHT : NO_LIGHT);
+ break;
+ case D_KEY:
+#ifdef PM_DEBUG
+ printf("MR_KEY 双击\n");
+#endif /* PM_DEBUG */
+ break;
+ case L_KEY:
+#ifdef PM_DEBUG
+ printf("MR_KEY 长按\n");
+#endif /* PM_DEBUG */
+ break;
+ default:
+ break;
+ }
+ switch (get_key_mean(MB_KEY))
+ {
+ case N_KEY:
+ //printf("无键\n");
+ break;
+ case S_KEY:
+#ifdef PM_DEBUG
+ printf("MB_KEY 单击\n");
+#endif /* PM_DEBUG */
+ mlgb = !mlgb;
+ gpio_set(LGBLUE_PINX, mlgb == 1 ? LIGHT : NO_LIGHT);
+ break;
+ case D_KEY:
+#ifdef PM_DEBUG
+ printf("MB_KEY 双击\n");
+#endif /* PM_DEBUG */
+ break;
+ case L_KEY:
+#ifdef PM_DEBUG
+ printf("MB_KEY 长按\n");
+#endif /* PM_DEBUG */
+ break;
+ default:
+ break;
+ }
+ switch (get_key_mean(MUVB_KEY))
+ {
+ case N_KEY:
+ //printf("无键\n");
+ break;
+ case S_KEY:
+#ifdef PM_DEBUG
+ printf("MUVB_KEY 单击\n");
+#endif /* PM_DEBUG */
+ mlguvb = !mlguvb;
+ gpio_set(LGUVB_PINX, mlguvb == 1 ? LIGHT : NO_LIGHT);
+ break;
+ case D_KEY:
+#ifdef PM_DEBUG
+ printf("MUVB_KEY 双击\n");
+#endif /* PM_DEBUG */
+ break;
+ case L_KEY:
+#ifdef PM_DEBUG
+ printf("MUVB_KEY 长按\n");
+#endif /* PM_DEBUG */
+ break;
+ default:
+ break;
+ }
+ return;
+}
diff --git a/plan_manage_main/src/app/pm_flash.c b/plan_manage_main/src/app/pm_flash.c
index f5e53c8..08f9352 100644
--- a/plan_manage_main/src/app/pm_flash.c
+++ b/plan_manage_main/src/app/pm_flash.c
@@ -1,164 +1,171 @@
-/*
- * pm_flash.c - flash读写模块
- */
-
-#include "SSD_FTFx.h"
-
-#include "pm_flash_cfg.h"
-
-#define USED_SECTOR_NUM 0x01U
-
-
-FLASH_SSD_CONFIG flashSSDConfig =
-{
- FTFx_REG_BASE, /* FTFx control register base */
- PFLASH_BLOCK_BASE, /* base address of PFlash block */
- PBLOCK_SIZE, /* size of PFlash block */
- DEFLASH_BLOCK_BASE, /* base address of DFlash block */
- 0x0U, /* size of DFlash block */
- EERAM_BLOCK_BASE, /* base address of EERAM block */
- 0x0U, /* size of EEE block */
- DEBUGENABLE, /* background debug mode enable bit */
- NULL_CALLBACK /* pointer to callback function */
-};
-
-#define LAUNCH_CMD_SIZE 0x80U
-
-pFLASHCOMMANDSEQUENCE g_FlashLaunchCommand = (pFLASHCOMMANDSEQUENCE)0xFFFFFFFF;
-
-uint16_t __ram_func[LAUNCH_CMD_SIZE/2]; /* array to copy __Launch_Command func to RAM */
-
-void pm_flash_init(void)
-{
- uint32_t ret;
-
- g_FlashLaunchCommand =
- (pFLASHCOMMANDSEQUENCE)RelocateFunction((uint32_t)__ram_func ,
- LAUNCH_CMD_SIZE ,(uint32_t)FlashCommandSequence);
- ret = FlashInit(&flashSSDConfig);
- if (FTFx_OK != ret)
- {
- ErrorTrap(ret);
- }
- return;
-}
-
-/*
- * flash_write() - 将数据写入flash
- * @saddr: 要写入的数据的起始地址
- * @size: 写入数据的字节数,字节数必须要以4对齐!!!
- *
- * 这个函数的执行过程包括擦除和写入,默认的写入范围为flash的最后一个扇区,大小为
- * 1KB,如果要改变大小,改参数就可以了,注意不要覆盖了code,具体可看map文件。
- * 擦除是一次性擦除全部选择的扇区范围,所以在写入的时候要注意保存先前写入的数据
- * flash读取函数的起始地址等于flash写入函数的写入起始地址
- */
-void flash_write(uint8_t *saddr, uint16_t nbyte)
-{
- uint32_t ret;
- uint32_t dest;
- uint32_t size;
- uint16_t number;
- uint32_t temp;
-
- /*
- * 擦除扇区
- */
- dest = flashSSDConfig.PFlashBlockBase + BYTE2WORD(flashSSDConfig.PFlashBlockSize
- - USED_SECTOR_NUM * FTFx_PSECTOR_SIZE);
- while ((dest + BYTE2WORD(FTFx_PSECTOR_SIZE)) <= (flashSSDConfig.PFlashBlockBase
- + BYTE2WORD(flashSSDConfig.PFlashBlockSize)))
- {
- size = FTFx_PSECTOR_SIZE;
- ret = FlashEraseSector(&flashSSDConfig, dest, size, g_FlashLaunchCommand);
- if (FTFx_OK != ret)
- {
- ErrorTrap(ret);
- }
-
- /* 检验 */
- number = FTFx_PSECTOR_SIZE / PRD1SEC_ALIGN_SIZE;
- for(uint8_t i = 0x0U; i < 0x2U; i++)
- {
- ret = FlashVerifySection(&flashSSDConfig, dest, number, i, g_FlashLaunchCommand);
- if (FTFx_OK != ret)
- {
- ErrorTrap(ret);
- }
- }
- dest += BYTE2WORD(size);
- }
-
- /*
- * 写入数据
- */
- dest = flashSSDConfig.PFlashBlockBase + BYTE2WORD(flashSSDConfig.PFlashBlockSize
- - (uint32_t)(USED_SECTOR_NUM * FTFx_PSECTOR_SIZE));
-
- if ((dest + BYTE2WORD(size)) <= (flashSSDConfig.PFlashBlockBase
- + BYTE2WORD(flashSSDConfig.PFlashBlockSize)))
- {
- ret = FlashProgram(&flashSSDConfig, dest, nbyte, \
- saddr, g_FlashLaunchCommand);
- if (FTFx_OK != ret)
- {
- ErrorTrap(ret);
- }
-
- /* 校验和检验 */
- uint32_t sum = temp = 0x0U;
- for (uint16_t i = 0x0U; i < nbyte; i++)
- {
- temp += saddr[i];
- }
- ret = FlashCheckSum(&flashSSDConfig, dest, nbyte, &sum);
- if ((FTFx_OK != ret) || (temp != sum))
- {
- ErrorTrap(ret);
- }
-
- /* 正确测试 */
- uint32_t FailAddr;
- for (uint8_t i = 0x1U; i < 0x3U; i ++)
- {
- ret = FlashProgramCheck(&flashSSDConfig, dest, nbyte, saddr, \
- &FailAddr, i, g_FlashLaunchCommand);
- if (FTFx_OK != ret)
- {
- ErrorTrap(ret);
- }
- }
- }
- return;
-}
-
-/*
- * flash_read() - 读取flash中写入的数据
- * @daddr: 读取数据要保存的地址
- * @nbyte: 要读取的字节数
- *
- * flash读取函数的起始地址等于flash写入函数的写入起始地址
- */
-void flash_read(uint8_t *daddr, uint16_t nbyte)
-{
- uint8_t *saddr = (uint8_t *)(flashSSDConfig.PFlashBlockBase + BYTE2WORD(flashSSDConfig.PFlashBlockSize
- - (uint32_t)(USED_SECTOR_NUM * FTFx_PSECTOR_SIZE)));
-
- for (uint16_t i = 0; i < nbyte; i++)
- {
- daddr[i] = saddr[i];
- }
- return;
-}
-
-/*
- * ErrorTrap() - flash操作错误处理
- */
-void ErrorTrap(uint32_t ret)
-{
- while (1)
- {
- printf("flash操作错误,返回码为 %d\n", ret);
- }
- return;
-}
+/*
+ * pm_flash.c - flash读写模块
+ */
+
+#include "SSD_FTFx.h"
+
+#include "pm_flash_cfg.h"
+
+#define USED_SECTOR_NUM 0x01U
+
+
+FLASH_SSD_CONFIG flashSSDConfig =
+{
+ FTFx_REG_BASE, /* FTFx control register base */
+ PFLASH_BLOCK_BASE, /* base address of PFlash block */
+ PBLOCK_SIZE, /* size of PFlash block */
+ DEFLASH_BLOCK_BASE, /* base address of DFlash block */
+ 0x0U, /* size of DFlash block */
+ EERAM_BLOCK_BASE, /* base address of EERAM block */
+ 0x0U, /* size of EEE block */
+ DEBUGENABLE, /* background debug mode enable bit */
+ NULL_CALLBACK /* pointer to callback function */
+};
+
+#define LAUNCH_CMD_SIZE 0x80U
+
+pFLASHCOMMANDSEQUENCE g_FlashLaunchCommand = (pFLASHCOMMANDSEQUENCE)0xFFFFFFFF;
+
+/* array to copy __Launch_Command func to RAM */
+uint16_t __ram_func[LAUNCH_CMD_SIZE/2];
+
+void pm_flash_init(void)
+{
+ uint32_t ret;
+
+ g_FlashLaunchCommand =
+ (pFLASHCOMMANDSEQUENCE)RelocateFunction((uint32_t)__ram_func ,
+ LAUNCH_CMD_SIZE ,(uint32_t)FlashCommandSequence);
+ ret = FlashInit(&flashSSDConfig);
+ if (FTFx_OK != ret)
+ {
+ ErrorTrap(ret);
+ }
+ return;
+}
+
+/*
+ * flash_write() - 将数据写入flash
+ * @saddr: 要写入的数据的起始地址
+ * @size: 写入数据的字节数,字节数必须要以4对齐!!!
+ *
+ * 这个函数的执行过程包括擦除和写入,默认的写入范围为flash的最后一个扇区,大小为
+ * 1KB,如果要改变大小,改参数就可以了,注意不要覆盖了code,具体可看map文件。
+ * 擦除是一次性擦除全部选择的扇区范围,所以在写入的时候要注意保存先前写入的数据
+ * flash读取函数的起始地址等于flash写入函数的写入起始地址
+ */
+void flash_write(uint8_t *saddr, uint16_t nbyte)
+{
+ uint32_t ret;
+ uint32_t dest;
+ uint32_t size;
+ uint16_t number;
+ uint32_t temp;
+
+ /*
+ * 擦除扇区
+ */
+ dest = flashSSDConfig.PFlashBlockBase + BYTE2WORD(
+ flashSSDConfig.PFlashBlockSize
+ - USED_SECTOR_NUM * FTFx_PSECTOR_SIZE);
+ while ((dest + BYTE2WORD(FTFx_PSECTOR_SIZE)) <=
+ (flashSSDConfig.PFlashBlockBase
+ + BYTE2WORD(flashSSDConfig.PFlashBlockSize)))
+ {
+ size = FTFx_PSECTOR_SIZE;
+ ret = FlashEraseSector(&flashSSDConfig, dest, size,
+ g_FlashLaunchCommand);
+ if (FTFx_OK != ret)
+ {
+ ErrorTrap(ret);
+ }
+
+ /* 检验 */
+ number = FTFx_PSECTOR_SIZE / PRD1SEC_ALIGN_SIZE;
+ for(uint8_t i = 0x0U; i < 0x2U; i++)
+ {
+ ret = FlashVerifySection(&flashSSDConfig, dest, number, i,
+ g_FlashLaunchCommand);
+ if (FTFx_OK != ret)
+ {
+ ErrorTrap(ret);
+ }
+ }
+ dest += BYTE2WORD(size);
+ }
+
+ /*
+ * 写入数据
+ */
+ dest = flashSSDConfig.PFlashBlockBase + BYTE2WORD(
+ flashSSDConfig.PFlashBlockSize
+ - (uint32_t)(USED_SECTOR_NUM * FTFx_PSECTOR_SIZE));
+
+ if ((dest + BYTE2WORD(size)) <= (flashSSDConfig.PFlashBlockBase
+ + BYTE2WORD(flashSSDConfig.PFlashBlockSize)))
+ {
+ ret = FlashProgram(&flashSSDConfig, dest, nbyte, \
+ saddr, g_FlashLaunchCommand);
+ if (FTFx_OK != ret)
+ {
+ ErrorTrap(ret);
+ }
+
+ /* 校验和检验 */
+ uint32_t sum = temp = 0x0U;
+ for (uint16_t i = 0x0U; i < nbyte; i++)
+ {
+ temp += saddr[i];
+ }
+ ret = FlashCheckSum(&flashSSDConfig, dest, nbyte, &sum);
+ if ((FTFx_OK != ret) || (temp != sum))
+ {
+ ErrorTrap(ret);
+ }
+
+ /* 正确测试 */
+ uint32_t FailAddr;
+ for (uint8_t i = 0x1U; i < 0x3U; i ++)
+ {
+ ret = FlashProgramCheck(&flashSSDConfig, dest, nbyte, saddr, \
+ &FailAddr, i, g_FlashLaunchCommand);
+ if (FTFx_OK != ret)
+ {
+ ErrorTrap(ret);
+ }
+ }
+ }
+ return;
+}
+
+/*
+ * flash_read() - 读取flash中写入的数据
+ * @daddr: 读取数据要保存的地址
+ * @nbyte: 要读取的字节数
+ *
+ * flash读取函数的起始地址等于flash写入函数的写入起始地址
+ */
+void flash_read(uint8_t *daddr, uint16_t nbyte)
+{
+ uint8_t *saddr = (uint8_t *)(flashSSDConfig.PFlashBlockBase
+ + BYTE2WORD(flashSSDConfig.PFlashBlockSize
+ - (uint32_t)(USED_SECTOR_NUM * FTFx_PSECTOR_SIZE)));
+
+ for (uint16_t i = 0; i < nbyte; i++)
+ {
+ daddr[i] = saddr[i];
+ }
+ return;
+}
+
+/*
+ * ErrorTrap() - flash操作错误处理
+ */
+void ErrorTrap(uint32_t ret)
+{
+ while (1)
+ {
+ printf("flash操作错误,返回码为 %d\n", ret);
+ }
+ return;
+}
diff --git a/plan_manage_main/src/app/pm_time.c b/plan_manage_main/src/app/pm_time.c
index 619a71d..67a5aee 100644
--- a/plan_manage_main/src/app/pm_time.c
+++ b/plan_manage_main/src/app/pm_time.c
@@ -1,326 +1,394 @@
-/*
- * pm_time.c - 鏃堕棿澶勭悊
- */
-
-#include "gpio.h"
-
-#include "include/pm_time.h"
-#include "include/config.h"
-
-
-
-static calendar_info system_time;
-
-#define DAY_IN_YEAR(nyear) (is_leapyear(nyear) ? 366 : 365)
-
-static const uint8_t day_leap[] = {
- 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
-};
-
-static const uint8_t day_noleap[] = {
- 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
-};
-
-
-
-static void ds1302_byte_write(uint8_t data);
-static uint8_t ds1302_byte_read(void);
-static uint8_t ds1302_single_read(uint8_t addr);
-static uint8_t ds1302_single_read(uint8_t addr);
-static int16_t ymd_to_wday(int16_t year, int16_t month, int16_t mday);
-
-
-
-
-
-
-uint8_t is_leapyear(uint16_t year)
-{
- return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
-}
-
-uint8_t get_month_days(uint16_t year, uint8_t month)
-{
- switch (month)
- {
- case 4:
- case 6:
- case 9:
- case 11:
- return 30;
- case 2:
- if (is_leapyear(year))
- return 29;
- else
- return 28;
- default:
- return 31;
- }
-}
-
-static void ds1302_byte_write(uint8_t data)
-{
- gpio_init(DS1302_IO_PINX, 1, 0);
- for (uint8_t mask = 0x01; mask != 0; mask <<= 1)
- {
- gpio_set(DS1302_CLK_PINX, 0);
- if (data & mask)
- {
- gpio_set(DS1302_IO_PINX, 1);
- }
- else
- {
- gpio_set(DS1302_IO_PINX, 0);
- }
- // tdc,200ns,鏁版嵁寤虹珛鏃堕棿,tcl,1000ns,sclk浣庣數骞充繚鎸佹椂闂
- for (uint8_t i = 0; i < 50; i++);
- gpio_set(DS1302_CLK_PINX, 1);
- // tcdh,280ns,鏁版嵁閲囬泦鏃堕棿,tch,1000ns,sclk楂樼數骞充繚鎸佹椂闂
- for (uint8_t i = 0; i < 50; i++);
- }
- return;
-}
-
-static uint8_t ds1302_byte_read(void)
-{
- uint8_t data = 0;
-
- //gpio_init(DS1302_IO_PINX, 0, 1);
- gpio_Interrupt_init(DS1302_IO_PINX, GPI_UP_PF, GPI_DISAB);
- gpio_set(DS1302_CLK_PINX, 1);
- // tccz,280ns,sclk鍒伴珮闃绘
- for (uint8_t i = 0; i < 50; i++);
- for (uint8_t mask = 0x01; mask != 0; mask <<= 1)
- {
- gpio_set(DS1302_CLK_PINX, 0); // 浜х敓涓嬮檷娌
- // tcdd,800ns,鏁版嵁杈撳嚭寤惰繜
- for (uint8_t i = 0; i < 50; i++);
- for (uint8_t i = 0; i < 50; i++);
- if (gpio_get(DS1302_IO_PINX))
- {
- data |= mask;
- }
- gpio_set(DS1302_CLK_PINX, 1);
- // tccz,280ns,sclk鍒伴珮闃绘
- for (uint8_t i = 0; i < 50; i++);
- }
- return data;
-}
-
-
-
-
-static uint8_t ds1302_single_read(uint8_t addr)
-{
- uint8_t cmd = 0,
- data = 0;
-
- cmd = (1 << 7) | (addr << 1) | 1;
- /*
- * 鍒濆鍖朿e鍜宑lk鐘舵
- */
- gpio_set(DS1302_CE_PINX, 0);
- for (uint8_t i = 0; i < 50; i++);
- gpio_set(DS1302_CLK_PINX, 0);
- for (uint8_t i = 0; i < 50; i++);
-
- gpio_set(DS1302_CE_PINX, 1);
- // tcc,ce鍒版椂閽熷缓绔嬫椂闂达紝4us
- for (uint8_t i = 0; i < 200; i++);
- ds1302_byte_write(cmd);
- data = ds1302_byte_read();
- gpio_set(DS1302_CE_PINX, 0);
- // tcdz,ce鍒伴珮闃绘佹椂闂达紝280ns
- for (uint8_t i = 0; i < 20; i++);
- return data;
-}
-
-void ds1302_single_write(uint8_t addr, uint8_t data)
-{
- uint8_t cmd = 0;
-
- cmd = (1 << 7) | (addr << 1);
- /*
- * 鍒濆鍖朿e鍜宑lk鐘舵
- */
- gpio_set(DS1302_CE_PINX, 0);
- for (uint8_t i = 0; i < 50; i++);
- gpio_set(DS1302_CLK_PINX, 0);
- for (uint8_t i = 0; i < 50; i++);
-
- gpio_set(DS1302_CE_PINX, 1);
- // tcc,ce鍒版椂閽熷缓绔嬫椂闂达紝4us
- for (uint8_t i = 0; i < 200; i++);
- ds1302_byte_write(cmd);
- ds1302_byte_write(data);
- gpio_set(DS1302_CE_PINX, 0);
- return;
-}
-
-void ds1302_set_time(calendar_info *cal)
-{
- ds1302_single_write(7, 0x00);
- ds1302_single_write(0, cal->sec % 10 + (cal->sec / 10 << 4));
- ds1302_single_write(1, cal->min % 10 + (cal->min / 10 << 4));
- ds1302_single_write(2, cal->hour % 10 + (cal->hour / 10 << 4));
- ds1302_single_write(3, cal->mday % 10 + (cal->mday / 10 << 4));
- ds1302_single_write(4, cal->month % 10 + (cal->month / 10 << 4));
- ds1302_single_write(5, cal->wday);
- ds1302_single_write(6, (cal->year - 2000) % 10 + ((cal->year - 2000) / 10 << 4));
- return;
-}
-
-void ds1302_read_time(calendar_info *cal)
-{
- uint8_t rval;
-
- rval = ds1302_single_read(0);
- cal->sec = (rval & 0x0f) + ((rval & 0x70) >> 4) * 10;
- rval = ds1302_single_read(1);
- cal->min = (rval & 0x0f) + ((rval & 0x70) >> 4) * 10;
- rval = ds1302_single_read(2);
- cal->hour = (rval & 0x0f) + ((rval & 0x30) >> 4) * 10;
- rval = ds1302_single_read(3);
- cal->mday = (rval & 0x0f) + ((rval & 0x30) >> 4) * 10;
- rval = ds1302_single_read(4);
- cal->month = (rval & 0x0f) + ((rval & 0x10) >> 4) * 10;
- rval = ds1302_single_read(5);
- cal->wday = rval & 0x07;
- rval = ds1302_single_read(6);
- cal->year = (rval & 0x0f) + ((rval & 0xf0) >> 4) * 10 + 2000;
-
- return;
-}
-
-void ds1302_init(void)
-{
- //gpio_Interrupt_init(DS1302_CE_PINX, GPO, GPI_DISAB);
- //gpio_Interrupt_init(DS1302_CLK_PINX, GPO, GPI_DISAB);
- gpio_init(DS1302_CE_PINX, 1, 0);
- gpio_init(DS1302_CLK_PINX, 1, 0);
- gpio_Interrupt_init(DS1302_IO_PINX, GPI_UP_PF, GPI_DISAB);
- ds1302_single_write(7, 0x00);
- if ((ds1302_single_read(0) & 0x80) == 1)
- {
- calendar_info sys_cal = { 0, 1, 2, 3, 4, 2012, 0, 1 };
- ds1302_set_time(&sys_cal);
- }
- return;
-}
-
-
-
-/*
- * 杩欎釜鍑芥暟闇瑕佹寜鎵闇鐨勬椂闂寸簿搴︽潵瀹氭椂璋冪敤
- */
-void maintain_system_time(void)
-{
- enter_critical();
- ds1302_read_time(&system_time);
- exit_critical();
- return;
-}
-
-calendar_info get_system_time(void)
-{
- return system_time;
-}
-
-
-
-/*************************************************************/
-
-
-uint32_t calendar_to_sec(calendar_info *cal)
-{
- uint32_t sec = cal->sec;
- uint32_t year = cal->year;
- uint32_t month = cal->month;
-
- if (year < START_YEAR || year > (START_YEAR + 135))
- return 0;
-
- sec += (uint32_t)cal->min * 60;
- sec += (uint32_t)cal->hour * 3600;
- sec += (uint32_t)(cal->mday - 1) * SEC_IN_DAY;
- if (is_leapyear(year))
- {
- while (month > 1)
- {
- sec += (uint32_t)day_leap[--month] * SEC_IN_DAY;
- }
- }
- else
- {
- while (month > 1)
- {
- sec += (uint32_t)day_noleap[--month] * SEC_IN_DAY;
- }
- }
- while (year > START_YEAR)
- {
- sec += (uint32_t)DAY_IN_YEAR(--year) * SEC_IN_DAY;
- }
- return sec;
-}
-
-calendar_info sec_to_calendar(uint32_t sec)
-{
- calendar_info cal;
- uint32_t day, left;
-
- cal.year = START_YEAR;
- cal.month = 1;
- cal.mday = 1;
- cal.yday = 1;
- cal.wday = ymd_to_wday(START_YEAR, 1, 1);
-
- day = sec / SEC_IN_DAY;
- left = sec % SEC_IN_DAY;
-
- cal.wday = (day + cal.wday) % 7;
-
- cal.hour = left / 3600;
- cal.min = left / 60 % 60;
- cal.sec = left % 60;
-
- while (day >= DAY_IN_YEAR(cal.year))
- {
- day -= DAY_IN_YEAR(cal.year++);
- }
- cal.yday += day;
-
- if (is_leapyear(cal.year))
- {
- while (day >= day_leap[cal.month])
- {
- day -= day_leap[cal.month++];
- }
- }
- else
- {
- while (day >= day_noleap[cal.month])
- {
- day -= day_noleap[cal.month++];
- }
- }
- cal.mday += day;
-
- return cal;
-}
-
-
-static int16_t ymd_to_wday(int16_t year, int16_t month, int16_t mday)
-{
- if (is_leapyear(year))
- {
- for (uint8_t i = 1; i < month; i++)
- mday += day_leap[i];
- }
- else
- {
- for (uint8_t i = 1; i < month; i++)
- mday += day_noleap[i];
- }
- return (year + year / 4 - year / 100 + year / 400 + mday) % 7;
-}
+/*
+ * pm_time.c - 鏃堕棿澶勭悊
+ */
+
+#include "gpio.h"
+
+#include "include/pm_time.h"
+#include "include/config.h"
+
+
+// 琚淮鎶ょ殑绯荤粺鏃堕棿
+static calendar_info system_time;
+
+#define DAY_IN_YEAR(nyear) (is_leapyear(nyear) ? 366 : 365)
+
+static const uint8_t day_leap[] = {
+ 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
+};
+
+static const uint8_t day_noleap[] = {
+ 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
+};
+
+
+
+/*
+ * 闈欐佸嚱鏁板0鏄
+ */
+static void ds1302_byte_write(uint8_t data);
+static uint8_t ds1302_byte_read(void);
+static uint8_t ds1302_single_read(uint8_t addr);
+void ds1302_single_write(uint8_t addr, uint8_t data);
+static int16_t ymd_to_wday(int16_t year, int16_t month, int16_t mday);
+
+
+/**
+ * ds1302_init() - ds1302鐨勫垵濮嬪寲
+ *
+ * 鍖呮嫭io鐨勫垵濮嬪寲浠ュ強褰揹s1302鎺夌數鏃跺鍏舵椂闂村艰缃垵濮嬪
+ */
+void ds1302_init(void)
+{
+ //gpio_Interrupt_init(DS1302_CE_PINX, GPO, GPI_DISAB);
+ //gpio_Interrupt_init(DS1302_CLK_PINX, GPO, GPI_DISAB);
+ gpio_init(DS1302_CE_PINX, 1, 0);
+ gpio_init(DS1302_CLK_PINX, 1, 0);
+ gpio_Interrupt_init(DS1302_IO_PINX, GPI_UP_PF, GPI_DISAB);
+
+ // 浣胯兘鍐
+ ds1302_single_write(7, 0x00);
+ // 褰揹s1302鎺夌數鏃惰缃椂闂村垵濮嬪
+ if ((ds1302_single_read(0) & 0x80) == 1)
+ {
+ calendar_info sys_cal = { 0, 1, 2, 3, 4, 2012, 0, 1 };
+ ds1302_set_time(&sys_cal);
+ }
+ return;
+}
+
+
+/**
+ * is_leapyear() - 鍒ゆ柇鏄惁涓洪棸骞
+ * @year: 瑕佸垽鏂殑骞翠唤
+ *
+ * 鏄棸骞磋繑鍥1锛屼笉鏄棸骞磋繑鍥0
+ */
+uint8_t is_leapyear(uint16_t year)
+{
+ return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
+}
+
+/**
+ * get_month_days() - 寰楀埌缁欏畾骞翠唤鍜屾湀浠芥椂瀵瑰簲鏈堜唤鐨勫ぉ鏁
+ * @year: 缁欏畾骞翠唤
+ * @month: 缁欏畾鏈堜唤
+ *
+ * 杩斿洖鍊间负瀵瑰簲鐨勬湀浠界殑澶╂暟
+ */
+uint8_t get_month_days(uint16_t year, uint8_t month)
+{
+ switch (month)
+ {
+ case 4:
+ case 6:
+ case 9:
+ case 11:
+ return 30;
+ case 2:
+ if (is_leapyear(year))
+ return 29;
+ else
+ return 28;
+ default:
+ return 31;
+ }
+}
+
+/**
+ * ds1302_byte_write() - 鍚慸s1302鍐欏叆涓涓瓧鑺
+ * @data: 瑕佸啓鍏ョ殑瀛楄妭
+ */
+static void ds1302_byte_write(uint8_t data)
+{
+ gpio_init(DS1302_IO_PINX, 1, 0);
+ for (uint8_t mask = 0x01; mask != 0; mask <<= 1)
+ {
+ gpio_set(DS1302_CLK_PINX, 0);
+ if (data & mask)
+ {
+ gpio_set(DS1302_IO_PINX, 1);
+ }
+ else
+ {
+ gpio_set(DS1302_IO_PINX, 0);
+ }
+ // tdc,200ns,鏁版嵁寤虹珛鏃堕棿,tcl,1000ns,sclk浣庣數骞充繚鎸佹椂闂
+ for (uint8_t i = 0; i < 50; i++);
+ gpio_set(DS1302_CLK_PINX, 1);
+ // tcdh,280ns,鏁版嵁閲囬泦鏃堕棿,tch,1000ns,sclk楂樼數骞充繚鎸佹椂闂
+ for (uint8_t i = 0; i < 50; i++);
+ }
+ return;
+}
+
+/**
+ * ds1302_byte_read() - 浠巇s1302璇诲彇涓涓瓧鑺
+ *
+ * 杩斿洖璇诲彇鍒扮殑瀛楄妭
+ */
+static uint8_t ds1302_byte_read(void)
+{
+ uint8_t data = 0;
+
+ //gpio_init(DS1302_IO_PINX, 0, 1);
+ gpio_Interrupt_init(DS1302_IO_PINX, GPI_UP_PF, GPI_DISAB);
+ gpio_set(DS1302_CLK_PINX, 1);
+ // tccz,280ns,sclk鍒伴珮闃绘
+ for (uint8_t i = 0; i < 50; i++);
+ for (uint8_t mask = 0x01; mask != 0; mask <<= 1)
+ {
+ gpio_set(DS1302_CLK_PINX, 0); // 浜х敓涓嬮檷娌
+ // tcdd,800ns,鏁版嵁杈撳嚭寤惰繜
+ for (uint8_t i = 0; i < 50; i++);
+ for (uint8_t i = 0; i < 50; i++);
+ if (gpio_get(DS1302_IO_PINX))
+ {
+ data |= mask;
+ }
+ gpio_set(DS1302_CLK_PINX, 1);
+ // tccz,280ns,sclk鍒伴珮闃绘
+ for (uint8_t i = 0; i < 50; i++);
+ }
+ return data;
+}
+
+
+
+/**
+ * ds1302_single_read() - ds1302鍦ㄥ崟瀛楄妭妯″紡涓嬭鍙栦竴涓湴鍧涓婄殑鏁版嵁
+ * @addr: 瑕佽鍙栫殑鍦板潃
+ *
+ * 杩斿洖璇诲彇鐨勫埌鐨勫瓧鑺傚
+ */
+static uint8_t ds1302_single_read(uint8_t addr)
+{
+ uint8_t cmd = 0,
+ data = 0;
+
+ cmd = (1 << 7) | (addr << 1) | 1;
+ /*
+ * 鍒濆鍖朿e鍜宑lk鐘舵
+ */
+ gpio_set(DS1302_CE_PINX, 0);
+ for (uint8_t i = 0; i < 50; i++);
+ gpio_set(DS1302_CLK_PINX, 0);
+ for (uint8_t i = 0; i < 50; i++);
+
+ gpio_set(DS1302_CE_PINX, 1);
+ // tcc,ce鍒版椂閽熷缓绔嬫椂闂达紝4us
+ for (uint8_t i = 0; i < 200; i++);
+ ds1302_byte_write(cmd);
+ data = ds1302_byte_read();
+ gpio_set(DS1302_CE_PINX, 0);
+ // tcdz,ce鍒伴珮闃绘佹椂闂达紝280ns
+ for (uint8_t i = 0; i < 20; i++);
+ return data;
+}
+
+/**
+ * ds1302_single_write() - 鍦ㄥ崟瀛楄妭妯″紡涓嬪悜ds1302鐨勪竴涓湴鍧涓婂啓鍏ヤ竴涓瓧鑺傜殑鏁版嵁
+ * @addr: 瑕佸啓鍏ユ暟鎹殑鍦板潃
+ * @data: 瑕佸啓鍏ョ殑鏁版嵁
+ */
+void ds1302_single_write(uint8_t addr, uint8_t data)
+{
+ uint8_t cmd = 0;
+
+ cmd = (1 << 7) | (addr << 1);
+ /*
+ * 鍒濆鍖朿e鍜宑lk鐘舵
+ */
+ gpio_set(DS1302_CE_PINX, 0);
+ for (uint8_t i = 0; i < 50; i++);
+ gpio_set(DS1302_CLK_PINX, 0);
+ for (uint8_t i = 0; i < 50; i++);
+
+ gpio_set(DS1302_CE_PINX, 1);
+ // tcc,ce鍒版椂閽熷缓绔嬫椂闂达紝4us
+ for (uint8_t i = 0; i < 200; i++);
+ ds1302_byte_write(cmd);
+ ds1302_byte_write(data);
+ gpio_set(DS1302_CE_PINX, 0);
+ return;
+}
+
+/**
+ * ds1302_set_time() - 鍚慸s1302涓啓鍏ユ椂闂
+ * @cal: 瑕佸啓鍏ョ殑鏃堕棿鍊煎湴鍧
+ */
+void ds1302_set_time(calendar_info *cal)
+{
+ ds1302_single_write(7, 0x00);
+ ds1302_single_write(0, cal->sec % 10 + (cal->sec / 10 << 4));
+ ds1302_single_write(1, cal->min % 10 + (cal->min / 10 << 4));
+ ds1302_single_write(2, cal->hour % 10 + (cal->hour / 10 << 4));
+ ds1302_single_write(3, cal->mday % 10 + (cal->mday / 10 << 4));
+ ds1302_single_write(4, cal->month % 10 + (cal->month / 10 << 4));
+ ds1302_single_write(5, cal->wday);
+ ds1302_single_write(6, (cal->year - 2000) % 10 + ((cal->year - 2000) / 10 << 4));
+ return;
+}
+
+/**
+ * ds1302_read_time() - 浠巇s1302涓鍙栨椂闂
+ * @cal: 璇诲彇鐨勬椂闂村艰瀛樻斁鐨勫湴鍧
+ */
+void ds1302_read_time(calendar_info *cal)
+{
+ uint8_t rval;
+
+ rval = ds1302_single_read(0);
+ cal->sec = (rval & 0x0f) + ((rval & 0x70) >> 4) * 10;
+ rval = ds1302_single_read(1);
+ cal->min = (rval & 0x0f) + ((rval & 0x70) >> 4) * 10;
+ rval = ds1302_single_read(2);
+ cal->hour = (rval & 0x0f) + ((rval & 0x30) >> 4) * 10;
+ rval = ds1302_single_read(3);
+ cal->mday = (rval & 0x0f) + ((rval & 0x30) >> 4) * 10;
+ rval = ds1302_single_read(4);
+ cal->month = (rval & 0x0f) + ((rval & 0x10) >> 4) * 10;
+ rval = ds1302_single_read(5);
+ cal->wday = rval & 0x07;
+ rval = ds1302_single_read(6);
+ cal->year = (rval & 0x0f) + ((rval & 0xf0) >> 4) * 10 + 2000;
+
+ return;
+}
+
+/**
+ * maintain_system_time() - 璁剧疆绯荤粺鏃堕棿鍙橀噺
+ *
+ * 杩欎釜鍑芥暟闇瑕佹寜鎵闇鐨勬椂闂寸簿搴︽潵瀹氭椂璋冪敤
+ */
+void maintain_system_time(void)
+{
+ enter_critical();
+ ds1302_read_time(&system_time);
+ exit_critical();
+ return;
+}
+
+/**
+ * get_system_time() - 杩斿洖绯荤粺鏃堕棿
+ */
+calendar_info get_system_time(void)
+{
+ return system_time;
+}
+
+
+
+
+/**
+ * calendar_to_sec() - 鍒嗚В鏃堕棿鍒版棩鍘嗘椂闂寸殑杞崲
+ * @cal: 琚浆鎹㈢殑鍒嗚В鏃堕棿
+ *
+ * 杩斿洖鐨勬槸鏃ュ巻鏃堕棿锛屽嵆浠庢煇涓涓椂闂寸偣鍒板綋鍓嶈浆鎹㈡椂闂存墍缁忚繃鐨勭鏁
+ */
+uint32_t calendar_to_sec(calendar_info *cal)
+{
+ uint32_t sec = cal->sec;
+ uint32_t year = cal->year;
+ uint32_t month = cal->month;
+
+ if (year < START_YEAR || year > (START_YEAR + 135))
+ return 0;
+
+ sec += (uint32_t)cal->min * 60;
+ sec += (uint32_t)cal->hour * 3600;
+ sec += (uint32_t)(cal->mday - 1) * SEC_IN_DAY;
+ if (is_leapyear(year))
+ {
+ while (month > 1)
+ {
+ sec += (uint32_t)day_leap[--month] * SEC_IN_DAY;
+ }
+ }
+ else
+ {
+ while (month > 1)
+ {
+ sec += (uint32_t)day_noleap[--month] * SEC_IN_DAY;
+ }
+ }
+ while (year > START_YEAR)
+ {
+ sec += (uint32_t)DAY_IN_YEAR(--year) * SEC_IN_DAY;
+ }
+ return sec;
+}
+
+/**
+ * sec_to_calendar() - 鏃ュ巻鏃堕棿鍒板垎瑙f椂闂寸殑杞崲
+ * @cal: 琚浆鎹㈢殑鏃ュ巻鏃堕棿
+ *
+ * 杩斿洖鐨勬槸鍒嗚В鏃堕棿锛屽嵆浠ュ勾鏈堟棩鏃跺垎绉掑舰寮忚〃绀虹殑鏃堕棿
+ */
+calendar_info sec_to_calendar(uint32_t sec)
+{
+ calendar_info cal;
+ uint32_t day, left;
+
+ cal.year = START_YEAR;
+ cal.month = 1;
+ cal.mday = 1;
+ cal.yday = 1;
+ cal.wday = ymd_to_wday(START_YEAR, 1, 1);
+
+ day = sec / SEC_IN_DAY;
+ left = sec % SEC_IN_DAY;
+
+ cal.wday = (day + cal.wday) % 7;
+
+ cal.hour = left / 3600;
+ cal.min = left / 60 % 60;
+ cal.sec = left % 60;
+
+ while (day >= DAY_IN_YEAR(cal.year))
+ {
+ day -= DAY_IN_YEAR(cal.year++);
+ }
+ cal.yday += day;
+
+ if (is_leapyear(cal.year))
+ {
+ while (day >= day_leap[cal.month])
+ {
+ day -= day_leap[cal.month++];
+ }
+ }
+ else
+ {
+ while (day >= day_noleap[cal.month])
+ {
+ day -= day_noleap[cal.month++];
+ }
+ }
+ cal.mday += day;
+
+ return cal;
+}
+
+/**
+ * ymd_to_wday() - 浠庡勾浠姐佹湀浠姐佸ぉ鏁拌繖涓変釜鏁版嵁寰楀埌瀵瑰簲鍦ㄤ竴涓槦鏈熶腑鐨勫ぉ鏁
+ * @year: 骞翠唤
+ * @month: 鏈堜唤
+ * @mday: 褰撳墠鏈堜腑宸茬粡杩囩殑澶╂暟
+ *
+ * 杩斿洖瀵瑰簲鐨勪竴涓槦鏈熶腑鐨勫ぉ鏁
+ */
+static int16_t ymd_to_wday(int16_t year, int16_t month, int16_t mday)
+{
+ if (is_leapyear(year))
+ {
+ for (uint8_t i = 1; i < month; i++)
+ mday += day_leap[i];
+ }
+ else
+ {
+ for (uint8_t i = 1; i < month; i++)
+ mday += day_noleap[i];
+ }
+ return (year + year / 4 - year / 100 + year / 400 + mday) % 7;
+}
diff --git a/plan_manage_main/src/app/simulat_timer.c b/plan_manage_main/src/app/simulat_timer.c
index c61ce29..0fc66f1 100644
--- a/plan_manage_main/src/app/simulat_timer.c
+++ b/plan_manage_main/src/app/simulat_timer.c
@@ -1,160 +1,161 @@
-/*
- * simulat_timer.h - 实现一个模拟定时器
- */
-
-#include "include.h"
-
-#include "include/simulat_timer.h"
-#include "include/config.h"
-#include "include/key.h"
-
-static volatile st_register st_r[SIMULAT_TIMER_NUM];
-
-
-
-/*
- * st_init() - 初始化实现模拟定时器所需的pit定时器
- *
- * 基础定时为1ms
- */
-void st_base_init(void)
-{
- uint32_t cnt;
-
- cnt = bus_clk_khz * 1;
- pit_init(SIMULAT_TIMER_PITX, cnt); // 1ms硬件定时中断周期
- return;
-}
-
-
-/*
- * st_init() - 初始化一个给定编号的模拟定时器
- * @n: 定时器编号
- * @st_m: 定时模式
- * @cmr_v: 定时器比较值,在非比较模式可以为任意值
- *
- * 这个函数返回0表示正常完成了初始化任务,返回~0表示定时器已打开或不存在
- */
-uint8_t st_init(uint8_t n, st_mode st_m, uint32_t cmr_v)
-{
- if (st_r[n].flag.ten == 1 || n >= SIMULAT_TIMER_NUM)
- {
- return ~0;
- }
- st_r[n].flag.ten = 1;
- switch(st_m)
- {
- case COMPARE:
- st_r[n].flag.tfc = 1;
- st_r[n].cmr = cmr_v;
- break;
- case NO_COMPARE:
- st_r[n].flag.tfc = 0;
- break;
- default:
- break;
- }
- return 0;
-}
-
-
-/*
- * st_close() - 关闭一个给定编号的模拟定时器
- * @n: 定时器编号
- */
-void st_close(uint8_t n)
-{
- st_r[n].flag.ten = 0;
- return;
-}
-
-/*
- * st_tcf() - 查询tcf位返回
- * @n: 定时器编号
- *
- * 这个函数在没有过比较值的时候返回0,已过比较值得时候返回1,对于不存在或未打开
- */
-uint8_t st_tcf(uint8_t n)
-{
- uint8_t temp;
-
- if (st_r[n].flag.tcf == 1)
- {
- st_r[n].flag.tcf = 0;
- temp = 1;
- }
- else
- {
- temp = 0;
- }
- return temp;
-}
-
-/*
- * st_tov() - 查询tov位返回
- * @n: 定时器编号
- *
- * 这个函数在没有溢出时返回0,没有溢出时返回1,对于不存在或未打开
- */
-uint8_t st_tov(uint8_t n)
-{
- uint8_t temp;
- if (st_r[n].flag.tov == 1)
- {
- st_r[n].flag.tov = 0;
- temp = 1;
- }
- else
- {
- temp = 0;
- }
- return temp;
-}
-
-/*
- * st_count() - 查询当前模拟定时值
- * @n: 定时器编号
- *
- * 对于不存在或未打开
- */
-uint32_t st_count(uint8_t n)
-{
- return st_r[n].count;
-}
-
-
-/*
- * st_base() -定时调用以模拟N路定时器
- *
- * 定时的最小间隔等于这个函数被调用的周期
- */
-void st_base(void)
-{
- uint8_t i;
-
- for (i = 0; i < SIMULAT_TIMER_NUM; i++)
- {
- if (st_r[i].flag.ten == 1) // 使能
- {
- if (++st_r[i].count == 0) // 溢出
- {
- st_r[i].flag.tov = 1;
- } // 溢出
- if (st_r[i].flag.tfc == 1) // 比较
- {
- if (st_r[i].count == st_r[i].cmr)
- {
- st_r[i].count = 0;
- st_r[i].flag.tcf = 1;
- }
- } // 比较
- } // 使能
- }
-
- if (st_tcf(0) == 1)
- {
- key_detect();
- }
-
- return;
-}
+/*
+ * simulat_timer.h - 实现一个模拟定时器
+ */
+
+#include "include.h"
+
+#include "include/config.h"
+#include "include/key.h"
+
+#include "include/simulat_timer.h"
+
+static volatile st_register st_r[SIMULAT_TIMER_NUM];
+
+
+
+/**
+ * st_init() - 初始化实现模拟定时器所需的pit定时器
+ *
+ * 基础定时为1ms
+ */
+void st_base_init(void)
+{
+ uint32_t cnt;
+
+ cnt = bus_clk_khz * 1;
+ pit_init(SIMULAT_TIMER_PITX, cnt); // 1ms硬件定时中断周期
+ return;
+}
+
+
+/**
+ * st_init() - 初始化一个给定编号的模拟定时器
+ * @n: 定时器编号
+ * @st_m: 定时模式
+ * @cmr_v: 定时器比较值,在非比较模式可以为任意值
+ *
+ * 这个函数返回0表示正常完成了初始化任务,返回~0表示定时器已打开或不存在
+ */
+uint8_t st_init(uint8_t n, st_mode st_m, uint32_t cmr_v)
+{
+ if (st_r[n].flag.ten == 1 || n >= SIMULAT_TIMER_NUM)
+ {
+ return ~0;
+ }
+ st_r[n].flag.ten = 1;
+ switch(st_m)
+ {
+ case COMPARE:
+ st_r[n].flag.tfc = 1;
+ st_r[n].cmr = cmr_v;
+ break;
+ case NO_COMPARE:
+ st_r[n].flag.tfc = 0;
+ break;
+ default:
+ break;
+ }
+ return 0;
+}
+
+
+/**
+ * st_close() - 关闭一个给定编号的模拟定时器
+ * @n: 定时器编号
+ */
+void st_close(uint8_t n)
+{
+ st_r[n].flag.ten = 0;
+ return;
+}
+
+/**
+ * st_tcf() - 查询tcf位返回
+ * @n: 定时器编号
+ *
+ * 这个函数在没有过比较值的时候返回0,已过比较值得时候返回1,对于不存在或未打开
+ */
+uint8_t st_tcf(uint8_t n)
+{
+ uint8_t temp;
+
+ if (st_r[n].flag.tcf == 1)
+ {
+ st_r[n].flag.tcf = 0;
+ temp = 1;
+ }
+ else
+ {
+ temp = 0;
+ }
+ return temp;
+}
+
+/**
+ * st_tov() - 查询tov位返回
+ * @n: 定时器编号
+ *
+ * 这个函数在没有溢出时返回0,没有溢出时返回1,对于不存在或未打开
+ */
+uint8_t st_tov(uint8_t n)
+{
+ uint8_t temp;
+ if (st_r[n].flag.tov == 1)
+ {
+ st_r[n].flag.tov = 0;
+ temp = 1;
+ }
+ else
+ {
+ temp = 0;
+ }
+ return temp;
+}
+
+/**
+ * st_count() - 查询当前模拟定时值
+ * @n: 定时器编号
+ *
+ * 对于不存在或未打开
+ */
+uint32_t st_count(uint8_t n)
+{
+ return st_r[n].count;
+}
+
+
+/**
+ * st_base() -定时调用以模拟N路定时器
+ *
+ * 定时的最小间隔等于这个函数被调用的周期
+ */
+void st_base(void)
+{
+ uint8_t i;
+
+ for (i = 0; i < SIMULAT_TIMER_NUM; i++)
+ {
+ if (st_r[i].flag.ten == 1) // 使能
+ {
+ if (++st_r[i].count == 0) // 溢出
+ {
+ st_r[i].flag.tov = 1;
+ } // 溢出
+ if (st_r[i].flag.tfc == 1) // 比较
+ {
+ if (st_r[i].count == st_r[i].cmr)
+ {
+ st_r[i].count = 0;
+ st_r[i].flag.tcf = 1;
+ }
+ } // 比较
+ } // 使能
+ }
+
+ if (st_tcf(0) == 1)
+ {
+ key_detect();
+ }
+
+ return;
+}
diff --git a/plan_manage_main/src/app/tft.c b/plan_manage_main/src/app/tft.c
index 44d6282..1c45e5d 100644
--- a/plan_manage_main/src/app/tft.c
+++ b/plan_manage_main/src/app/tft.c
@@ -96,7 +96,7 @@
/*
* tft_state - 在tft操作中,表示当前状态机的状态的类型
- * pgn表示页面编号,etn、ln分别一个页面中的元素号、行号,objn表示元素号。
+ * pgn表示页面编号,etn、ln分别一个页面中的元素号、行号,objn表示对象号。
*/
typedef struct tft_state_
{
@@ -106,16 +106,27 @@ typedef struct tft_state_
uint8_t objn;
} tft_state;
+/*
+ * 页面标志
+ * ORIGINAL_PG表示开机界面,MENU_PG表示主界面,OBJ_SET_PG表示植物属性设置界面
+ */
typedef enum page_name_
{
ORIGINAL_PG = 0, MENU_PG, OBJ_SET_PG
} page_name;
+/*
+ * 页面属性标志
+ * 枚举的每个成员的含义同其标识符
+ */
typedef enum entry_attr_
{
R_NUM = 0, RW_NUM, RW_PIC, SW_PAGE, R_TXT, RW_TXT
} entry_attr;
+/*
+ * tft设置颜色时需要的值
+ */
typedef enum tft_colour_
{
TFT_BACK = 65535, TFT_RED = 63488, TFT_PURPLE = 31
@@ -125,13 +136,30 @@ typedef enum tft_colour_
+// tft显示屏当前状态变量定义
static tft_state tft_stt = { 0, 0, 0, 0 };
+/*
+ * original_lyt数组存储的是开机界面的每一行第一个有效元素的元素编号
+ * menu_lyt数组存储的是主界面的每一行第一个有效元素的元素编号
+ * obj_set_lyt数组存储的是植物属性设置界面的每一行第一个有效元素的元素编号
+ */
static uint8_t original_lyt[] = { 0, 1 };
static uint8_t menu_lyt[] = { 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
static uint8_t obj_set_lyt[] = { 0, 2, 5, 9, 13, 16, 18, 19};
+/*
+ * kvp_original数组中每一个元素按顺序依次对应着开机界面中的每一个有效元素。
+ * kvp_menu数组对应主界面。
+ * kvp_obj_set对应八个植物属性界面,这个数组中有八个相同形式的数组,对应八个不
+ * 同的植物。
+ *
+ * 需要说明的地方有两个,一是数组中的每一个元素都是有序的,是和显示页面中的有效
+ * 元素顺序对应的;二是数组中的每一个元素包含的信息有一个字符串,一个整型值,
+ * 一个枚举值,字符串对应着页面元素的ID,整型值在不同的情况下有不同的含义,枚举
+ * 值表示了元素的类型。
+ */
static kv_pair kvp_original[] = { {"ori_0", 0, R_NUM} };
static 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_s", 0, RW_NUM },
@@ -145,7 +173,6 @@ static kv_pair kvp_menu[] = {
{ "obj7", 7, SW_PAGE },
{ "note", 0, R_TXT }
};
-
kv_pair kvp_obj_set[][PLAN_DATA_NUM] =
{
{
@@ -224,6 +251,9 @@ kv_pair kvp_obj_set[][PLAN_DATA_NUM] =
static char tft_cmd_str[20];
+/*
+ * 静态函数声明
+ */
static void tft_send_cmd(const char *cmd);
static void tft_set_color(uint8_t etn, tft_colour tft_col);
static void tft_input(void);
@@ -232,8 +262,10 @@ static void sw_to_obj(void);
-/*
+/**
+ * tft_init() - tft模块初始化
*
+ * 包括串口初始化和初始化显示屏为开机界面
*/
void tft_init(void)
{
@@ -242,8 +274,8 @@ void tft_init(void)
return;
}
-/*
- *
+/**
+ * tft_send_cmd() - 向串口屏发送命令
*/
static void tft_send_cmd(const char *cmd)
{
@@ -254,27 +286,40 @@ static void tft_send_cmd(const char *cmd)
uart_putchar(TFT_UARTX, 0xff);
}
+/**
+ * tft_set_color() - 设置tft显示屏页面中一个元素区域的颜色
+ * @etn: 要设置颜色的区域对应的元素号
+ * @tft_col: 要设置的颜色
+ *
+ * 设置颜色时,首先得到对应的元素ID,接着产生一个对此ID设置颜色属性的字符串形式
+ * 的命令,然后通过串口将这个字符串发送给串口屏,最后还要发送刷新此ID的命令以使
+ * 颜色变化显示出来
+ */
static void tft_set_color(uint8_t etn, tft_colour tft_col)
{
+ //对于不同的页面有不同的处理
switch (tft_stt.pgn)
{
case ORIGINAL_PG:
break;
case MENU_PG:
+ // 对同一页面中不同属性的元素做不同的处理
switch (kvp_menu[etn].attr)
{
case R_NUM:
case RW_NUM:
case R_TXT:
case RW_TXT:
- sprintf(tft_cmd_str, "%s.bco=%d", kvp_menu[etn].key, tft_col);
+ // 更改此元素的颜色属性
+ sprintf(tft_cmd_str, "%s.bco=%u", kvp_menu[etn].key, tft_col);
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:
case SW_PAGE:
- sprintf(tft_cmd_str, "%s_sg.bco=%d", kvp_menu[etn].key, tft_col);
+ sprintf(tft_cmd_str, "%s_sg.bco=%u", kvp_menu[etn].key, tft_col);
tft_send_cmd(tft_cmd_str);
sprintf(tft_cmd_str, "ref %s_sg", kvp_menu[etn].key);
tft_send_cmd(tft_cmd_str);
@@ -290,16 +335,19 @@ static void tft_set_color(uint8_t etn, tft_colour tft_col)
case RW_NUM:
case R_TXT:
case RW_TXT:
- sprintf(tft_cmd_str, "%s.bco=%d", kvp_obj_set[tft_stt.objn][etn].key, tft_col);
+ sprintf(tft_cmd_str, "%s.bco=%u",
+ kvp_obj_set[tft_stt.objn][etn].key, tft_col);
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:
case SW_PAGE:
- sprintf(tft_cmd_str, "%s_sg.bco=%d", kvp_obj_set[tft_stt.objn][etn].key, tft_col);
+ sprintf(tft_cmd_str, "%s_sg.bco=%u",
+ kvp_obj_set[tft_stt.objn][etn].key, tft_col);
tft_send_cmd(tft_cmd_str);
- sprintf(tft_cmd_str, "ref %s_sg", kvp_obj_set[tft_stt.objn][etn].key);
+ sprintf(tft_cmd_str, "ref %s_sg",
+ kvp_obj_set[tft_stt.objn][etn].key);
tft_send_cmd(tft_cmd_str);
break;
default:
@@ -312,21 +360,31 @@ static void tft_set_color(uint8_t etn, tft_colour tft_col)
return;
}
-/*
+/**
+ * tft_up() - 选择tft显示屏当前页面当前行的上一行的第一个元素
*
+ * 当前被选中的元素将以显著的颜色标示出来
*/
void tft_up(void)
{
+ // 记录当前元素号
uint8_t etn_log = tft_stt.etn;
+ // 对同一页面做不同的处理
switch (tft_stt.pgn)
{
case ORIGINAL_PG:
+ // 当前行号大于零就减一表示上一行
if (tft_stt.ln > 0)
{
tft_stt.ln--;
}
+ // 设置元素号为此时行号对应行的第一个元素的元素号
tft_stt.etn = original_lyt[tft_stt.ln];
+
+ // 取消之前的元素的颜色标记,并标记当前元素
+ tft_set_color(etn_log, TFT_BACK);
+ tft_set_color(tft_stt.etn, TFT_PURPLE);
break;
case MENU_PG:
if (tft_stt.ln > 0)
@@ -335,20 +393,8 @@ void tft_up(void)
}
tft_stt.etn = menu_lyt[tft_stt.ln];
- switch (kvp_menu[tft_stt.etn].attr)
- {
- case R_NUM:
- case RW_NUM:
- case R_TXT:
- case RW_TXT:
- case RW_PIC:
- case SW_PAGE:
- tft_set_color(etn_log, TFT_BACK);
- tft_set_color(tft_stt.etn, TFT_PURPLE);
- break;
- default:
- break;
- }
+ tft_set_color(etn_log, TFT_BACK);
+ tft_set_color(tft_stt.etn, TFT_PURPLE);
break;
case OBJ_SET_PG:
if (tft_stt.ln > 0)
@@ -357,21 +403,8 @@ void tft_up(void)
}
tft_stt.etn = obj_set_lyt[tft_stt.ln];
-
- switch (kvp_obj_set[tft_stt.objn][tft_stt.etn].attr)
- {
- case R_NUM:
- case RW_NUM:
- case R_TXT:
- case RW_TXT:
- case RW_PIC:
- case SW_PAGE:
- tft_set_color(etn_log, TFT_BACK);
- tft_set_color(tft_stt.etn, TFT_PURPLE);
- break;
- default:
- break;
- }
+ tft_set_color(etn_log, TFT_BACK);
+ tft_set_color(tft_stt.etn, TFT_PURPLE);
break;
default:
break;
@@ -379,6 +412,11 @@ void tft_up(void)
return;
}
+/**
+ * tft_down() - 选择tft显示屏当前页面当前行的下一行的第一个元素
+ *
+ * 当前被选中的元素将以显著的颜色标示出来
+ */
void tft_down(void)
{
uint8_t etn_log = tft_stt.etn;
@@ -386,11 +424,15 @@ void tft_down(void)
switch (tft_stt.pgn)
{
case ORIGINAL_PG:
+ // 如果当前行号小于最大行号的话,当前行号加一
if (tft_stt.ln < sizeof(original_lyt) / sizeof(uint8_t) - 2)
{
tft_stt.ln++;
}
tft_stt.etn = original_lyt[tft_stt.ln];
+
+ tft_set_color(etn_log, TFT_BACK);
+ tft_set_color(tft_stt.etn, TFT_PURPLE);
break;
case MENU_PG:
if (tft_stt.ln < sizeof(menu_lyt) / sizeof(uint8_t) - 2)
@@ -399,20 +441,8 @@ void tft_down(void)
}
tft_stt.etn = menu_lyt[tft_stt.ln];
- switch (kvp_menu[tft_stt.etn].attr)
- {
- case R_NUM:
- case RW_NUM:
- case R_TXT:
- case RW_TXT:
- case RW_PIC:
- case SW_PAGE:
- tft_set_color(etn_log, TFT_BACK);
- tft_set_color(tft_stt.etn, TFT_PURPLE);
- break;
- default:
- break;
- }
+ tft_set_color(etn_log, TFT_BACK);
+ tft_set_color(tft_stt.etn, TFT_PURPLE);
break;
case OBJ_SET_PG:
if (tft_stt.ln < sizeof(obj_set_lyt) / sizeof(uint8_t) - 2)
@@ -421,20 +451,8 @@ void tft_down(void)
}
tft_stt.etn = obj_set_lyt[tft_stt.ln];
- switch (kvp_obj_set[tft_stt.objn][tft_stt.etn].attr)
- {
- case R_NUM:
- case RW_NUM:
- case R_TXT:
- case RW_TXT:
- case RW_PIC:
- case SW_PAGE:
- tft_set_color(etn_log, TFT_BACK);
- tft_set_color(tft_stt.etn, TFT_PURPLE);
- break;
- default:
- break;
- }
+ tft_set_color(etn_log, TFT_BACK);
+ tft_set_color(tft_stt.etn, TFT_PURPLE);
break;
default:
break;
@@ -442,6 +460,11 @@ void tft_down(void)
return;
}
+/**
+ * tft_left() - 选择tft显示屏当前页面中当前元素的下一个元素
+ *
+ * 当前被选中的元素将以显著的颜色标示出来
+ */
void tft_left(void)
{
uint8_t etn_log = tft_stt.etn;
@@ -456,6 +479,9 @@ void tft_left(void)
tft_stt.ln--;
}
}
+
+ tft_set_color(etn_log, TFT_BACK);
+ tft_set_color(tft_stt.etn, TFT_PURPLE);
break;
case MENU_PG:
if (tft_stt.etn > 0)
@@ -465,20 +491,9 @@ void tft_left(void)
tft_stt.ln--;
}
}
- switch (kvp_menu[tft_stt.etn].attr)
- {
- case R_NUM:
- case RW_NUM:
- case R_TXT:
- case RW_TXT:
- case RW_PIC:
- case SW_PAGE:
- tft_set_color(etn_log, TFT_BACK);
- tft_set_color(tft_stt.etn, TFT_PURPLE);
- break;
- default:
- break;
- }
+
+ tft_set_color(etn_log, TFT_BACK);
+ tft_set_color(tft_stt.etn, TFT_PURPLE);
break;
case OBJ_SET_PG:
if (tft_stt.etn > 0)
@@ -488,20 +503,9 @@ void tft_left(void)
tft_stt.ln--;
}
}
- switch (kvp_obj_set[tft_stt.objn][tft_stt.etn].attr)
- {
- case R_NUM:
- case RW_NUM:
- case R_TXT:
- case RW_TXT:
- case RW_PIC:
- case SW_PAGE:
- tft_set_color(etn_log, TFT_BACK);
- tft_set_color(tft_stt.etn, TFT_PURPLE);
- break;
- default:
- break;
- }
+
+ tft_set_color(etn_log, TFT_BACK);
+ tft_set_color(tft_stt.etn, TFT_PURPLE);
break;
default:
break;
@@ -509,6 +513,11 @@ void tft_left(void)
return;
}
+/**
+ * tft_left() - 选择tft显示屏当前页面中当前元素的上一个元素
+ *
+ * 当前被选中的元素将以显著的颜色标示出来
+ */
void tft_right(void)
{
uint8_t etn_log = tft_stt.etn;
@@ -516,13 +525,17 @@ void tft_right(void)
switch (tft_stt.pgn)
{
case ORIGINAL_PG:
- if (tft_stt.etn < original_lyt[sizeof(original_lyt) / sizeof(uint8_t) - 1] - 1)
+ if (tft_stt.etn < original_lyt[sizeof(original_lyt)
+ / sizeof(uint8_t) - 1] - 1)
{
if (++tft_stt.etn >= original_lyt[tft_stt.ln + 1])
{
tft_stt.ln++;
}
}
+
+ tft_set_color(etn_log, TFT_BACK);
+ tft_set_color(tft_stt.etn, TFT_PURPLE);
break;
case MENU_PG:
if (tft_stt.etn < menu_lyt[sizeof(menu_lyt) / sizeof(uint8_t) - 1] - 1)
@@ -533,23 +546,12 @@ void tft_right(void)
}
}
- switch (kvp_menu[tft_stt.etn].attr)
- {
- case R_NUM:
- case RW_NUM:
- case R_TXT:
- case RW_TXT:
- case RW_PIC:
- case SW_PAGE:
- tft_set_color(etn_log, TFT_BACK);
- tft_set_color(tft_stt.etn, TFT_PURPLE);
- break;
- default:
- break;
- }
+ tft_set_color(etn_log, TFT_BACK);
+ tft_set_color(tft_stt.etn, TFT_PURPLE);
break;
case OBJ_SET_PG:
- if (tft_stt.etn < obj_set_lyt[sizeof(obj_set_lyt) / sizeof(uint8_t) - 1] - 1)
+ if (tft_stt.etn < obj_set_lyt[sizeof(obj_set_lyt)
+ / sizeof(uint8_t) - 1] - 1)
{
if (++tft_stt.etn >= obj_set_lyt[tft_stt.ln + 1])
{
@@ -557,20 +559,8 @@ void tft_right(void)
}
}
- switch (kvp_obj_set[tft_stt.objn][tft_stt.etn].attr)
- {
- case R_NUM:
- case RW_NUM:
- case R_TXT:
- case RW_TXT:
- case RW_PIC:
- case SW_PAGE:
- tft_set_color(etn_log, TFT_BACK);
- tft_set_color(tft_stt.etn, TFT_PURPLE);
- break;
- default:
- break;
- }
+ tft_set_color(etn_log, TFT_BACK);
+ tft_set_color(tft_stt.etn, TFT_PURPLE);
break;
default:
break;
@@ -578,47 +568,24 @@ void tft_right(void)
return;
}
-void refrush_obj(void)
-{
- for (int i = 0; i < sizeof(kvp_obj_set[tft_stt.objn]) / sizeof(kv_pair); i++)
- {
- switch (kvp_obj_set[tft_stt.objn][tft_stt.etn].attr)
- {
- case R_NUM:
- sprintf(tft_cmd_str,"%s.val=%d",
- kvp_obj_set[tft_stt.objn][tft_stt.etn].key,
- kvp_obj_set[tft_stt.objn][tft_stt.etn].value);
- tft_send_cmd(tft_cmd_str);
- break;
- case RW_NUM:
- sprintf(tft_cmd_str,"%s.val=%d",
- kvp_obj_set[tft_stt.objn][tft_stt.etn].key,
- kvp_obj_set[tft_stt.objn][tft_stt.etn].value);
- tft_send_cmd(tft_cmd_str);
- break;
- case RW_PIC:
- sprintf(tft_cmd_str, "vis %s,%d",
- kvp_obj_set[tft_stt.objn][tft_stt.etn].key,
- kvp_obj_set[tft_stt.objn][tft_stt.etn].value);
- tft_send_cmd(tft_cmd_str);
- break;
- case SW_PAGE:
- break;
- default:
- break;
- }
- }
- return;
-}
+/**
+ * tft_ret() - 串口屏返回上一个页面
+ */
void tft_ret(void)
{
+ // 对于不同的页面做不同的处理
switch (tft_stt.pgn)
{
case ORIGINAL_PG:
break;
case MENU_PG:
+ /*
+ * 更新状态
+ * 发送显示上一个页面的命令,
+ * 设置此时页面选中标记为当前页面中的第一个元素
+ */
tft_stt.pgn = ORIGINAL_PG;
tft_stt.ln = 0;
tft_stt.etn = 0;
@@ -646,177 +613,9 @@ void tft_ret(void)
return;
}
-
-static void tft_input(void)
-{
- input_limit in_lmt;
- int16_t in_v, bg_v;
-
- switch (tft_stt.pgn)
- {
- case ORIGINAL_PG:
- break;
- case MENU_PG:
- switch (kvp_menu[tft_stt.etn].attr)
- {
- case R_NUM:
- break;
- case RW_NUM:
- tft_set_color(tft_stt.etn, TFT_RED);
-
- in_lmt = tft_input_limit(kvp_menu[tft_stt.etn].key);
- bg_v = kvp_menu[tft_stt.etn].value;
- knob_enable();
- while (get_key_mean(RET_KEY) == N_KEY)
- {
- in_v = bg_v + get_knob_val();
- if (in_v < in_lmt.min)
- {
- kvp_menu[tft_stt.etn].value = in_lmt.min;
- bg_v = in_lmt.min;
- knob_clear();
- }
- else if (in_v > in_lmt.max)
- {
- kvp_menu[tft_stt.etn].value = in_lmt.max;
- bg_v = in_lmt.max;
- knob_clear();
- }
- else
- {
- kvp_menu[tft_stt.etn].value = in_v;
- }
- sprintf(tft_cmd_str, "%s.val=%d", kvp_menu[tft_stt.etn].key,
- kvp_menu[tft_stt.etn].value);
- tft_send_cmd(tft_cmd_str);
- }
- knob_disable();
- tft_set_color(tft_stt.etn, TFT_PURPLE);
- calendar_info cal;
- cal.year = *get_value_of_kvp("st_y", 0);
- cal.month = *get_value_of_kvp("st_mo", 0);
- cal.mday = *get_value_of_kvp("st_d", 0);
- cal.hour = *get_value_of_kvp("st_h", 0);
- cal.min = *get_value_of_kvp("st_mi", 0);
- cal.sec= *get_value_of_kvp("st_s", 0);
- ds1302_set_time(&cal);
- clear_key_m();
- break;
- case RW_PIC:
- tft_set_color(tft_stt.etn, TFT_RED);
- while (get_key_mean(RET_KEY) == N_KEY)
- {
- if (get_key_mean(UP_KEY) == S_KEY || get_key_mean(DOWN_KEY) == S_KEY)
- {
- kvp_menu[tft_stt.etn].value = !kvp_menu[tft_stt.etn].value;
- sprintf(tft_cmd_str, "vis %s,%d", kvp_menu[tft_stt.etn].key,
- kvp_menu[tft_stt.etn].value);
- tft_send_cmd(tft_cmd_str);
- }
- }
- tft_set_color(tft_stt.etn, TFT_PURPLE);
- clear_key_m();
- break;
- case SW_PAGE:
- break;
- default:
- break;
- }
- break;
- case OBJ_SET_PG:
- switch (kvp_obj_set[tft_stt.objn][tft_stt.etn].attr)
- {
- case R_NUM:
- break;
- case RW_NUM:
- tft_set_color(tft_stt.etn, TFT_RED);
- in_lmt = tft_input_limit(kvp_obj_set[tft_stt.objn][tft_stt.etn].key);
- bg_v = kvp_obj_set[tft_stt.objn][tft_stt.etn].value;
- knob_enable();
- while (get_key_mean(RET_KEY) == N_KEY)
- {
- in_v = bg_v + get_knob_val();
- if (in_v < in_lmt.min)
- {
- kvp_obj_set[tft_stt.objn][tft_stt.etn].value = in_lmt.min;
- bg_v = in_lmt.min;
- knob_clear();
- }
- else if (in_v > in_lmt.max)
- {
- kvp_obj_set[tft_stt.objn][tft_stt.etn].value = in_lmt.max;
- bg_v = in_lmt.max;
- knob_clear();
- }
- else
- {
- kvp_obj_set[tft_stt.objn][tft_stt.etn].value = in_v;
- }
- sprintf(tft_cmd_str, "%s.val=%d", kvp_obj_set[tft_stt.objn][tft_stt.etn].key,
- kvp_obj_set[tft_stt.objn][tft_stt.etn].value);
- tft_send_cmd(tft_cmd_str);
- }
- knob_disable();
- tft_set_color(tft_stt.etn, TFT_PURPLE);
- clear_key_m();
- break;
- case RW_PIC:
- tft_set_color(tft_stt.etn, TFT_RED);
-
- while (get_key_mean(RET_KEY) == N_KEY)
- {
- if (get_key_mean(UP_KEY) == S_KEY || get_key_mean(DOWN_KEY))
- {
- kvp_obj_set[tft_stt.objn][tft_stt.etn].value =
- !kvp_obj_set[tft_stt.objn][tft_stt.etn].value;
- sprintf(tft_cmd_str, "vis %s,%d",
- kvp_obj_set[tft_stt.objn][tft_stt.etn].key,
- kvp_obj_set[tft_stt.objn][tft_stt.etn].value);
- tft_send_cmd(tft_cmd_str);
- }
- }
- tft_set_color(tft_stt.etn, TFT_PURPLE);
- clear_key_m();
- break;
- case RW_TXT:
- tft_set_color(tft_stt.etn, TFT_RED);
- while (get_key_mean(RET_KEY) == N_KEY)
- {
- if (get_key_mean(UP_KEY) == S_KEY)
- {
- orient_setspeed(kvp_obj_set[tft_stt.objn][tft_stt.etn].value, ORIENT_LEFT, 100);
- sprintf(tft_cmd_str, "%s.txt=\"%s\"", kvp_obj_set[tft_stt.objn][tft_stt.etn].key,
- "左转");
- tft_send_cmd(tft_cmd_str);
- }
- else if (get_key_mean(DOWN_KEY))
- {
- orient_setspeed(kvp_obj_set[tft_stt.objn][tft_stt.etn].value, ORIENT_RIGHT, 100);
- sprintf(tft_cmd_str, "%s.txt=\"%s\"", kvp_obj_set[tft_stt.objn][tft_stt.etn].key,
- "右转");
- tft_send_cmd(tft_cmd_str);
- }
- else
- {
- // 保持上一次循环
- }
- }
- orient_setmode(kvp_obj_set[tft_stt.objn][tft_stt.etn].value, MODE_MANUL); // 手动意为停止
- orient_presetop(kvp_obj_set[tft_stt.objn][tft_stt.etn].value, PRESET_SET, tft_stt.objn + 1);
- tft_set_color(tft_stt.etn, TFT_PURPLE);
- clear_key_m();
- break;
- case SW_PAGE:
- break;
- default:
- break;
- }
- break;
- default:
- break;
- }
-}
-
+/**
+ * tft_ok() - 串口屏进入下一个页面或者编辑状态
+ */
void tft_ok(void)
{
switch (tft_stt.pgn)
@@ -848,15 +647,19 @@ void tft_ok(void)
{
case R_NUM:
break;
+ // 进行RW_NUM属性元素的编辑
case RW_NUM:
tft_input();
break;
+ // 进行RW_TXT属性元素的编辑
case RW_TXT:
tft_input();
break;
+ // 进行RW_PIC属性元素的编辑
case RW_PIC:
tft_input();
break;
+ // 进入下一个页面
case SW_PAGE:
tft_stt.pgn = OBJ_SET_PG;
tft_stt.objn = kvp_menu[tft_stt.etn].value;
@@ -896,8 +699,206 @@ void tft_ok(void)
return;
}
+/**
+ * tft_input() - 实现串口屏的编辑输入功能
+ *
+ * 当选中一个元素编辑时,应改变其颜色以标记进入编辑状态
+ * 编辑输入时有旋钮输入和按键输入两种情况
+ */
+static void tft_input(void)
+{
+ input_limit in_lmt;
+ int16_t in_v, bg_v;
+
+ // 不同页面
+ switch (tft_stt.pgn)
+ {
+ case ORIGINAL_PG:
+ break;
+ case MENU_PG:
+ // 不同属性
+ switch (kvp_menu[tft_stt.etn].attr)
+ {
+ case R_NUM:
+ break;
+ // 旋钮输入
+ case RW_NUM:
+ // 设置颜色
+ tft_set_color(tft_stt.etn, TFT_RED);
+
+ // 得到当前编辑的元素输入区间范围
+ in_lmt = tft_input_limit(kvp_menu[tft_stt.etn].key);
+ // 记录当前元素的初始值
+ bg_v = kvp_menu[tft_stt.etn].value;
+ knob_enable();
+ // 在没有按RET按键的时候,一直保持在编辑状态
+ while (get_key_mean(RET_KEY) == N_KEY)
+ {
+ in_v = bg_v + get_knob_val();
+ if (in_v < in_lmt.min)
+ {
+ kvp_menu[tft_stt.etn].value = in_lmt.min;
+ bg_v = in_lmt.min;
+ knob_clear();
+ }
+ else if (in_v > in_lmt.max)
+ {
+ kvp_menu[tft_stt.etn].value = in_lmt.max;
+ bg_v = in_lmt.max;
+ knob_clear();
+ }
+ else
+ {
+ kvp_menu[tft_stt.etn].value = in_v;
+ }
+ sprintf(tft_cmd_str, "%s.val=%u", kvp_menu[tft_stt.etn].key,
+ kvp_menu[tft_stt.etn].value);
+ tft_send_cmd(tft_cmd_str);
+ }
+ knob_disable();
+ tft_set_color(tft_stt.etn, TFT_PURPLE);
+ // 如果是对系统时间设置的话,要同时更新系统时间
+ calendar_info cal;
+ cal.year = *get_value_of_kvp("st_y", 0);
+ cal.month = *get_value_of_kvp("st_mo", 0);
+ cal.mday = *get_value_of_kvp("st_d", 0);
+ cal.hour = *get_value_of_kvp("st_h", 0);
+ cal.min = *get_value_of_kvp("st_mi", 0);
+ cal.sec= *get_value_of_kvp("st_s", 0);
+ ds1302_set_time(&cal);
+ clear_key_m();
+ break;
+ // 按键输入的情况
+ case RW_PIC:
+ tft_set_color(tft_stt.etn, TFT_RED);
+ while (get_key_mean(RET_KEY) == N_KEY)
+ {
+ if (get_key_mean(UP_KEY) == S_KEY
+ || get_key_mean(DOWN_KEY) == S_KEY)
+ {
+ kvp_menu[tft_stt.etn].value = !kvp_menu[tft_stt.etn].value;
+ sprintf(tft_cmd_str, "vis %s,%u", kvp_menu[tft_stt.etn].key,
+ kvp_menu[tft_stt.etn].value);
+ tft_send_cmd(tft_cmd_str);
+ }
+ }
+ tft_set_color(tft_stt.etn, TFT_PURPLE);
+ clear_key_m();
+ break;
+ case SW_PAGE:
+ break;
+ default:
+ break;
+ }
+ break;
+ case OBJ_SET_PG:
+ switch (kvp_obj_set[tft_stt.objn][tft_stt.etn].attr)
+ {
+ case R_NUM:
+ break;
+ case RW_NUM:
+ tft_set_color(tft_stt.etn, TFT_RED);
+ in_lmt =
+ tft_input_limit(kvp_obj_set[tft_stt.objn][tft_stt.etn].key);
+ bg_v = kvp_obj_set[tft_stt.objn][tft_stt.etn].value;
+ knob_enable();
+ while (get_key_mean(RET_KEY) == N_KEY)
+ {
+ in_v = bg_v + get_knob_val();
+ if (in_v < in_lmt.min)
+ {
+ kvp_obj_set[tft_stt.objn][tft_stt.etn].value = in_lmt.min;
+ bg_v = in_lmt.min;
+ knob_clear();
+ }
+ else if (in_v > in_lmt.max)
+ {
+ kvp_obj_set[tft_stt.objn][tft_stt.etn].value = in_lmt.max;
+ bg_v = in_lmt.max;
+ knob_clear();
+ }
+ else
+ {
+ kvp_obj_set[tft_stt.objn][tft_stt.etn].value = in_v;
+ }
+ sprintf(tft_cmd_str, "%s.val=%u",
+ kvp_obj_set[tft_stt.objn][tft_stt.etn].key,
+ kvp_obj_set[tft_stt.objn][tft_stt.etn].value);
+ tft_send_cmd(tft_cmd_str);
+ }
+ knob_disable();
+ tft_set_color(tft_stt.etn, TFT_PURPLE);
+ clear_key_m();
+ break;
+ case RW_PIC:
+ tft_set_color(tft_stt.etn, TFT_RED);
+
+ while (get_key_mean(RET_KEY) == N_KEY)
+ {
+ if (get_key_mean(UP_KEY) == S_KEY || get_key_mean(DOWN_KEY))
+ {
+ kvp_obj_set[tft_stt.objn][tft_stt.etn].value =
+ !kvp_obj_set[tft_stt.objn][tft_stt.etn].value;
+ sprintf(tft_cmd_str, "vis %s,%u",
+ kvp_obj_set[tft_stt.objn][tft_stt.etn].key,
+ kvp_obj_set[tft_stt.objn][tft_stt.etn].value);
+ tft_send_cmd(tft_cmd_str);
+ }
+ }
+ tft_set_color(tft_stt.etn, TFT_PURPLE);
+ clear_key_m();
+ break;
+ // 设置方向
+ case RW_TXT:
+ tft_set_color(tft_stt.etn, TFT_RED);
+ while (get_key_mean(RET_KEY) == N_KEY)
+ {
+ if (get_key_mean(UP_KEY) == S_KEY)
+ {
+ orient_setspeed(
+ kvp_obj_set[tft_stt.objn][tft_stt.etn].value,
+ ORIENT_LEFT, 100);
+ sprintf(tft_cmd_str, "%s.txt=\"%s\"",
+ kvp_obj_set[tft_stt.objn][tft_stt.etn].key, "左转");
+ tft_send_cmd(tft_cmd_str);
+ }
+ else if (get_key_mean(DOWN_KEY))
+ {
+ orient_setspeed(
+ kvp_obj_set[tft_stt.objn][tft_stt.etn].value,
+ ORIENT_RIGHT, 100);
+ sprintf(tft_cmd_str, "%s.txt=\"%s\"",
+ kvp_obj_set[tft_stt.objn][tft_stt.etn].key, "右转");
+ tft_send_cmd(tft_cmd_str);
+ }
+ else
+ {
+ // 保持上一次循环
+ }
+ }
+ orient_setmode(kvp_obj_set[tft_stt.objn][tft_stt.etn].value,
+ MODE_MANUL);
+ orient_presetop(kvp_obj_set[tft_stt.objn][tft_stt.etn].value,
+ PRESET_SET, tft_stt.objn + 1);
+ tft_set_color(tft_stt.etn, TFT_PURPLE);
+ clear_key_m();
+ break;
+ case SW_PAGE:
+ break;
+ default:
+ break;
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+
/*
* tft_page_refresh() - 在页面信息有改变时调用以刷新页面
+ *
+ * 实现的主要依据是串口屏中控件的刷新命令
*/
void tft_page_refresh(void)
{
@@ -930,14 +931,14 @@ void tft_page_refresh(void)
{
case R_NUM:
case RW_NUM:
- sprintf(tft_cmd_str, "%s.val=%d", kvp_menu[etn].key,
+ sprintf(tft_cmd_str, "%s.val=%u", 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,
+ sprintf(tft_cmd_str, "vis %s,%u", kvp_menu[etn].key,
kvp_menu[etn].value);
tft_send_cmd(tft_cmd_str);
break;
@@ -956,7 +957,7 @@ void tft_page_refresh(void)
{
case R_NUM:
case RW_NUM:
- sprintf(tft_cmd_str, "%s.val=%d",
+ sprintf(tft_cmd_str, "%s.val=%u",
kvp_obj_set[tft_stt.objn][etn].key,
kvp_obj_set[tft_stt.objn][etn].value);
tft_send_cmd(tft_cmd_str);
@@ -965,7 +966,7 @@ void tft_page_refresh(void)
tft_send_cmd(tft_cmd_str);
break;
case RW_PIC:
- sprintf(tft_cmd_str, "vis %s,%d",
+ sprintf(tft_cmd_str, "vis %s,%u",
kvp_obj_set[tft_stt.objn][etn].key,
kvp_obj_set[tft_stt.objn][etn].value);
tft_send_cmd(tft_cmd_str);
@@ -983,11 +984,16 @@ void tft_page_refresh(void)
return;
}
+/**
+ * sw_to_obj() - 将植物属性设置界面中的是否加入计划这一属性对应反馈到主界面中
+ *
+ * 在从植物属性设置界面返回主界面时调用
+ */
static void sw_to_obj(void)
{
for(uint8_t i = 0; i < 8; i++)
{
- sprintf(tft_cmd_str, "vis obj%d,%d", i,
+ sprintf(tft_cmd_str, "vis obj%u,%u", i,
*get_value_of_kvp("sw", i));
tft_send_cmd(tft_cmd_str);
}
@@ -997,8 +1003,12 @@ static void sw_to_obj(void)
+/**
+ * get_value_of_kvp() - 得到一个页面元素的ID对应的vlaue的地址
+ */
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)
@@ -1006,6 +1016,7 @@ int16_t *get_value_of_kvp(char *name, uint8_t objn)
return &kvp_menu[i].value;
}
}
+ // 遍历植物属性设置界面
for (int i = 0; i < sizeof(kvp_obj_set[objn]) / sizeof(kv_pair); i++)
{
if (strcmp(name, kvp_obj_set[objn][i].key) == 0)
@@ -1016,6 +1027,10 @@ int16_t *get_value_of_kvp(char *name, uint8_t objn)
return 0;
}
+/**
+ * tft_input_limit() - 确定一个元素输入的区间
+ * @name: 元素ID
+ */
input_limit tft_input_limit(char *name)
{
input_limit in_lmt;
@@ -1032,7 +1047,8 @@ 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", 0), *get_value_of_kvp("st_mo", 0));
+ 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)
{
@@ -1062,7 +1078,8 @@ 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", 0), *get_value_of_kvp("bg_mo", 0));
+ 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)
{
@@ -1123,15 +1140,6 @@ input_limit tft_input_limit(char *name)
}
-//const kv_pair *get_plan_data(uint8_t objn)[][18]
-//{
- //return (const kv_pair *[][18])kvp_obj_set;
-//}
-
-uint8_t get_obj_num(void)
-{
- return sizeof(kvp_obj_set) / sizeof(kvp_obj_set[0]);
-}
diff --git a/settings/plan_manage.wsdt b/settings/plan_manage.wsdt
index 9ca6aaa..e6ac213 100644
--- a/settings/plan_manage.wsdt
+++ b/settings/plan_manage.wsdt
@@ -12,14 +12,14 @@
- 257272727
+ 239272727
- 300Debug-LogFind-in-FilesFind-All-ReferencesSelect-Ambiguous-Definitions2091524461
+ 3002091524461
@@ -27,7 +27,7 @@
300BuildDebug-LogFind-All-ReferencesSelect-Ambiguous-Definitions37762566251
- 300BuildFind-in-FilesFind-All-ReferencesSelect-Ambiguous-Definitions201244300BuildDebug-LogFind-in-FilesSelect-Ambiguous-Definitions44062754300BuildDebug-LogFind-in-FilesFind-All-References44062754
+ 300BuildFind-in-FilesFind-All-ReferencesSelect-Ambiguous-Definitions2012443004406275430044062754
@@ -39,24 +39,24 @@
Workspace
- plan_manage_mainplan_manage_main/srcplan_manage_main/src/app
+ plan_manage_mainplan_manage_main/srcplan_manage_main/src/appplan_manage_main/src/app/include
- 0
+ 0TabID-15184-4818BuildBuildTabID-29948-5360Debug LogDebug-Log0
- TextEditor$WS_DIR$\plan_manage_main\src\app\include\plan_handle.h00000000TextEditor$WS_DIR$\plan_manage_main\Debug\List\plan_manage_main.map0000032700TextEditor$WS_DIR$\plan_manage_main\src\common\io.c000000715715TextEditor$WS_DIR$\plan_manage_main\src\drivers\FTFx\source\FlashCommandSequence.c000003744644464TextEditor$WS_DIR$\plan_manage_main\src\include\drivers\FTFx\SSD_FTFx.h000005649194919TextEditor$WS_DIR$\plan_manage_main\src\include\drivers\FTFx\FTFx_KX_(256_128_64_32_16_8)K_0K_0K_1K_0K.h000006256895689TextEditor$WS_DIR$\plan_manage_main\src\include\drivers\FTFx\SSD_FTFx_Common.h000001961795717957TextEditor$WS_DIR$\plan_manage_main\src\drivers\FTFx\source\FlashProgram.c000006540954095TextEditor$WS_DIR$\plan_manage_main\src\common\memtest.c00000000TextEditor$WS_DIR$\plan_manage_main\src\common\printf.c0000009090TextEditor$WS_DIR$\plan_manage_main\src\drivers\mcg.c000000435435TextEditor$WS_DIR$\plan_manage_main\src\drivers\uart.c0000033697859785TextEditor$WS_DIR$\plan_manage_main\src\include\drivers\fire_drivers_cfg.h000000868876TextEditor$WS_DIR$\plan_manage_main\src\app\include\pm_flash.h000000113113TextEditor$WS_DIR$\plan_manage_main\src\include\drivers\mcg.h0000024463463TextEditor$WS_DIR$\plan_manage_main\src\app\debug.c0000054337337TextEditor$WS_DIR$\plan_manage_main\src\app\include\orient.h000000175184TextEditor$WS_DIR$\plan_manage_main\src\drivers\gpio.c000006543004300TextEditor$WS_DIR$\plan_manage_main\src\include\drivers\gpio.h000001421452145TextEditor$WS_DIR$\plan_manage_main\src\drivers\pit.c0000061785785TextEditor$WS_DIR$\plan_manage_main\src\drivers\adc.c0000012037113711TextEditor$WS_DIR$\plan_manage_main\src\include\drivers\adc.h000005750750TextEditor$WS_DIR$\plan_manage_main\src\app\include\simulat_timer.h000000503503TextEditor$WS_DIR$\plan_manage_main\src\app\include\pm_flash_cfg.h000003014931493TextEditor$WS_DIR$\plan_manage_main\src\app\include\knob.h000000346346TextEditor$WS_DIR$\plan_manage_main\src\app\include\isr.h000000577577TextEditor$WS_DIR$\plan_manage_main\src\app\include\tft.h000000238238TextEditor$WS_DIR$\plan_manage_main\src\app\include\tft_plan_internal.h000000412412TextEditor$WS_DIR$\plan_manage_main\src\app\include\water.h000000190190TextEditor$WS_DIR$\plan_manage_main\src\app\include\config.h000000107107TextEditor$WS_DIR$\plan_manage_main\src\app\isr.c000000618618TextEditor$WS_DIR$\plan_manage_main\src\app\pm_init.c000000110110TextEditor$WS_DIR$\plan_manage_main\src\app\simulat_timer.c00000010651065TextEditor$WS_DIR$\plan_manage_main\src\app\water.c0000009090TextEditor$WS_DIR$\plan_manage_main\src\app\main.c000003013421342TextEditor$WS_DIR$\plan_manage_main\src\app\include\key.h000000304304TextEditor$WS_DIR$\plan_manage_main\src\cpu\crt0.s000000242242TextEditor$WS_DIR$\plan_manage_main\src\cpu\sysinit.c00000000TextEditor$WS_DIR$\plan_manage_main\src\cpu\start.c000000690690TextEditor$WS_DIR$\plan_manage_main\src\app\knob.c000002210241024TextEditor$WS_DIR$\plan_manage_main\src\include\drivers\FTFx\SSD_Types.h000009963806380TextEditor$WS_DIR$\plan_manage_main\src\drivers\FTFx\source\CopyToRam.c000002439083908TextEditor$WS_DIR$\plan_manage_main\src\include\drivers\FTFx\SSD_FTFx_Internal.h000001521219312193TextEditor$WS_DIR$\plan_manage_main\src\app\pm_flash.c000000727727TextEditor$WS_DIR$\plan_manage_main\src\app\orient.c000003911421142TextEditor$WS_DIR$\plan_manage_main\src\app\pm_time.c0000025266806680TextEditor$WS_DIR$\plan_manage_main\src\app\tft.c000000582582TextEditor$WS_DIR$\plan_manage_main\src\app\key.c000003678678TextEditor$WS_DIR$\plan_manage_main\src\app\plan_handle.c000000787787TextEditor$WS_DIR$\plan_manage_main\src\app\output.c00000000TextEditor$WS_DIR$\plan_manage_main\src\app\include\pm_time.h000000112112500100000010000001
+ TextEditor$WS_DIR$\plan_manage_main\src\common\io.c000000715715TextEditor$WS_DIR$\plan_manage_main\src\drivers\FTFx\source\FlashCommandSequence.c000003744644464TextEditor$WS_DIR$\plan_manage_main\src\include\drivers\FTFx\SSD_FTFx.h000005649194919TextEditor$WS_DIR$\plan_manage_main\src\include\drivers\FTFx\FTFx_KX_(256_128_64_32_16_8)K_0K_0K_1K_0K.h000006256895689TextEditor$WS_DIR$\plan_manage_main\src\include\drivers\FTFx\SSD_FTFx_Common.h000001961795717957TextEditor$WS_DIR$\plan_manage_main\src\drivers\FTFx\source\FlashProgram.c000006540954095TextEditor$WS_DIR$\plan_manage_main\src\common\memtest.c00000000TextEditor$WS_DIR$\plan_manage_main\src\common\printf.c0000009090TextEditor$WS_DIR$\plan_manage_main\src\drivers\mcg.c000000435435TextEditor$WS_DIR$\plan_manage_main\src\include\drivers\fire_drivers_cfg.h000000868876TextEditor$WS_DIR$\plan_manage_main\src\include\drivers\mcg.h0000024463463TextEditor$WS_DIR$\plan_manage_main\src\app\include\orient.h000000175184TextEditor$WS_DIR$\plan_manage_main\src\drivers\gpio.c000006543004300TextEditor$WS_DIR$\plan_manage_main\src\include\drivers\gpio.h000001421452145TextEditor$WS_DIR$\plan_manage_main\src\drivers\pit.c0000061785785TextEditor$WS_DIR$\plan_manage_main\src\drivers\adc.c0000012037113711TextEditor$WS_DIR$\plan_manage_main\src\include\drivers\adc.h000005750750TextEditor$WS_DIR$\plan_manage_main\src\cpu\crt0.s000000242242TextEditor$WS_DIR$\plan_manage_main\src\cpu\sysinit.c00000000TextEditor$WS_DIR$\plan_manage_main\src\cpu\start.c000000690690TextEditor$WS_DIR$\plan_manage_main\src\include\drivers\FTFx\SSD_Types.h000009963806380TextEditor$WS_DIR$\plan_manage_main\src\drivers\FTFx\source\CopyToRam.c000002439083908TextEditor$WS_DIR$\plan_manage_main\src\include\drivers\FTFx\SSD_FTFx_Internal.h000001521219312193TextEditor$WS_DIR$\plan_manage_main\src\app\knob.c000004615601560TextEditor$WS_DIR$\plan_manage_main\src\app\isr.c000000618618TextEditor$WS_DIR$\plan_manage_main\Debug\List\plan_manage_main.map0000035200TextEditor$WS_DIR$\plan_manage_main\src\app\output.c00000000TextEditor$WS_DIR$\plan_manage_main\src\app\pm_init.c000000517517TextEditor$WS_DIR$\plan_manage_main\src\app\debug.c000000234234TextEditor$WS_DIR$\plan_manage_main\src\app\water.c000000238238TextEditor$WS_DIR$\plan_manage_main\src\app\pm_time.c0000023619619TextEditor$WS_DIR$\plan_manage_main\src\drivers\uart.c0000030491079107TextEditor$WS_DIR$\plan_manage_main\src\app\orient.c0000029806806TextEditor$WS_DIR$\plan_manage_main\src\app\include\debug.h0000011441441TextEditor$WS_DIR$\plan_manage_main\src\app\include\knob.h000000130130TextEditor$WS_DIR$\plan_manage_main\src\app\include\output.h00000000TextEditor$WS_DIR$\plan_manage_main\src\app\include\plan_handle.h00000000TextEditor$WS_DIR$\plan_manage_main\src\app\include\pm_flash.h000000170170TextEditor$WS_DIR$\plan_manage_main\src\app\include\pm_flash_cfg.h000004632603260TextEditor$WS_DIR$\plan_manage_main\src\app\include\pm_init.h00000000TextEditor$WS_DIR$\plan_manage_main\src\app\include\simulat_timer.h0000010599599TextEditor$WS_DIR$\plan_manage_main\src\app\include\tft.h0000011486486TextEditor$WS_DIR$\plan_manage_main\src\app\include\tft_plan_internal.h0000018400400TextEditor$WS_DIR$\plan_manage_main\src\app\include\water.h000000156156TextEditor$WS_DIR$\plan_manage_main\src\app\include\config.h0000030113113TextEditor$WS_DIR$\plan_manage_main\src\app\include\isr.h000000577577TextEditor$WS_DIR$\plan_manage_main\src\app\include\key.h000000419419TextEditor$WS_DIR$\plan_manage_main\src\app\main.c000007625562556TextEditor$WS_DIR$\plan_manage_main\src\app\pm_flash.c0000013948154815TextEditor$WS_DIR$\plan_manage_main\src\app\simulat_timer.c0000083234234TextEditor$WS_DIR$\plan_manage_main\src\app\tft.c0000014740164016TextEditor$WS_DIR$\plan_manage_main\src\app\key.c0000014143374337TextEditor$WS_DIR$\plan_manage_main\src\app\plan_handle.c0000014142124212TextEditor$WS_DIR$\plan_manage_main\src\app\include\pm_time.h000007457457530100000010000001
- iaridepm.enu1-2-2423331-2-22233322101170513330030908120
+ iaridepm.enu1-2-2494330-2-22332617881835813254797683196-2-21871305-2-213071891003070260331155794282369
diff --git a/settings/plan_manage.wspos b/settings/plan_manage.wspos
index 0dd6d3d..948abcb 100644
--- a/settings/plan_manage.wspos
+++ b/settings/plan_manage.wspos
@@ -1,2 +1,2 @@
[MainWindow]
-WindowPlacement=_ 125 87 1150 613 2
+WindowPlacement=_ 139 121 1164 647 3