Чт окт 14, 2021 09:06:14
Чт окт 14, 2021 09:22:48
Чт окт 14, 2021 09:36:14
Чт окт 14, 2021 09:38:25
Чт окт 14, 2021 09:59:38
Чт окт 14, 2021 10:07:10
Это еще мало.Eddy_Em писал(а):Некоторые кривые реализации вообще чуть ли не 2кБ отжирают!
Ну на мега8 malloc занимает где-то 350 байт кода, и весь код охота уместить в 2кило кода в месте с таблицей на 3кило флеша, что бы еще места осталось.Eddy_Em писал(а):Вы туда еще malloc запихайте ради полного "Щассья".
Чт окт 14, 2021 10:34:12
Для отладки можно. Быстрее нагородить форматный вывод в UART, чем в 100500-й раз реализовывать вывод в захардкоженном формате.printf - очень жирная фиговина.
Как связаны аллокаторы и MMU? Распределением памяти программа занимается самостоятельно в виртуальном линейном пространстве. Доступа к MMU у нее нет.Что до алллокаторов памяти, то без MMU они нафиг не нужы, т.к. тоже через одно место делаются и вносят лишний оверхед.
чтобы отобразить и прочитать вот так? Как на рисунке.
UART_puts("ID OCT-");
UART_write(&str[18], 5);
UART_puts("ID OCT-");
str[23] = 0; //терминирующий ноль
UART_puts(&str[18]);
Некоторые кривые реализации вообще чуть ли не 2кБ отжирают!
Это еще мало.
Чт окт 14, 2021 10:53:07
Чт окт 14, 2021 14:11:03
если нужна только печать HEX, то, наверно, можно сэкономить 2 кило флеш с 2Мб, будет оправдано.Eddy_Em писал(а):Что до печати HEX
Чт окт 14, 2021 14:43:11
Чт окт 14, 2021 16:40:59
Пт окт 15, 2021 08:32:16
do{
uint8_t temp = val & 0xFF;
buf[1] = temp & 0x0F;
if(buf[1] < 10)buf[1] += '0'; else buf[1] = buf[1] - 0x0A + 'A';
buf[0] = temp >> 4;
if(buf[0] < 10)buf[0] += '0'; else buf[0] = buf[0] - 0x0A + 'A';
buf -= 2;
val >>= 8; //не все контроллеры любят сдвиг на нецелое число, поэтому сдвигаем на байт
}while(val);
do{
buf[0] = val % base;
if(buf[0] < 10)buf[0] += '0'; else buf[0] = buf[0] - 0x0A + 'A';
buf--;
val /= base;
}while(val);
Пт окт 15, 2021 10:21:43
Пт окт 15, 2021 10:39:38
Пт окт 15, 2021 13:23:59
Пт окт 15, 2021 14:02:59
По чему нельзя использовать?Marlin Boardley писал(а):Лучше ли не использовать типы char в программировании stm32
а ты, ТС, загнал туда, в 24c02, эти символы, что бы их потом прочитать, или, хотя бы терминал в HEX переключил?Marlin Boardley писал(а):если вы хотите прочитать что-то из 24c02, лучше не использовать %c
Пт окт 15, 2021 14:04:58
printf("%10.3f\n", f);
Пт окт 15, 2021 14:33:34
Marlin Boardley писал(а):Лучше ли не использовать типы char в программировании stm32 или embedded?
Пт окт 15, 2021 14:36:36
Пт окт 15, 2021 15:05:44