pokk 0 23 ноября, 2017 Опубликовано 23 ноября, 2017 · Жалоба В качестве отладки при попадании в 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); } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 68 23 ноября, 2017 Опубликовано 23 ноября, 2017 · Жалоба А не проще ли отключить печать аккуратно, а не через кучу комментов? printf -> printf_hf #ifdef __DEBUG__ #define printf_hf(...) printf(__VA_ARGS__) #else #define printf_hf(...) #endif Хотя ругаться все равно будет. Можно объявить переменные как volatile, Вы ведь их отладчиком смотрите? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 23 ноября, 2017 Опубликовано 23 ноября, 2017 · Жалоба Некоторые компиляторы замолкают, если сделать так: (void)var; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pokk 0 23 ноября, 2017 Опубликовано 23 ноября, 2017 · Жалоба scifi, помогло спасибо!! А не проще ли отключить печать аккуратно, а не через кучу комментов? Ну как сказать всего 2 кнопки нажать пришлось, Notepad++ выделенный текст и Ctrl+K,а раскоментирование Ctrl+shift+K :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 191 23 ноября, 2017 Опубликовано 23 ноября, 2017 · Жалоба В качестве отладки при попадании в hard_fault, использую функцию, но компилятор мне этом мне надоедает, тем что все переменные тут не используются, как убрать, эти предупреждения но только для этого модуля? __root static int volatile x; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 23 ноября, 2017 Опубликовано 23 ноября, 2017 · Жалоба scifi, помогло спасибо!! Ну как сказать всего 2 кнопки нажать пришлось, Notepad++ выделенный текст и Ctrl+K,а раскоментирование Ctrl+shift+K :laughing: Там еще есть Ctrl-T :) для ленивых и торопливых. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ms1 0 23 ноября, 2017 Опубликовано 23 ноября, 2017 · Жалоба В качестве отладки при попадании в hard_fault, использую функцию, но компилятор мне этом мне надоедает, тем что все переменные тут не используются, как убрать, эти предупреждения но только для этого модуля? На мой взгляд наиболее правильно использовать это: #pragma diag_suppress #pragma diag_default Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 191 23 ноября, 2017 Опубликовано 23 ноября, 2017 · Жалоба На мой взгляд наиболее правильно использовать это: #pragma diag_suppress #pragma diag_default Но это не спасёт от выкидывания оптимизирующим линкёром этих переменных из результирующего файла, если указанные переменные нигде не используются. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться