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

.crz

Участник
  • Постов

    12
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. TCP сервер на stm32

    Здравствуйте. Предлагаю посмотреть Cyclone TCP https://www.oryx-embedded.com/products/CycloneTCP В репозитории есть готовые примеры, так что старт будет довольно легким.
  2. В open версии гляньте файл common/os_port_posix.c
  3. посмотрите Oryx Cyclone TCP, вроде есть поддержка posix
  4. Довольно простой парсер (взято отсюда: http://we.easyelectronics.ru/electro-and-p...ttp-i-cgi.html) char *url, *p, *params, // Разбираем URL на путь и параметры if((params = strchr(url, '?'))) *(params++) = 0; // Разбираем параметры while(params) { // Смотрим где заканчивается параметр if((p = strchr(params, '&'))) *(p++) = 0; // Разбираем параметр на имя и значение name = params; if((value = strchr(name, '='))) *(value++) = 0; // Параметр = led (on/off)? if( (strcmp(name, "led") == 0 ) && value ) { if(strcmp(value, "on") == 0) led_on() else if(strcmp(value, "off") == 0) led_off() } // Параметр = lang (en/ru)? else if( (strcmp_P(name, PSTR("lang")) == 0) && value ) { if(strcmp_P(value, "en") == 0) lang_ru = 0; else if(strcmp_P(value, "ru") == 0) lang_ru = 1; } // Переходим к следующему параметру params = p; }
  5. Смена версии gcc до 6.3.1 не повлияла на результаты. launch.json: {"configurations": [ { "name": "OpenOCD & gdb", "type": "cppdbg", "request": "launch", "program": "${workspaceRoot}/build/Src/Aurora", "args": [], "stopAtEntry": false, "cwd": "${workspaceRoot}", "environment": [], "externalConsole": false, "logging": { "engineLogging":false, "moduleLoad": true, "exceptions": true }, "preLaunchTask": null, "osx": { "MIMode": "gdb", "miDebuggerPath":"/opt/local/arm-toolchain/bin/arm-none-eabi-gdb", "setupCommands": [ {"text":"-target-select remote localhost:3333"}, {"text":"-interpreter-exec console \"monitor reset halt\""}, {"text":"-interpreter-exec console \"monitor continue\""} ], "launchCompleteCommand": "exec-continue", "logging": {"engineLogging":true} } } ] } Версии VS Code 1.13.1, ms-vscode.cpptools 0.11.4 Так понимаю, проблема в реализации MIEngine под OSX.
  6. Прошу сменить мой ник на timurey
  7. У меня так и не работает полноценно отладка: во время работы программы не получается остановить выполнение нажатием на кнопку "пауза". во время работы программы не получается установить брейкпоинты. Точнее, на них не происходит остановка выполнения. иногда не выключается с первого раза отладка. Со второго раза отладка останавливается, но к openocd после этого не подключиться - приходится перезапускать openocd. Через telnet команда halt отрабатывает нормально. Так понял, на все эти проблемы открыты issue на https://github.com/Microsoft/vscode-cpptools STM32f205, gcc-4.8.4, cmake, vs code 1.13.1, openocd-0.10.0, macOS 10.12.5
  8. Смените пожалуйста ник на timurey С уважением, timurey
  9. Определяю ножки и порты дефайнами: #define IPNUT_PIN_0 GPIO_PIN_0 #define IPNUT_PORT_0 GPIOA #define IPNUT_PIN_1 GPIO_PIN_3 #define IPNUT_PORT_1 GPIOA #define IPNUT_PIN_2 GPIO_PIN_0 #define IPNUT_PORT_2 GPIOB #define IPNUT_PIN_3 GPIO_PIN_1 #define IPNUT_PORT_3 GPIOB #define IPNUT_PIN_4 GPIO_PIN_0 #define IPNUT_PORT_4 GPIOC , объединяю их в массивы: const uint16_t inputPin[]={IPNUT_PIN_0, IPNUT_PIN_1, IPNUT_PIN_2, IPNUT_PIN_3, IPNUT_PIN_4, IPNUT_PIN_5, IPNUT_PIN_6, IPNUT_PIN_7, IPNUT_PIN_8, IPNUT_PIN_9, IPNUT_PIN_10, IPNUT_PIN_11, IPNUT_PIN_12, IPNUT_PIN_13, IPNUT_PIN_14, IPNUT_PIN_15}; const GPIO_TypeDef* inputPort[]={ IPNUT_PORT_0, IPNUT_PORT_1, IPNUT_PORT_2, IPNUT_PORT_3, IPNUT_PORT_4, IPNUT_PORT_5, IPNUT_PORT_6, IPNUT_PORT_7, IPNUT_PORT_8, IPNUT_PORT_9, IPNUT_PORT_10, IPNUT_PORT_11, IPNUT_PORT_12, IPNUT_PORT_13, IPNUT_PORT_14, IPNUT_PORT_15}; инициализацию делаю с помощью HAL: GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.Pin = inputPin[gpioNum]; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = gpioContext[gpioNum].pull; GPIO_InitStruct.Speed = GPIO_SPEED_LOW; HAL_GPIO_Init(inputPort[gpioNum], &GPIO_InitStruct); читаю и устанавливаю через bit-banding: #define GPIO_PIN_ISTATE(PORT,PIN) &(*(__I uint32_t *)(PERIPH_BB_BASE + ((((uint32_t)&((PORT)->IDR)) - PERIPH_BASE) << 5) + ((PIN) << 2))) #define GPIO_PIN_ISET(PORT,PIN) (*(__I uint32_t *)(PERIPH_BB_BASE + ((((uint32_t)&((PORT)->ODR)) - PERIPH_BASE) << 5) + ((PIN) << 2))) #define IPNUT_PIN_STATE(a) GPIO_PIN_ISTATE(inputPorts[a], inputPin[a]) #define IPNUT_PIN_SET(a) GPIO_PIN_ISET(inputPorts[a], inputPin[a]) const uint32_t * inputState[]={ GPIO_PIN_ISTATE(IPNUT_PORT_0, (IPNUT_PIN_0)>>1), GPIO_PIN_ISTATE(IPNUT_PORT_1, (IPNUT_PIN_1)>>1), GPIO_PIN_ISTATE(IPNUT_PORT_2, (IPNUT_PIN_2)>>1), GPIO_PIN_ISTATE(IPNUT_PORT_3, (IPNUT_PIN_3)>>1), GPIO_PIN_ISTATE(IPNUT_PORT_4, (IPNUT_PIN_4)>>1), GPIO_PIN_ISTATE(IPNUT_PORT_5, (IPNUT_PIN_5)>>1), GPIO_PIN_ISTATE(IPNUT_PORT_6, (IPNUT_PIN_6)>>1), GPIO_PIN_ISTATE(IPNUT_PORT_7, (IPNUT_PIN_7)>>1), GPIO_PIN_ISTATE(IPNUT_PORT_8, (IPNUT_PIN_8)>>1), GPIO_PIN_ISTATE(IPNUT_PORT_9, (IPNUT_PIN_9)>>1), GPIO_PIN_ISTATE(IPNUT_PORT_10, (IPNUT_PIN_10)>>1), GPIO_PIN_ISTATE(IPNUT_PORT_11, (IPNUT_PIN_11)>>1), GPIO_PIN_ISTATE(IPNUT_PORT_12, (IPNUT_PIN_12)>>1), GPIO_PIN_ISTATE(IPNUT_PORT_13, (IPNUT_PIN_13)>>1), GPIO_PIN_ISTATE(IPNUT_PORT_14, (IPNUT_PIN_14)>>1), GPIO_PIN_ISTATE(IPNUT_PORT_15, (IPNUT_PIN_15)>>1)}; if (*inputState[i]) { ... }
  10. Так вы геофизику изобретаете. Посмотрите https://ru.wikipedia.org/wiki/Электроразведка
  11. Согласен. Баги не случались, так как использую только ____TIMESTAMP____
  12. Понимаю, что топикстартер решил вопрос, но вдруг кому пригодится: Для eclipse + gcc + os x/linux/unix/bsd файл date_time.sh (включен в свойствах проекта в pre-build steps): #!/bin/sh date +"#define __YEAR__ %Y" > ../include/build_time.h date +"#define __MONTH__ %m" >> ../include/build_time.h date +"#define __DAY__ %d" >> ../include/build_time.h date +"#define __HOURS__ %H" >> ../include/build_time.h date +"#define __MINUTES__ %M" >> ../include/build_time.h date +"#define __SECONDS__ %S" >> ../include/build_time.h date +"#define ____TIMESTAMP____ %s" >> ../include/build_time.h date +"#define __DAY_OF_WEEK__ %w" >> ../include/build_time.h При прошивке из файла подставляется ____TIMESTAMP____ в функцию инициализации RTC.
×
×
  • Создать...