Перейти к содержанию
    

Отключить предупреждении об неиспользуемых переменных

В качестве отладки при попадании в hard_fault, использую функцию, но компилятор мне этом мне надоедает, тем что все переменные тут не используются, как убрать, эти предупреждения но только для этого модуля?

//================================================================================
==================
void hard_fault_handler_c (unsigned int * hardfault_args)
{
  static unsigned int stacked_r0;
  static unsigned int stacked_r1;
  static unsigned int stacked_r2;
  static unsigned int stacked_r3;
  static unsigned int stacked_r12;
  static unsigned int stacked_lr;
  static unsigned int stacked_pc;
  static unsigned int stacked_psr;

  stacked_r0 = ((unsigned long) hardfault_args[0]);
  stacked_r1 = ((unsigned long) hardfault_args[1]);
  stacked_r2 = ((unsigned long) hardfault_args[2]);
  stacked_r3 = ((unsigned long) hardfault_args[3]);

  stacked_r12 = ((unsigned long) hardfault_args[4]);
  stacked_lr = ((unsigned long) hardfault_args[5]);
  stacked_pc = ((unsigned long) hardfault_args[6]);
  stacked_psr = ((unsigned long) hardfault_args[7]);
  NOP;
  //printf ("\n\n[Hard fault handler - all numbers in hex]\n");
//  printf ("R0 = %x\n", stacked_r0);
//  printf ("R1 = %x\n", stacked_r1);
//  printf ("R2 = %x\n", stacked_r2);
//  printf ("R3 = %x\n", stacked_r3);
//  printf ("R12 = %x\n", stacked_r12);
//  printf ("LR [R14] = %x  subroutine call return address\n", stacked_lr);
//  printf ("PC [R15] = %x  program counter\n", stacked_pc);
//  printf ("PSR = %x\n", stacked_psr);
//  printf ("BFAR = %x\n", (*((volatile unsigned long *)(0xE000ED38))));
//  printf ("CFSR = %x\n", (*((volatile unsigned long *)(0xE000ED28))));
//  printf ("HFSR = %x\n", (*((volatile unsigned long *)(0xE000ED2C))));
//  printf ("DFSR = %x\n", (*((volatile unsigned long *)(0xE000ED30))));
//  printf ("AFSR = %x\n", (*((volatile unsigned long *)(0xE000ED3C))));
//  printf ("SCB_SHCSR = %x\n", SCB->SHCSR);

  while (1);
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А не проще ли отключить печать аккуратно, а не через кучу комментов?

printf -> printf_hf

#ifdef __DEBUG__
#define printf_hf(...)    printf(__VA_ARGS__)
#else
#define printf_hf(...)
#endif

 

Хотя ругаться все равно будет. Можно объявить переменные как volatile, Вы ведь их отладчиком смотрите?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

scifi, помогло спасибо!!

А не проще ли отключить печать аккуратно, а не через кучу комментов?

Ну как сказать всего 2 кнопки нажать пришлось, Notepad++ выделенный текст и Ctrl+K,а раскоментирование Ctrl+shift+K :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В качестве отладки при попадании в hard_fault, использую функцию, но компилятор мне этом мне надоедает, тем что все переменные тут не используются, как убрать, эти предупреждения но только для этого модуля?

__root static int volatile x;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

scifi, помогло спасибо!!

Ну как сказать всего 2 кнопки нажать пришлось, Notepad++ выделенный текст и Ctrl+K,а раскоментирование Ctrl+shift+K :laughing:

Там еще есть Ctrl-T :)

для ленивых и торопливых.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В качестве отладки при попадании в hard_fault, использую функцию, но компилятор мне этом мне надоедает, тем что все переменные тут не используются, как убрать, эти предупреждения но только для этого модуля?

На мой взгляд наиболее правильно использовать это:

#pragma diag_suppress

#pragma diag_default

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На мой взгляд наиболее правильно использовать это:

#pragma diag_suppress

#pragma diag_default

Но это не спасёт от выкидывания оптимизирующим линкёром этих переменных из результирующего файла, если указанные переменные нигде не используются.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...