juvf 10 9 января Опубликовано 9 января · Жалоба В 05.01.2024 в 12:22, RusikOk сказал: как можно это исправить? добавить (NOLOAD) не в bss, а в те секции, которые не должны попасть в hex .SPIbufSection (NOLOAD): { *(.SPIbuf) } >Memory_B0 .RxDecripSection (NOLOAD): { *(.RxDescripSection) } >Memory_B1 .TxDescripSection (NOLOAD): { *(.TxDescripSection) } >Memory_B2 .RxarraySection (NOLOAD): { *(.RxBUF) } >Memory_B3 .TxarraySection (NOLOAD): { *(.TxBUF) } >Memory_B4 Ну и вроде как звёздочки не хватает. .SPIbufSection (NOLOAD): { *(.SPIbufSection*) } >Memory_B0 У меня так секция ОЗУ описана /* Memories definition */ MEMORY { CCMRAM (xrw) : ORIGIN = 0x10000000, LENGTH = 64K RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 192K FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 1024K SDRAM (xrw) : ORIGIN = 0xC0000000, LENGTH = 4M } ..... .ARM.attributes 0 : { *(.ARM.attributes) } /* External RAM section */ .sdram (NOLOAD): { *(.sdram*); } >SDRAM 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Юрий48 0 18 января Опубликовано 18 января (изменено) · Жалоба STM32CubeIDE. Есть структура, расположенная не в main.c, скажем, такая typedef struct { uint8_t family; uint8_t code[MAXDEVICES_ON_THE_BUS]; uint8_t crc; } RomCode; // В отладчике хочу посмотреть её содержание. Так понимаю, что в main.c её надо определить как глобальную. Вот тут у меня и затыка - не получается, с синтаксисом явно не дружу. А, может, вообще как то это надо решать по другому. Помогите, пожалуйста, бывшему депутату государственной думы. Изменено 18 января пользователем Юрий48 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 10 19 января Опубликовано 19 января · Жалоба typedef struct { uint8_t family; uint8_t code[MAXDEVICES_ON_THE_BUS]; uint8_t crc; } RomCode; // RomCode romCode;//можно проинициализировать вот так = {.family = 1, .crc = 0xCA}; void main(void) { for(;;) { asm("nop"); } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 19 января Опубликовано 19 января · Жалоба 9 часов назад, Юрий48 сказал: Есть структура, расположенная не в main.c А где она расположена? И что вы понимаете под термином "расположена"? И что значит "есть структура"? В приведенном вами коде есть объявление типа. Ни объявления (declaration), ни определения (definition) переменной, способной хранить этот тип, мы не видим (https://www.cprogramming.com/declare_vs_define.html). 9 часов назад, Юрий48 сказал: с синтаксисом явно не дружу. Откройте для себя заголовочные (header) файлы. Описание структуры вам нужно поместить в такой файл и включить этот файл в main.c и в тот файл, где определена переменная с типом этой структуры. Объявление переменной можно поместить либо в заголовочный файл либо в main.c. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Юрий48 0 19 января Опубликовано 19 января (изменено) · Жалоба В 19.01.2024 в 10:11, Сергей Борщ сказал: А где она расположена? И что вы понимаете под термином "расположена"? И что значит "есть структура"? В приведенном вами коде есть объявление типа. Ни объявления (declaration), ни определения (definition) переменной, способной хранить этот тип, мы не видим Теперь понимаю, что вопросы совершенно резонные. Нашёл где дано определение или объявление (пока ещё не знаю как правильно) и в отладчике смог посмотреть что в них. Спасибо за ссылки, буду постепенно разбираться, а то, конечно, стыдоба - и вопрос правильно задать не могу. Хотя если бы я мог задать его правильно, то и задавать бы его было не надо. Изменено 19 января пользователем Юрий48 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaxiMuz 0 9 апреля Опубликовано 9 апреля (изменено) · Жалоба Приветствую! Использую STM32CubeIDE ver.1.13.1 Сталкнулся с такой проблемой. Есть проектик, он нормально компилиться. Но при добавлении файла с кодом и его хидера (user_lib.c и user_lib.h), начинает ругаться на совершенно другой хидер (extend_typedef.h) extend_typedef.h добавляется в исходники: main.c stm32f1xx_it.c program.c и добавляемый файл: user_lib.c Файл user_lib.c : #include "stm32f1xx_it.h" #include "extend_typedef.h" u32 beg_time, sdelay=0; u8 bgtim_stat=0; /*------------------------------------------------------------------------------------------------*/ /* start software background timer (bgtimer) */ /* delay in ms */ void start_bgtimer(u32 delay) { beg_time=stCounter; sdelay = delay; bgtim_stat=1; } /*------------------------------------------------------------------------------------------------*/ /* if program bgtimer not elapsed = 1 */ /* else =0 */ u8 check_bgtimer(void) { if (bgtim_stat) if ((stCounter - beg_time)>=sdelay ) bgtim_stat=0; return bgtim_stat; } Файл user_lib.h : #ifndef USER_LIB_H_ #define USER_LIB_H_ void start_bgtimer(u32); u8 check_bgtimer(void); #endif /* USER_LIB_H_ */ Когда удаляю эти два файла из проекта, проблема исчезает. Думаю может я чтото незнаю про использование структуры программы по куб ? Кто что может подсказать ? Изменено 9 апреля пользователем MaxiMuz Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 16 9 апреля Опубликовано 9 апреля · Жалоба #include <stdint.h> Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться