From e3241415961a641aabfaa629aacf8fcd6e1681e0 Mon Sep 17 00:00:00 2001
From: cnlohr <lohr85@gmail.com>
Date: Sun, 12 Mar 2023 08:08:36 -0400
Subject: [PATCH] Get everything in line.  Just need to fix functionality on
 Link-E

---
 ch32v003fun/ch32v003fun.c  |   4 +++-
 examples/blink/blink.bin   | Bin 468 -> 468 bytes
 examples/blink/blink.c     |   4 ++--
 minichlink/pgm-wch-linke.c |   8 +++++++-
 4 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/ch32v003fun/ch32v003fun.c b/ch32v003fun/ch32v003fun.c
index d472c7d..137455e 100644
--- a/ch32v003fun/ch32v003fun.c
+++ b/ch32v003fun/ch32v003fun.c
@@ -875,7 +875,7 @@ int _write(int fd, const char *buf, int size)
 		remain =- tosend;
 	}
 }
-#endif
+
 
 void SetupDebugPrintf()
 {
@@ -884,6 +884,8 @@ void SetupDebugPrintf()
 }
 
 
+#endif
+
 void DelaySysTick( uint32_t n )
 {
     SysTick->SR &= ~(1 << 0);
diff --git a/examples/blink/blink.bin b/examples/blink/blink.bin
index 9d0751d4d385d8b2e2346a9ab16e20ca1628a5d8..94a16b43785731553baa6a65a8ab89e0914b9772 100755
GIT binary patch
delta 18
acmcb@e1&<!YW8p;24Qyg9~(C*F#-TQ*ai6j

delta 18
acmcb@e1&<!YWC?Y48rW}b{jV-F#-TPY6Wos

diff --git a/examples/blink/blink.c b/examples/blink/blink.c
index 450893e..ea93690 100644
--- a/examples/blink/blink.c
+++ b/examples/blink/blink.c
@@ -22,9 +22,9 @@ int main()
 	while(1)
 	{
 		GPIOD->BSHR = 1;	 // Turn on GPIOD0
-		Delay_Ms( 50 );
+		Delay_Ms( 200 );
 		GPIOD->BSHR = 1<<16; // Turn off GPIOD0
-		Delay_Ms( 50 );
+		Delay_Ms( 200 );
 		count++;
 	}
 }
diff --git a/minichlink/pgm-wch-linke.c b/minichlink/pgm-wch-linke.c
index 5fa2ade..da38118 100644
--- a/minichlink/pgm-wch-linke.c
+++ b/minichlink/pgm-wch-linke.c
@@ -195,7 +195,7 @@ printf( "  5: %d\n", bOn );
 static int LEUnbrick( void * dev )
 {
 	printf( "Sending unbrick\n" );
-	 wch_link_command( (libusb_device_handle *)dev, "\x81\x0d\x01\x0f\x09", 5, 0, 0, 0 );
+	wch_link_command( (libusb_device_handle *)dev, "\x81\x0d\x01\x0f\x09", 5, 0, 0, 0 );
 	printf( "Done unbrick\n" );
 	return 0;
 }
@@ -206,6 +206,7 @@ static int LEHaltMode( void * d, int mode )
 
 	if( mode == 0 )
 	{
+		printf( "Holding in reset\n" );
 		// Part one "immediately" places the part into reset.  Part 2 says when we're done, leave part in reset.
 		wch_link_multicommands( (libusb_device_handle *)dev, 2, 4, "\x81\x0d\x01\x02", 4, "\x81\x0d\x01\x01" );
 	}
@@ -236,10 +237,13 @@ static int LEConfigureNRSTAsGPIO( void * d, int one_if_yes_gpio )
 	return 0;
 }
 
+
 static int LEReadBinaryBlob( void * d, uint32_t offset, uint32_t amount, uint8_t * readbuff )
 {
 	libusb_device_handle * dev = ((struct LinkEProgrammerStruct*)d)->devh;
 
+	LEHaltMode( d, 0 );
+
 	int i;
 	int status;
 	uint8_t rbuff[1024];
@@ -296,6 +300,8 @@ static int LEWriteBinaryBlob( void * d, uint32_t address_to_write, uint32_t len,
 {
 	libusb_device_handle * dev = ((struct LinkEProgrammerStruct*)d)->devh;
 
+	LEHaltMode( d, 0 );
+
 	int i;
 	int status;
 	uint8_t rbuff[1024];
-- 
GitLab