@@ -446,7 +446,6 @@ __STATIC_FORCEINLINE void PIN_SWCLK_TCK_CLR(void)
446446*/
447447__STATIC_FORCEINLINE uint32_t PIN_SWDIO_TMS_IN (void )
448448{
449- gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (SWDIO_DIR ), GPIO_GET_PIN_INDEX (SWDIO_DIR ), 0 );
450449 uint32_t sta = gpio_read_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_TMS ), GPIO_GET_PIN_INDEX (PIN_TMS ));
451450 __asm volatile ("fence io, io" );
452451 return sta ;
@@ -457,7 +456,6 @@ Set the SWDIO/TMS DAP hardware I/O pin to high level.
457456*/
458457__STATIC_FORCEINLINE void PIN_SWDIO_TMS_SET (void )
459458{
460- gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (SWDIO_DIR ), GPIO_GET_PIN_INDEX (SWDIO_DIR ), 1 );
461459 gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_TMS ), GPIO_GET_PIN_INDEX (PIN_TMS ), true);
462460 __asm volatile ("fence io, io" );
463461}
@@ -467,7 +465,6 @@ Set the SWDIO/TMS DAP hardware I/O pin to low level.
467465*/
468466__STATIC_FORCEINLINE void PIN_SWDIO_TMS_CLR (void )
469467{
470- gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (SWDIO_DIR ), GPIO_GET_PIN_INDEX (SWDIO_DIR ), 1 );
471468 gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_TMS ), GPIO_GET_PIN_INDEX (PIN_TMS ), false);
472469 __asm volatile ("fence io, io" );
473470}
@@ -477,7 +474,6 @@ __STATIC_FORCEINLINE void PIN_SWDIO_TMS_CLR(void)
477474*/
478475__STATIC_FORCEINLINE uint32_t PIN_SWDIO_IN (void )
479476{
480- gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (SWDIO_DIR ), GPIO_GET_PIN_INDEX (SWDIO_DIR ), 0 );
481477 uint32_t sta = gpio_read_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_TMS ), GPIO_GET_PIN_INDEX (PIN_TMS ));
482478 __asm volatile ("fence io, io" );
483479 return sta ;
@@ -488,7 +484,6 @@ __STATIC_FORCEINLINE uint32_t PIN_SWDIO_IN(void)
488484*/
489485__STATIC_FORCEINLINE void PIN_SWDIO_OUT (uint32_t bit )
490486{
491- gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (SWDIO_DIR ), GPIO_GET_PIN_INDEX (SWDIO_DIR ), 1 );
492487 gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_TMS ), GPIO_GET_PIN_INDEX (PIN_TMS ), bit & 0x01 );
493488 __asm volatile ("fence io, io" );
494489}
@@ -500,6 +495,8 @@ called prior \ref PIN_SWDIO_OUT function calls.
500495__STATIC_FORCEINLINE void PIN_SWDIO_OUT_ENABLE (void )
501496{
502497 gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (SWDIO_DIR ), GPIO_GET_PIN_INDEX (SWDIO_DIR ), 1 );
498+ gpio_set_pin_output (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_TMS ), GPIO_GET_PIN_INDEX (PIN_TMS ));
499+ __asm volatile ("fence io, io" );
503500}
504501
505502/** SWDIO I/O pin: Switch to Input mode (used in SWD mode only).
@@ -509,6 +506,8 @@ called prior \ref PIN_SWDIO_IN function calls.
509506__STATIC_FORCEINLINE void PIN_SWDIO_OUT_DISABLE (void )
510507{
511508 gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (SWDIO_DIR ), GPIO_GET_PIN_INDEX (SWDIO_DIR ), 0 );
509+ gpio_set_pin_input (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_TMS ), GPIO_GET_PIN_INDEX (PIN_TMS ));
510+ __asm volatile ("fence io, io" );
512511}
513512
514513
0 commit comments