889 / 724 / 447
Регистрация: 13.07.2015
Сообщений: 2,271
1

Stm32f4 CooCox sscanf останавливает программу

04.03.2019, 13:14. Показов 1232. Ответов 8
Метки нет (Все метки)

Пытаюсь использовать эту функцию в проекте. Сначала добавляю в проект retarget printf, он начинает ругаться на _sbrk undefined, и нужно добавить файл с заглушками syscalls.c, я эту функцию просто проверил сначала на f103 blue pill и именно таким методом она заработала, для f407 все повторяю, и не работает, правда не знаю файл syscalls такой же должен быть или нет? брал его же и также пробовал из проектов кубика файл, не помогло, правда там нет чипа именно моей серии.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.03.2019, 13:14
Ответы с готовыми решениями:

Stm32f4 + HD44780 + Coocox
Здравствуйте! Совсем недавно начал осваивать Stm32f4 и столкнулся с проблемой отсутствия готовых...

[РЕШЕНО] STM32F4 HardFault и CooCox
Добрый вечер! Как найти причину HordFault в STM32F4? Среда отладки CooCox

"внешние функции" + stm32f4 + CooCox
Приветствую. Может кто скажет с ходу причину странного зависания контроллера при выполнении...

STM32F4 Float point & CooCox
Заметил странное поведение кокоса. Прописываю переменную dT ftoot dT = 0.01f; или ftoot dT =...

8
1961 / 1275 / 130
Регистрация: 04.01.2010
Сообщений: 4,607
04.03.2019, 20:39 2
интересно, в KEIL printf вешает проект, если не включить использование stdlib (галочку) в настройках проекта. При этом все компилируется. Но не стартует...
Вообще, sscanf() же работает со строкой, верно? То есть никаких сдерживающих факторов быть не должно. Единственное, что может ломать, это отсутствие в проекте назначенной heap.
0
889 / 724 / 447
Регистрация: 13.07.2015
Сообщений: 2,271
04.03.2019, 21:21  [ТС] 3
а как его указать, вот syscalls.c который работает на 103, но не работает на 407
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/**************************************************************************//*****
 * @file     stdio.c
 * @brief    Implementation of newlib syscall
 ********************************************************************************/
 
#include <stdio.h>
#include <stdarg.h>
#include <sys/types.h>
#include <sys/stat.h>
 
#undef errno
extern int errno;
extern int  _end;
 
caddr_t _sbrk ( int incr )
{
  static unsigned char *heap = NULL;
  unsigned char *prev_heap;
 
  if (heap == NULL) {
    heap = (unsigned char *)&_end;
  }
  prev_heap = heap;
 
  heap += incr;
 
  return (caddr_t) prev_heap;
}
 
int link(char *old, char *new) {
return -1;
}
 
int _close(int file)
{
  return -1;
}
 
int _fstat(int file, struct stat *st)
{
  st->st_mode = S_IFCHR;
  return 0;
}
 
int _isatty(int file)
{
  return 1;
}
 
int _lseek(int file, int ptr, int dir)
{
  return 0;
}
 
int _read(int file, char *ptr, int len)
{
  return 0;
}
 
int _write(int file, char *ptr, int len)
{
  return len;
}
 
void abort(void)
{
  /* Abort called */
  while(1);
}
          
/* --------------------------------- End Of File ------------------------------ */
0
Модератор
Эксперт по электронике
8759 / 6548 / 888
Регистрация: 14.02.2011
Сообщений: 22,969
04.03.2019, 22:47 4
Цитата Сообщение от Уф Посмотреть сообщение
_end;
где определен?
0
Эксперт .NET
8876 / 5656 / 1346
Регистрация: 25.05.2015
Сообщений: 17,178
Записей в блоге: 14
05.03.2019, 06:24 5
Уф,
Цитата Сообщение от Voland_ Посмотреть сообщение
Вообще, sscanf() же работает со строкой, верно? То есть никаких сдерживающих факторов быть не должно.
Он работает со строкой формата, которую надо разбирать. Эта фича в библиотеках МК обычно не используется по умолчанию, т.к. жрёт много памяти. Вывод float и int на OLED
0
889 / 724 / 447
Регистрация: 13.07.2015
Сообщений: 2,271
05.03.2019, 07:24  [ТС] 6
где _end определен не знаю, может в одном из инклуженых выше файлов? у меня просто задача управлять устройсвтом по ком порту, я это сделал, но вот нужно командой записать параметр, например
"write -55\r\n"
число может быть отрицательным или положительным
команды ловлю просто
C
1
2
3
if(strncmp(buf,"write",5)==0){
   //тут мне надо отрезать число и положить его в инт или вывести сообщение что оно неверное (содержит буквы там или точки или просто не указано)
}
0
Модератор
Эксперт по электронике
8759 / 6548 / 888
Регистрация: 14.02.2011
Сообщений: 22,969
05.03.2019, 07:31 7
Цитата Сообщение от Уф Посмотреть сообщение
где _end определен не знаю,
ну так поищи
это адрес в памяти где начинается куча, и сравни для 103 и 407
и посмотри размер кучи, обычно это бывает в стартовых файлах(ассемблерных,расширение S)
0
1961 / 1275 / 130
Регистрация: 04.01.2010
Сообщений: 4,607
05.03.2019, 09:48 8
Цитата Сообщение от Уф Посмотреть сообщение
проверил сначала на f103 blue pill и именно таким методом она заработала, для f407 все повторяю, и не работает,
Вы должны использовать стартап F407 - проверьте что это так. Возможно, при переносе кода вы что-то лишнее перенесли. Например, файл *.S, в котором (обычно) задаются все настройки чипа. Ну, или возможно, вы перенесли какие-то настройки с F103, которые не совместимы. Платформы не обязаны совпадать. Соответственно, где-то что-то "уехало"
0
889 / 724 / 447
Регистрация: 13.07.2015
Сообщений: 2,271
05.03.2019, 12:22  [ТС] 9
я просто создал новый пустой проект под 407, coocox сам все файлы добавляет в него нужные, потом только syscall.c подкинул и все. сейчас попробую найти про размеры кучи

Добавлено через 2 часа 8 минут
в дебагере показывает _end = 0, число получилось вытащить функцией strtol, она работает без ошибок, остался только спортивный интерес, у кого есть CooCox и может собрать проект, проверьте работает ли у вас
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.03.2019, 12:22
Помогаю со студенческими работами здесь

STM32F4. Задержки на таймере в CooCox
Необходини задержка на 1ms. Я долгое время пользовался задержками на Systysk, как в ST-шных...

STM32F4-Discovery Audio playback в CooCox
Здравствуйте форумчане, решил разобраться с примером от ST Oudyo_playback_omd_record для...

Помогите откомпилировать на CooCox CoIDE STM32F4
Здравствуйте. как правильно настроить CooCox CoIDE на STM32F4DISCOVERY. #import &quot;stm32f4xx.h&quot;...

USB Host для флэшки на Coocox (STM32F4)
Хочу поинтересоваться - делал ли кто? Готовых примеров под кокос я не нашёл Вот перенёс с IAR-а -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru