2525// #include "HID-Project.h"
2626// #endif
2727
28+
2829#ifndef __DAP_CONFIG_H__
2930#define __DAP_CONFIG_H__
3031
@@ -123,7 +124,7 @@ Provides definitions about:
123124#define SWO_STREAM 0 ///< SWO Streaming Trace: 1 = available, 0 = not available.
124125
125126/// Clock frequency of the Test Domain Timer. Timer value is returned with \ref TIMESTAMP_GET.
126- #define TIMESTAMP_CLOCK 100000000U ///< Timestamp clock in Hz (0 = timestamps not supported).
127+ #define TIMESTAMP_CLOCK 48000000U ///< Timestamp clock in Hz (0 = timestamps not supported).
127128/// Debug Unit is connected to fixed Target Device.
128129/// The Debug Unit may be part of an evaluation board and always connected to a fixed
129130/// known device. In this case a Device Vendor and Device Name string is stored which
@@ -202,7 +203,7 @@ Provides definitions about:
202203//**************************************************************************************************
203204//**
204205//Faster Port Manipulation
205- inline void digitalWrite_fast (int pin , bool val )
206+ inline void digitalWrite_fast_ (int pin , bool val )
206207{
207208 if (val )
208209 PORT -> Group [g_APinDescription [pin ].ulPort ].OUTSET .reg = (1ul << g_APinDescription [pin ].ulPin );
@@ -211,7 +212,7 @@ inline void digitalWrite_fast(int pin, bool val)
211212}
212213
213214
214- inline int digitalRead_fast (int pin )
215+ inline int digitalRead_fast_ (int pin )
215216{
216217 return !!(PORT -> Group [g_APinDescription [pin ].ulPort ].IN .reg & (1ul << g_APinDescription [pin ].ulPin ));
217218}
@@ -308,7 +309,7 @@ Set the SWCLK/TCK DAP hardware I/O pin to high level.
308309*/
309310static __forceinline void PIN_SWCLK_TCK_SET (void ) {
310311 if (Fast ){
311- digitalWrite_fast (PIN_SWCLK , HIGH );}
312+ digitalWrite_fast_ (PIN_SWCLK , HIGH );}
312313 else {
313314 digitalWrite (PIN_SWCLK , HIGH ); }
314315}
@@ -318,7 +319,7 @@ Set the SWCLK/TCK DAP hardware I/O pin to low level.
318319*/
319320static __forceinline void PIN_SWCLK_TCK_CLR (void ) {
320321 if (Fast ){
321- digitalWrite_fast (PIN_SWCLK , LOW );}
322+ digitalWrite_fast_ (PIN_SWCLK , LOW );}
322323 else {
323324 digitalWrite (PIN_SWCLK , HIGH );}
324325}
@@ -331,7 +332,7 @@ static __forceinline void PIN_SWCLK_TCK_CLR (void) {
331332*/
332333static __forceinline uint32_t PIN_SWDIO_TMS_IN (void ) {
333334 if (Fast ){
334- return (digitalRead_fast (PIN_SWDIO ) == HIGH ) ? 1 : 0 ;}
335+ return (digitalRead_fast_ (PIN_SWDIO ) == HIGH ) ? 1 : 0 ;}
335336 else {
336337 return (digitalRead (PIN_SWDIO ) == HIGH ) ? 1 : 0 ;}
337338
@@ -342,7 +343,7 @@ Set the SWDIO/TMS DAP hardware I/O pin to high level.
342343*/
343344static __forceinline void PIN_SWDIO_TMS_SET (void ) {
344345 if (Fast ){
345- digitalWrite_fast (PIN_SWDIO , HIGH );}
346+ digitalWrite_fast_ (PIN_SWDIO , HIGH );}
346347 else {
347348 digitalWrite (PIN_SWDIO , HIGH );}
348349
@@ -353,7 +354,7 @@ Set the SWDIO/TMS DAP hardware I/O pin to low level.
353354*/
354355static __forceinline void PIN_SWDIO_TMS_CLR (void ) {
355356 if (Fast ){
356- digitalWrite_fast (PIN_SWDIO , LOW );}
357+ digitalWrite_fast_ (PIN_SWDIO , LOW );}
357358 else {
358359 digitalWrite (PIN_SWDIO , LOW );}
359360}
@@ -363,7 +364,7 @@ static __forceinline void PIN_SWDIO_TMS_CLR (void) {
363364*/
364365static __forceinline uint32_t PIN_SWDIO_IN (void ) {
365366 if (Fast ){
366- return (digitalRead_fast (PIN_SWDIO ) == HIGH ) ? 1 : 0 ;}
367+ return (digitalRead_fast_ (PIN_SWDIO ) == HIGH ) ? 1 : 0 ;}
367368 else {
368369 return (digitalRead (PIN_SWDIO ) == HIGH ) ? 1 : 0 ;}
369370}
@@ -373,7 +374,7 @@ static __forceinline uint32_t PIN_SWDIO_IN (void) {
373374*/
374375static __forceinline void PIN_SWDIO_OUT (uint32_t bit ) {
375376 if (Fast ){
376- digitalWrite_fast (PIN_SWDIO , (bit & 1 ) ? HIGH : LOW );}
377+ digitalWrite_fast_ (PIN_SWDIO , (bit & 1 ) ? HIGH : LOW );}
377378 else {
378379 digitalWrite (PIN_SWDIO , (bit & 1 ) ? HIGH : LOW );}
379380}
@@ -402,7 +403,7 @@ static __forceinline void PIN_SWDIO_OUT_DISABLE (void) {
402403*/
403404static __forceinline uint32_t PIN_TDI_IN (void ) {
404405if (Fast ){
405- return (digitalRead_fast (PIN_TDI ) == HIGH ) ? 1 : 0 ;}
406+ return (digitalRead_fast_ (PIN_TDI ) == HIGH ) ? 1 : 0 ;}
406407else {
407408 return (digitalRead (PIN_TDI ) == HIGH ) ? 1 : 0 ;}
408409}
@@ -412,7 +413,7 @@ else{
412413*/
413414static __forceinline void PIN_TDI_OUT (uint32_t bit ) {
414415if (Fast ){
415- digitalWrite_fast (PIN_TDI , (bit & 1 ) ? HIGH : LOW );}
416+ digitalWrite_fast_ (PIN_TDI , (bit & 1 ) ? HIGH : LOW );}
416417else {
417418 digitalWrite (PIN_TDI , (bit & 1 ) ? HIGH : LOW );}
418419}
@@ -425,7 +426,7 @@ else{
425426*/
426427static __forceinline uint32_t PIN_TDO_IN (void ) {
427428if (Fast ){
428- return (digitalRead_fast (PIN_TDO ) == HIGH ) ? 1 : 0 ;}
429+ return (digitalRead_fast_ (PIN_TDO ) == HIGH ) ? 1 : 0 ;}
429430else {
430431 return (digitalRead (PIN_TDO ) == HIGH ) ? 1 : 0 ;}
431432}
@@ -456,7 +457,7 @@ static __forceinline void PIN_nTRST_OUT (uint32_t bit) {
456457*/
457458static __forceinline uint32_t PIN_nRESET_IN (void ) {
458459if (Fast ){
459- return (digitalRead_fast (PIN_nRESET ) == HIGH ) ? 1 : 0 ;}
460+ return (digitalRead_fast_ (PIN_nRESET ) == HIGH ) ? 1 : 0 ;}
460461else {
461462 return (digitalRead (PIN_nRESET ) == HIGH ) ? 1 : 0 ;}
462463}
@@ -468,7 +469,7 @@ else{
468469*/
469470static __forceinline void PIN_nRESET_OUT (uint32_t bit ) {
470471if (Fast ){
471- digitalWrite_fast (PIN_nRESET , (bit & 1 ) ? HIGH : LOW );}
472+ digitalWrite_fast_ (PIN_nRESET , (bit & 1 ) ? HIGH : LOW );}
472473else {
473474 digitalWrite (PIN_nRESET , (bit & 1 ) ? HIGH : LOW );}
474475}
@@ -496,7 +497,7 @@ It is recommended to provide the following LEDs for status indication:
496497*/
497498static __inline void LED_CONNECTED_OUT (uint32_t bit ) {
498499if (Fast ){
499- digitalWrite_fast (PIN_LED_CONNECTED , bit ? HIGH : LOW );}
500+ digitalWrite_fast_ (PIN_LED_CONNECTED , bit ? HIGH : LOW );}
500501else {
501502 digitalWrite (PIN_LED_CONNECTED , bit ? HIGH : LOW );}
502503}
@@ -508,7 +509,7 @@ else{
508509*/
509510static __inline void LED_RUNNING_OUT (uint32_t bit ) {
510511if (Fast ){
511- digitalWrite_fast (PIN_LED_RUNNING , bit ? HIGH : LOW );}
512+ digitalWrite_fast_ (PIN_LED_RUNNING , bit ? HIGH : LOW );}
512513else {
513514 digitalWrite (PIN_LED_RUNNING , bit ? HIGH : LOW );}
514515}
@@ -531,7 +532,14 @@ default, the DWT timer is used. The frequency of this timer is configured with
531532\return Current timestamp value.
532533*/
533534__STATIC_INLINE uint32_t TIMESTAMP_GET (void ) {
534- return (DWT -> CYCCNT ) / (CPU_CLOCK / TIMESTAMP_CLOCK );
535+ uint32_t ticks = SysTick -> VAL ;
536+ // Configure SysTick to trigger every millisecond using the CPU Clock
537+ SysTick -> CTRL = 0 ; // Disable SysTick
538+ SysTick -> LOAD = 0xFFFFFF ; // Set reload register for MAX Value
539+ SysTick -> VAL = 0 ; // Reset the SysTick counter value
540+ SysTick -> CTRL = 0x00000005 ; // Enable SysTick,No Interrupt, Use CPU Clock
541+ return (ticks );
542+ //return (DWT->CYCCNT) / (CPU_CLOCK / TIMESTAMP_CLOCK);
535543}
536544
537545///@}
@@ -580,4 +588,3 @@ static __inline uint32_t RESET_TARGET (void) {
580588
581589
582590#endif /* __DAP_CONFIG_H__ */
583-
0 commit comments