Alex Опубликовано 1 июня, 2017 Поделиться Опубликовано 1 июня, 2017 Честно - не знаю на что она рассчитана. Покажите её реализацию, и я скажу что она делает. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Darth_Vader Опубликовано 1 июня, 2017 Поделиться Опубликовано 1 июня, 2017 4 минуты назад, Электронщик сказал: Получается что функция Hal uart transmit рассчитана для вывода текстового байта? Чего? Байт он и есть байт. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
Alex Опубликовано 1 июня, 2017 Поделиться Опубликовано 1 июня, 2017 4 минуты назад, Электронщик сказал: Я в гугле и искал но нигде не нашел, там либо функции библиотек stl используют, либо библиотеку переделывают, что не хотелось бы. Речь не о библиотеках. Речь о правильном использовании массивов. Судя по Вашему коду, Вы о них вообще ничего не знаете, но пытаетесь их применить. Дак почему бы не почитать про них ? 1 минуту назад, Darth_Vader сказал: Чего? Байт он и есть байт. Ну выразился человек неправильно, что сразу такое лицо делать ? Просто тяжело разговаривать на темы, в которых некомпетентен. Ничего страшного... 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
Электронщик Опубликовано 1 июня, 2017 Поделиться Опубликовано 1 июня, 2017 10 минут назад, Darth_Vader сказал: Чего? Байт он и есть байт. Я имел ввиду для вывода char ведь char же однобайтовая переменная которая может хранить одну букву по таблице ASCii 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Darth_Vader Опубликовано 1 июня, 2017 Поделиться Опубликовано 1 июня, 2017 Отвыкайте использовать эти архаичные char и int - от них только путаница. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Электронщик Опубликовано 1 июня, 2017 Поделиться Опубликовано 1 июня, 2017 2 часа назад, dosikus сказал: Мда, калокуб, не только не помогает но и отучает думать... int16_t adc_rezult ; char text_buf[8]; adc_rezult =3267; sprintf(text_buf,"%d\n",adc_rezult); Usart_string(text_buf); На функцию Usart_string(text_buf); IAR ругался, поэтому использовал функцию от библиотеки HAL, действительно размерность посылки почему - то явно в байтах нужно указывать, а не размером переменной или массива, хотя в codevision и в ардуино ИДЕ, все всегда обьявляли размером посылки размер той же переменной. Теперь и АЦП выводит все как нужно). 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
dosikus Опубликовано 1 июня, 2017 Поделиться Опубликовано 1 июня, 2017 (изменено) 44 минуты назад, Электронщик сказал: пытался просто переменную в string переконвертировать А в моем коде что по вашему? Вам надо вместо облегчалок изучать С ... На Usart_string естественно будет ругаться , ибо это самописный вывод нультерминэйтед строки ... Изменено 1 июня, 2017 пользователем dosikus 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
GOR23 Опубликовано 1 июня, 2017 Поделиться Опубликовано 1 июня, 2017 Добрый день. Работаю с камнем stm32f103rc. Использую HAL. Принимаю по uart 3 данные с gps модуля. И на первом же байте выскакивает overrun error, скорость всего 9600... Инициализация уарта: static void MX_USART3_UART_Init(void) { huart3.Instance = USART3; huart3.Init.BaudRate = 9600; huart3.Init.WordLength = UART_WORDLENGTH_8B; huart3.Init.StopBits = UART_STOPBITS_1; huart3.Init.Parity = UART_PARITY_NONE; huart3.Init.Mode = UART_MODE_TX_RX; huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart3.Init.OverSampling = UART_OVERSAMPLING_16; if (HAL_UART_Init(&huart3) != HAL_OK) { Error_Handler(); } HAL_NVIC_EnableIRQ(USART3_IRQn); } 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
dosikus Опубликовано 1 июня, 2017 Поделиться Опубликовано 1 июня, 2017 GOR23, для начала убедитесь что тактовая равна расчетной ... 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
GOR23 Опубликовано 1 июня, 2017 Поделиться Опубликовано 1 июня, 2017 (изменено) Чудотворный форум. Только напишу о проблеме через 5 минут разберусь, а до того как написать пол дня сидел. В общем проблема не в тактировании, а в кривой обработке ошибок уарта в HAL, ну и в моих руках от части). Получается я включал прием по уарт когда gps модуль уже передаёт пакеты, естественно попасть на начало пакета шансов мало. Было примерно так: прерывания включаются на средине байта, байт заканчивается раньше чем нужно, начинается новый, от сюда и оверран (логично бы было получить frame error, но выскочил именно оверран). А дальше косяки HAL. Флаги ошибок сбрасываются, и состояние уарта ставится READY. Но само прерывание на приём не отключается. Оно срабатывает, проверяет статус уарт (там должно быть или HAL_UART_STATE_BUSY_RX или HAL_UART_STATE_BUSY_RX_TX). Но обработчик ошибок поменял его на READY. Функция которая обрабатывает приём возвращает, что уарт занят, ну и так до бесконечности. Вот такая вот беда, так что имейте в виду. Который раз доказывает что хал сыроват, да и избыточен сильно... Изменено 1 июня, 2017 пользователем GOR23 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
GOR23 Опубликовано 2 июня, 2017 Поделиться Опубликовано 2 июня, 2017 (изменено) День добрый. Ещё один вопрос назрел. Работаю с камнем stm32f103rc в эклипсе. sprintf не выводит float и double. Вот такие варианты: sprintf(debug_TxBuffer, "My float: %f\r\n", floatNumber); sprintf(debug_TxBuffer, "My float: %.6f\r\n", floatNumber); sprintf(debug_TxBuffer, "My float: %g\r\n", floatNumber); Все выводят My float: \r\n. Как победить никто не в курсе? Изменено 2 июня, 2017 пользователем GOR23 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 2 июня, 2017 Поделиться Опубликовано 2 июня, 2017 В настройках компилятора нужно смотреть. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
GOR23 Опубликовано 2 июня, 2017 Поделиться Опубликовано 2 июня, 2017 В IAR где то находил реализацию sprintf, printf. А тут вроде нету такого, дислект только выбрать можно, стоит с99. Можно конечно в ручную какой то параметр дописать, знать бы какой. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 2 июня, 2017 Поделиться Опубликовано 2 июня, 2017 А компилятор какой ? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
GOR23 Опубликовано 2 июня, 2017 Поделиться Опубликовано 2 июня, 2017 (изменено) Toolchain Ac6 STM32 MCU GCC, builder GNU Make Builder, compieler MCU GCC Compieler. PS: Нашёл: project properties > C/C++ Build > Setings > Tool Settings (TAB) > MCU GCC Linker > Miscellaneous > Linker flags должно быть так -specs=nosys.specs -specs=nano.specs -u _printf_float. У меня -u _printf_float не было. Изменено 2 июня, 2017 пользователем GOR23 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 2 июня, 2017 Поделиться Опубликовано 2 июня, 2017 Чё то не гуглится ничего... 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterElectric Опубликовано 2 июня, 2017 Поделиться Опубликовано 2 июня, 2017 В 30.05.2017 в 12:16, Электронщик сказал: Блин этот СТМ, аж устал четыре дня с ним разбираюсь, с утра до вечера, АВР рулит))). Ну хорошо, на чем писали под АВР? с регистрами работали? а теперь наверное HAL осваиваете? ну так у STM32 есть много регистров работайте с ними, разницы совсем никакой нет, даже наоборот в STM32 все регистры сгруппированы и структурированы, все очень удобно, откройте Reference manual и все, там все есть куда чего и зачем. В 30.05.2017 в 17:06, mail_robot сказал: никуда не надо добавлять. Надо преобразовать данные из АЦП в строку при помощи sprintf, а потом уже эти данные отправить в UART. Это вам не ардуино Обьявляете массив под строку, потом в этот массив загоняете sprintf(data, "%d\n", adc_data), потом массив передаем в UART по всем правилам. Получаем десятичное значение своего ацп вообще вопросы очень какие то дилетантские и к STM мало отношения имеют. Вам надо язык подковать для начала. А то за ручку водить скоро надоест Лучше уж структуры гонять по сети, чем нагружать МК такими задачами. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Darth_Vader Опубликовано 2 июня, 2017 Поделиться Опубликовано 2 июня, 2017 Мне вот что-то совсем не хочется снова с регистрами работать на STM32, а HAL как раз предлагает более удобную модель. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterElectric Опубликовано 2 июня, 2017 Поделиться Опубликовано 2 июня, 2017 7 часов назад, Alex сказал: Чё то не гуглится ничего... http://www.openstm32.org/System+Workbench+for+STM32 13 минуты назад, Darth_Vader сказал: Мне вот что-то совсем не хочется снова с регистрами работать на STM32, а HAL как раз предлагает более удобную модель. Ну лень она такая) я вот переходил с АВР и открыв один раз SPL больше туда не заглядывал. а HAL это вообще ппц просто. И куб тоже туда. Так нужно выучить этот HAL + к этому еще и ядро ARM + периферию STM32. А так мороки меньше и понимания больше. Но я далеко не все использую. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Darth_Vader Опубликовано 3 июня, 2017 Поделиться Опубликовано 3 июня, 2017 Причем тут лень? Если на то пошло и программирование на языках высокого уровня это проявление лени. Фигачили бы все в машинных кодах... 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
mail_robot Опубликовано 3 июня, 2017 Поделиться Опубликовано 3 июня, 2017 создателя С надо вообще расстрелять по такому случаю шеренгой асмописателей. 18 часов назад, MasterElectric сказал: к этому еще и ядро ARM и много там учить? 18 часов назад, MasterElectric сказал: Лучше уж структуры гонять по сети, чем нагружать МК такими задачами какими еще структурами, любезный? Человеку надо строчку в UART загнать и все. У него нет никакой сети. И это прямейшая задача МК 0 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterElectric Опубликовано 3 июня, 2017 Поделиться Опубликовано 3 июня, 2017 Не ну если именно в текстовом виде то да, но вначале человек пытался просто отправить число. Может не правильно выразился массив байт, данные в котором организованы определенным образом. Ну и не сеть, а интерфейс. Буду соблюдать терминологию. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
mail_robot Опубликовано 4 июня, 2017 Поделиться Опубликовано 4 июня, 2017 ну так то обычно массивом и отправляется строка. Массив символов + ДМА (опционально). Проще варианта еще не придумали для STM 0 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterElectric Опубликовано 4 июня, 2017 Поделиться Опубликовано 4 июня, 2017 Ну на счет проще я не уверен, по крайней мере для себя. Вот представьте что нужно получать данные (команды) на стороне МК (разные, разных типов (с плавающей точкой)). Парсить строку довольно сложно и накладно по ресурсам, да человеку проще воспринимать данные в текстовом виде, зачем их так представлять для МК, ну раз он работает в двоичной системе счисления, так ему и передавать в двоичной. Я делаю так, я передаю данные в виде структуры. На стороне МК нужно просто создать указатель на структуру, и данному указателю присвоить адрес входного буфера USART. И все теперь мы работаем с данными просто как со структурой. Все очень просто и удобно. Так делают очень многие это очень удобно (есть правда несколько моментов которые нужно учитывать). Да это сложный вариант для новичков, но он самый эффективный в обработке. Лучше один раз понять, чем городить огород и работать с текстовыми данными. Если есть логический анализатор можете проверить сколько времени уйдет на формирование текстовых сообщений. Я лично так делаю если нужно действительно визуализировать данные для пользователя, экраны и т.д. Вот и предложил такой вариант, а в целом каждый пишет как хочет. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
COKPOWEHEU Опубликовано 4 июня, 2017 Поделиться Опубликовано 4 июня, 2017 Знаете почему большинство программ для Linux хранит настройки в обычных текстовых, а не бинарных файлах, хотя их и парсить сложнее, и места занимают больше? Их проще просматривать снаружи, для их изменения не нужно специальных программ. Так и тут: если особых ограничений по скорости обмена нет, проще передавать в текстовом виде. Это позволяет отлаживать простейшими программами, без изобретения хитрых протоколов и систем защиты. Ну а если устройство работает на пределе, то, конечно, оптимизация прежде всего. 0 Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз. Часть моих наработок. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.