User_1

Members
  • Публикации

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

  • Посещение

Репутация

4 Обычный

О User_1

  • Звание
    Новенький

Информация

  • Город
    Казань

Электроника

  • Стаж в электронике
    6-10 лет
  • Сфера радиоэлектроники
    Микроконтроллеры
  1. Всем доброго времени суток. В небольшую организацию требуется инженер-электронщик. Задачи: ремонт блоков управления автопромышленности, участие в разработке различных устройств для автомобилей, написание ПО для микроконтроллеров и ПК. Требования к базовым навыкам небольшие: основы программирования, микроконтроллеров, базовый уровень знаний в радиоэлетронике. Должность предусматривает обучение. Однако люди, не имеющие опыта в радиоэлектронике совсем - не рассматриваются. Заработная плата - от 25 до 90 тр. Будет зависеть от производительности, навыков и загруженности. Работа в офисе, удаленная не рассматривается. Однако, если у кого-то будет желание предложить свою помощь в виде "удаленного разработчика" на будущее - просьба писать в личку, по телефону не звонить. Всем заранее спасибо за внимание Мой телефон: +78432971087. Ильдар.
  2. Отправка строки в UART в stm32f030

    У меня опыта маловато, потому при любом косяке в первую очередь думаю, что это я коряво написал А код сгенерированный кубом, как вы могли заметить, стараюсь не использовать - только SPL либо напрямую с регистрами
  3. Отправка строки в UART в stm32f030

    Так и я о том, с точки зрения языка код абсолютно рабочий Ну серьёзно, единственное отличие которое вижу - в while((*data)) {...} двойные скобки. Разве это что-то даёт? Всё остальное есть в примерах выше, я их даже не переписывал, а тупо копировал и проверял - не работало. Сейчас, увы, проверить не могу, ибо всё снёс и установил заново
  4. Отправка строки в UART в stm32f030

    Код в точности как мой только читать сложнее) С моими версиями компилятора и среды такой код работает только если включить оптимизацию. С выключенной не работает
  5. KiCad

    Чтобы не плодить темы спрошу здесь. Здравствуйте) Подскажите пожалуйста, как в KiCAD сделать вырез в полигоне в форме текста? И вообще возможно ли это?
  6. Отправка строки в UART в stm32f030

    У нас с вами разные представления о серьёзных проектах)
  7. Отправка строки в UART в stm32f030

    Понятное дело Если уж говорить об альтернативах - на мой взгляд, прощё сесть и один раз настроить Eclipse. Хорошо настроенный он ничуть не уступает ни Keil ни IAR, а по многим параметрам и превосходит их ещё раз, давайте не будем устраивать спор на тему лучшей IDE
  8. Отправка строки в UART в stm32f030

    Это первый коммерческий проект на F0, в основном использую F105 (там два модуля CAN) и присматриваюсь к F40х. 32кб хватит чтобы попробовать среду, для серьёзных проектов этого мало
  9. Отправка строки в UART в stm32f030

    Keil стоит неоправданно дорого, а пользоваться пиратским софтом совесть не позволяет давайте не будем разводить дискуссии на тему какая среда лучше
  10. Отправка строки в UART в stm32f030

    В общем получить ассемблерный листинг прямо из CoIDE мне не удалось, однако, сравнивая получаемые в результате компиляции бинарники (приложил) увидел кое-какие отличия. Я сравнивал варианты когда в функцию передаю массив (вариант 1) и строку (вариант 2). Единственным существенным отличием оказалась команда по адресу 0х724. В варианте с массивом там была команда C4 0D 00 08, а в варианте со строкой - D1 0D 00 08. Что это за команды и что они делают я не знаю, но если в мк залить прошивку с передачей в функцию строки, а потом с помощью ST-Link Utility изменить один этот байт - мк оживает, отладка работает нормально, "Hello World!" передаётся. Выходит, проблема в компиляторе (у меня версия 5.4 2016q2) или в самом кококсе (у меня версия 1.7.8). Возможно, само ядро микроконтроллера некорректно обрабатывает эту команду. Проект тоже приложил в архиве, если кому интересно - попробуйте. Вдруг у вас другая версия CoIDE при той же версии компилятора или наоборот. Файлы в приложении: В архиве сам проект Array.bin - файл, полученный при компиляции версии, где в функцию передаётся массив String.bin - файл, полученный при компиляции версии, где в функцию передаётся строка (непосредственно то, что выдаёт компилятор) String_ok.bin - файл String.bin, но в нём я вручную заменил команду D1 0D 00 08 на C4 0D 00 08. Каждый из этих файлов можно залить в мк и увидеть, что первый и третий работают, второй - нет. Так же легко увидеть, что второй и третий отличаются всего на один байт (как раз та команда). Юарт здесь настроен на скорость 19200 Напомню, проект для камня STM32F030F4P6 String_ok.bin Array.bin String.bin STM32F030_USART.rar
  11. Отправка строки в UART в stm32f030

    Спасибо)
  12. Отправка строки в UART в stm32f030

    Вот содержимое памяти когда передаю строку (Send_to_UART("Hello World!");): А вот содержимое памяти, когда передаю в функцию массив (char hello[] = {"Hello World!"}; Send_to_UART(hello);): Верхний вариант не работает, нижний - работает
  13. Отправка строки в UART в stm32f030

    Спасибо) А есть способ это обойти средствами SPL или вручную?
  14. Отправка строки в UART в stm32f030

    Просто насколько я понимаю, строка в Си - это тот же массив символов и когда я вот так передаю строку - передаётся указатель на первый элемент этого массива. Для строк определённой длины ((4xN)+3) работает же. Если дело в кратности длины строки четырём байтам - звучит убедительно Всё несколько иначе: он не успевает ничего передать просто потому что даже инициализацию не проходит. То есть я ставлю breakpoint на самом входе в main(), даже до инициализации, включаю отладку - и он зависает не дойдя до этой точки. И, повторюсь: если передать "Hello World!" - ничего не работает, а если "HelloWorld!" (то есть без пробела) - всё работает, а содержимое памяти мк отличается ровно на один байт - как раз этот пробел (но дело не именно в пробеле, если написать Hello_World! или HelloWWorld! - тоже не работает) В хале всё работает, но код ровно вдвое больше)
  15. Отправка строки в UART в stm32f030

    Это не для константы, const означает, что функция может читать данные, на которые указывает передаваемый ей указатель, но не может изменять их. Пробовал, никакой разницы Если в коде, с которым мк зависает, закомментировать вызов функции USART_Init() - мк не зависает (но юарт не работает, понятное дело). Инициализация простейшая, тут почти все значения по умолчанию: RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx; USART_Init(USART1, &USART_InitStructure); USART_Cmd(USART1, ENABLE);