1. В сообществе нашего форума Вконтакте создан раздел по продаже электронных компонентов.
    Каждый может продать в нем свои залежавшиеся детали. Подробности здесь.

Вопросы по STM32

Тема в разделе "STM8/STM32", создана пользователем koteika, 17 ноя 2014.

  1. koteika

    koteika В доску свой

    Сообщения:
    769
    Симпатии:
    121
    Род занятий:
    программирование
    Понадобились пины PA13 - PA15 которые используються под JTAG/SWD ...Если я их сделаю обычными входами выходами контроллер будет определяться и прошиваться программатором?

    Код:
     RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPBEN | RCC_APB2ENR_AFIOEN;
     AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE;
    Screenshot - 17.11.2014 - 01:47:13.png
  2. UL7AAjr

    UL7AAjr В доску свой

    Сообщения:
    1.848
    Симпатии:
    313
    Род занятий:
    инженер-программист
    Адрес:
    Алма-Ата
    Должен прошиваться. Программатор ножкой резет дергает, в этот момент производится сброс МК и пины становятся по умолчанию. На стандартные GPIO они-же потом в коде настраиваются.
  3. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.329
    Симпатии:
    352
    Адрес:
    Талгар
    За STM не скажу, но на Меге 16 я JTAG отключил во фьюзах, она без проблем прошивается
  4. TIGER

    TIGER В доску свой

    Сообщения:
    18
    Симпатии:
    4
    Прошивается без проблем, но вот устройство глючно работало. Перекинула на другие пины, все наладилось. Дело было на STM32F4-DISCOVERY.
  5. timsoon

    timsoon В доску свой

    Сообщения:
    374
    Симпатии:
    44
    Род занятий:
    КИПиА, it, и прочее
    Адрес:
    г.Капчагай
    У меня тоже возник вопрос. Рассматривал код с прерываниями по портам ввода. Вопрос: можете подсказать пример кода, где прерывание происходит только когда появляется сигнал на двух лапах сразу?
  6. UL7AAjr

    UL7AAjr В доску свой

    Сообщения:
    1.848
    Симпатии:
    313
    Род занятий:
    инженер-программист
    Адрес:
    Алма-Ата
    А МК какой?
    Если STM 32, то наверное может как-то компараторы приспособить?
  7. Alex

    Alex В доску свой

    Сообщения:
    191
    Симпатии:
    13
    Чет я не смог придумать как без внешних элементов компаратор задействовать для такой задачи :)
    Уж если сильно с двух лап хочется ставьте внешний логический элемент "и". Можно тупо два диода и резистор.
    Хотя я не понимаю что мешает в прерывании по одной лапе проверять состояние другой.
  8. UL7AAjr

    UL7AAjr В доску свой

    Сообщения:
    1.848
    Симпатии:
    313
    Род занятий:
    инженер-программист
    Адрес:
    Алма-Ата
    Что-то я с компараторами погорячился. Не получается никак. :)
  9. koteika

    koteika В доску свой

    Сообщения:
    769
    Симпатии:
    121
    Род занятий:
    программирование
    Само оптимальный вариант..
  10. timsoon

    timsoon В доску свой

    Сообщения:
    374
    Симпатии:
    44
    Род занятий:
    КИПиА, it, и прочее
    Адрес:
    г.Капчагай

    спасибо большое. до меня тоже дошло позднее. Самый оптимальный вариант, вот только если во время обработки одного надо сделать другое , не дожидаясь окончания обработки первого. Если не ошибаюсь нужен приоритет прерываний: можно ли распределить преоритет между линиями порта
  11. timsoon

    timsoon В доску свой

    Сообщения:
    374
    Симпатии:
    44
    Род занятий:
    КИПиА, it, и прочее
    Адрес:
    г.Капчагай
    Ах да все на stm32. В этой теме про них вроде. С программированием на Вы, строго не судите.:D Смайлика-чайника не нашел.)
  12. timsoon

    timsoon В доску свой

    Сообщения:
    374
    Симпатии:
    44
    Род занятий:
    КИПиА, it, и прочее
    Адрес:
    г.Капчагай
    И еще, могут возникнуть задачи, когда нельзя прерывать основной цикл по одной лапе, а всегда именно по двум. Элемент "и" будет в тему, но хотелось бы программно, поэтому задался вопросом.
  13. koteika

    koteika В доску свой

    Сообщения:
    769
    Симпатии:
    121
    Род занятий:
    программирование
    Сижу мозгую.. Вообщем такой вид посылок у датчика dht-11
    [​IMG]

    Пока что в голову идет настроить каналы одного таймера на передний фронт и задний срез, мерить длину посылок данных, исходя из них писать в массив 0 или 1...

    Или можно как то по проще сделать? Есть готовая библиотека но ее лень использовать, охото самому все сделать.. Да и переделывать ее надо..
  14. UL7AAjr

    UL7AAjr В доску свой

    Сообщения:
    1.848
    Симпатии:
    313
    Род занятий:
    инженер-программист
    Адрес:
    Алма-Ата
    Самое простое, что приходит в голову - определять время между задними фронтами (из "1" в "0"). Меньше 100 - "0", больше 100 - "1".
  15. koteika

    koteika В доску свой

    Сообщения:
    769
    Симпатии:
    121
    Род занятий:
    программирование
    Тут получается интерфейс Single Wire.. по длине импульса определяется 0 или 1.. Приду с пар займусь..
  16. Чапаев

    Чапаев В доску свой

    Сообщения:
    188
    Симпатии:
    20
    Род занятий:
    Охранные системы безопасности
    Адрес:
    Астана
    Мне нужно код от PIC18 переделать на STM32F103RB6.
    Операция сдвига битов в строке написана на асемблере. Вот она

    #asm
    bcf STATUS, 0
    rrcf _scherkhan_AM+9,1,1
    rrcf _scherkhan_AM+8,1,1
    rrcf _scherkhan_AM+7,1,1
    rrcf _scherkhan_AM+6,1,1
    rrcf _scherkhan_AM+5,1,1
    rrcf _scherkhan_AM+4,1,1
    rrcf _scherkhan_AM+3,1,1
    rrcf _scherkhan_AM+9,1,1
    rrcf _scherkhan_AM+8,1,1
    rrcf _scherkhan_AM+7,1,1
    rrcf _scherkhan_AM+6,1,1
    rrcf _scherkhan_AM+5,1,1
    rrcf _scherkhan_AM+4,1,1
    rrcf _scherkhan_AM+3,1,1
    rrcf _scherkhan_AM+9,1,1
    rrcf _scherkhan_AM+8,1,1
    rrcf _scherkhan_AM+7,1,1
    rrcf _scherkhan_AM+6,1,1
    rrcf _scherkhan_AM+5,1,1
    rrcf _scherkhan_AM+4,1,1
    rrcf _scherkhan_AM+3,1,1
    rrcf _scherkhan_AM+9,1,1
    rrcf _scherkhan_AM+8,1,1
    rrcf _scherkhan_AM+7,1,1
    rrcf _scherkhan_AM+6,1,1
    rrcf _scherkhan_AM+5,1,1
    rrcf _scherkhan_AM+4,1,1
    rrcf _scherkhan_AM+3,1,1
    rrcf _scherkhan_AM+9,1,1
    rrcf _scherkhan_AM+8,1,1
    rrcf _scherkhan_AM+7,1,1
    rrcf _scherkhan_AM+6,1,1
    rrcf _scherkhan_AM+5,1,1
    rrcf _scherkhan_AM+4,1,1
    rrcf _scherkhan_AM+3,1,1
    #endasm

    Это операция сдвига семибайтной строки в право на пять битов с переносом.
    Как будет выглядеть код для STM32 ?
    Систему команд на ассемблере не могу найти, в даташите нет описания команд.

    Можно конечно и на си написать, но выполнение этого преобразования раз в десять увеличиться.

    В расширенном режиме не нашел кнопки вставки кода с сохранением расстановки текста. Это недостаток. Нужно добавить кнопку вставки кода.
    Последнее редактирование: 24 янв 2015
  17. UL7AAjr

    UL7AAjr В доску свой

    Сообщения:
    1.848
    Симпатии:
    313
    Род занятий:
    инженер-программист
    Адрес:
    Алма-Ата
    вот же документ от производителя STM
    http://www.st.com/web/en/resource/technical/document/programming_manual/CD00228163.pdf

    Семибайтная строка влезет в два регистра. Поэтому нужно сделать следующее:
    1. Загрузить начало строки в регистр R1
    2. Загрузить конец строки в регистр R2
    3. Пять раз (очистить C флаг в PSR, сдвинуть R1 и R2 при помощи LSR)
    4. Положить данные из регистров R1 и R2 на место строки.

    И все.
    Чапаев нравится это.
  18. Чапаев

    Чапаев В доску свой

    Сообщения:
    188
    Симпатии:
    20
    Род занятий:
    Охранные системы безопасности
    Адрес:
    Астана
    А как это в си сделать.
    Строка которую нужно двинуть на пять битов в право uint8_t data_bufer[7]
    Была бы uint64_t, проблем бы не было.
    Как скопировать семибитную строку uint8_t data_bufer[7] в uint64_t temp ?

Поделиться этой страницей