25
25
// #include "HID-Project.h"
26
26
// #endif
27
27
28
+
28
29
#ifndef __DAP_CONFIG_H__
29
30
#define __DAP_CONFIG_H__
30
31
@@ -123,7 +124,7 @@ Provides definitions about:
123
124
#define SWO_STREAM 0 ///< SWO Streaming Trace: 1 = available, 0 = not available.
124
125
125
126
/// 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).
127
128
/// Debug Unit is connected to fixed Target Device.
128
129
/// The Debug Unit may be part of an evaluation board and always connected to a fixed
129
130
/// known device. In this case a Device Vendor and Device Name string is stored which
@@ -202,7 +203,7 @@ Provides definitions about:
202
203
//**************************************************************************************************
203
204
//**
204
205
//Faster Port Manipulation
205
- inline void digitalWrite_fast (int pin , bool val )
206
+ inline void digitalWrite_fast_ (int pin , bool val )
206
207
{
207
208
if (val )
208
209
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)
211
212
}
212
213
213
214
214
- inline int digitalRead_fast (int pin )
215
+ inline int digitalRead_fast_ (int pin )
215
216
{
216
217
return !!(PORT -> Group [g_APinDescription [pin ].ulPort ].IN .reg & (1ul << g_APinDescription [pin ].ulPin ));
217
218
}
@@ -308,7 +309,7 @@ Set the SWCLK/TCK DAP hardware I/O pin to high level.
308
309
*/
309
310
static __forceinline void PIN_SWCLK_TCK_SET (void ) {
310
311
if (Fast ){
311
- digitalWrite_fast (PIN_SWCLK , HIGH );}
312
+ digitalWrite_fast_ (PIN_SWCLK , HIGH );}
312
313
else {
313
314
digitalWrite (PIN_SWCLK , HIGH ); }
314
315
}
@@ -318,7 +319,7 @@ Set the SWCLK/TCK DAP hardware I/O pin to low level.
318
319
*/
319
320
static __forceinline void PIN_SWCLK_TCK_CLR (void ) {
320
321
if (Fast ){
321
- digitalWrite_fast (PIN_SWCLK , LOW );}
322
+ digitalWrite_fast_ (PIN_SWCLK , LOW );}
322
323
else {
323
324
digitalWrite (PIN_SWCLK , HIGH );}
324
325
}
@@ -331,7 +332,7 @@ static __forceinline void PIN_SWCLK_TCK_CLR (void) {
331
332
*/
332
333
static __forceinline uint32_t PIN_SWDIO_TMS_IN (void ) {
333
334
if (Fast ){
334
- return (digitalRead_fast (PIN_SWDIO ) == HIGH ) ? 1 : 0 ;}
335
+ return (digitalRead_fast_ (PIN_SWDIO ) == HIGH ) ? 1 : 0 ;}
335
336
else {
336
337
return (digitalRead (PIN_SWDIO ) == HIGH ) ? 1 : 0 ;}
337
338
@@ -342,7 +343,7 @@ Set the SWDIO/TMS DAP hardware I/O pin to high level.
342
343
*/
343
344
static __forceinline void PIN_SWDIO_TMS_SET (void ) {
344
345
if (Fast ){
345
- digitalWrite_fast (PIN_SWDIO , HIGH );}
346
+ digitalWrite_fast_ (PIN_SWDIO , HIGH );}
346
347
else {
347
348
digitalWrite (PIN_SWDIO , HIGH );}
348
349
@@ -353,7 +354,7 @@ Set the SWDIO/TMS DAP hardware I/O pin to low level.
353
354
*/
354
355
static __forceinline void PIN_SWDIO_TMS_CLR (void ) {
355
356
if (Fast ){
356
- digitalWrite_fast (PIN_SWDIO , LOW );}
357
+ digitalWrite_fast_ (PIN_SWDIO , LOW );}
357
358
else {
358
359
digitalWrite (PIN_SWDIO , LOW );}
359
360
}
@@ -363,7 +364,7 @@ static __forceinline void PIN_SWDIO_TMS_CLR (void) {
363
364
*/
364
365
static __forceinline uint32_t PIN_SWDIO_IN (void ) {
365
366
if (Fast ){
366
- return (digitalRead_fast (PIN_SWDIO ) == HIGH ) ? 1 : 0 ;}
367
+ return (digitalRead_fast_ (PIN_SWDIO ) == HIGH ) ? 1 : 0 ;}
367
368
else {
368
369
return (digitalRead (PIN_SWDIO ) == HIGH ) ? 1 : 0 ;}
369
370
}
@@ -373,7 +374,7 @@ static __forceinline uint32_t PIN_SWDIO_IN (void) {
373
374
*/
374
375
static __forceinline void PIN_SWDIO_OUT (uint32_t bit ) {
375
376
if (Fast ){
376
- digitalWrite_fast (PIN_SWDIO , (bit & 1 ) ? HIGH : LOW );}
377
+ digitalWrite_fast_ (PIN_SWDIO , (bit & 1 ) ? HIGH : LOW );}
377
378
else {
378
379
digitalWrite (PIN_SWDIO , (bit & 1 ) ? HIGH : LOW );}
379
380
}
@@ -402,7 +403,7 @@ static __forceinline void PIN_SWDIO_OUT_DISABLE (void) {
402
403
*/
403
404
static __forceinline uint32_t PIN_TDI_IN (void ) {
404
405
if (Fast ){
405
- return (digitalRead_fast (PIN_TDI ) == HIGH ) ? 1 : 0 ;}
406
+ return (digitalRead_fast_ (PIN_TDI ) == HIGH ) ? 1 : 0 ;}
406
407
else {
407
408
return (digitalRead (PIN_TDI ) == HIGH ) ? 1 : 0 ;}
408
409
}
@@ -412,7 +413,7 @@ else{
412
413
*/
413
414
static __forceinline void PIN_TDI_OUT (uint32_t bit ) {
414
415
if (Fast ){
415
- digitalWrite_fast (PIN_TDI , (bit & 1 ) ? HIGH : LOW );}
416
+ digitalWrite_fast_ (PIN_TDI , (bit & 1 ) ? HIGH : LOW );}
416
417
else {
417
418
digitalWrite (PIN_TDI , (bit & 1 ) ? HIGH : LOW );}
418
419
}
@@ -425,7 +426,7 @@ else{
425
426
*/
426
427
static __forceinline uint32_t PIN_TDO_IN (void ) {
427
428
if (Fast ){
428
- return (digitalRead_fast (PIN_TDO ) == HIGH ) ? 1 : 0 ;}
429
+ return (digitalRead_fast_ (PIN_TDO ) == HIGH ) ? 1 : 0 ;}
429
430
else {
430
431
return (digitalRead (PIN_TDO ) == HIGH ) ? 1 : 0 ;}
431
432
}
@@ -456,7 +457,7 @@ static __forceinline void PIN_nTRST_OUT (uint32_t bit) {
456
457
*/
457
458
static __forceinline uint32_t PIN_nRESET_IN (void ) {
458
459
if (Fast ){
459
- return (digitalRead_fast (PIN_nRESET ) == HIGH ) ? 1 : 0 ;}
460
+ return (digitalRead_fast_ (PIN_nRESET ) == HIGH ) ? 1 : 0 ;}
460
461
else {
461
462
return (digitalRead (PIN_nRESET ) == HIGH ) ? 1 : 0 ;}
462
463
}
@@ -468,7 +469,7 @@ else{
468
469
*/
469
470
static __forceinline void PIN_nRESET_OUT (uint32_t bit ) {
470
471
if (Fast ){
471
- digitalWrite_fast (PIN_nRESET , (bit & 1 ) ? HIGH : LOW );}
472
+ digitalWrite_fast_ (PIN_nRESET , (bit & 1 ) ? HIGH : LOW );}
472
473
else {
473
474
digitalWrite (PIN_nRESET , (bit & 1 ) ? HIGH : LOW );}
474
475
}
@@ -496,7 +497,7 @@ It is recommended to provide the following LEDs for status indication:
496
497
*/
497
498
static __inline void LED_CONNECTED_OUT (uint32_t bit ) {
498
499
if (Fast ){
499
- digitalWrite_fast (PIN_LED_CONNECTED , bit ? HIGH : LOW );}
500
+ digitalWrite_fast_ (PIN_LED_CONNECTED , bit ? HIGH : LOW );}
500
501
else {
501
502
digitalWrite (PIN_LED_CONNECTED , bit ? HIGH : LOW );}
502
503
}
@@ -508,7 +509,7 @@ else{
508
509
*/
509
510
static __inline void LED_RUNNING_OUT (uint32_t bit ) {
510
511
if (Fast ){
511
- digitalWrite_fast (PIN_LED_RUNNING , bit ? HIGH : LOW );}
512
+ digitalWrite_fast_ (PIN_LED_RUNNING , bit ? HIGH : LOW );}
512
513
else {
513
514
digitalWrite (PIN_LED_RUNNING , bit ? HIGH : LOW );}
514
515
}
@@ -531,7 +532,14 @@ default, the DWT timer is used. The frequency of this timer is configured with
531
532
\return Current timestamp value.
532
533
*/
533
534
__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);
535
543
}
536
544
537
545
///@}
@@ -580,4 +588,3 @@ static __inline uint32_t RESET_TARGET (void) {
580
588
581
589
582
590
#endif /* __DAP_CONFIG_H__ */
583
-
0 commit comments