User Tag List

Страница 10 из 28 ПерваяПервая ... 67891011121314 ... ПоследняяПоследняя
Показано с 91 по 100 из 280

Тема: Микроконтроллеры STM32, "с нуля".

  1. #91

    Регистрация
    29.03.2005
    Адрес
    Ярославль
    Сообщений
    1,102
    Спасибо Благодарностей отдано 
    14
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    dosikus по-позже, дней через надцать на 9,10, 11 мая, для изучения, буду только рад.
    А раньше скорей всего и не получится . До понедельника сваливаю на дачу . А с понедельника - до 8го 100% завал на работе ...
    ZXM-Phoenix 1024+PROF ROM+SMUC+VGA
    Profi 1024+CF+CPM+VGA
    ATARI 800XL+SIO2PC+SIO2SD
    RK86@Maximite

  2. #91
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #92

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    dosikus, про прием по USART успеешь накарябать?
    Передачу я настроил по твоей науке

    ---------- Post added 02.05.2014 at 00:20 ---------- Previous post was 01.05.2014 at 23:23 ----------

    Собственно, я уже запустил прием на прерываниях.
    "Hello, World!" уже погонял в обоих направлениях.
    Завтра отчитаюсь на суд знатоков
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  4. #93

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Немножко соберу в кучу информацию о работе с GPIO как портами I/O, без альтернативных функций, на примере пина 7 порта В.
    RCC->AHBENR |= RCC_AHBENR_GPIOBEN; - включение порта GPIOB для работы.
    GPIOB->MODER &= ~ GPIO_MODER_MODER7; - сброс "поля настроек пина", можно на этом и закончить, если пин будет входом, а если выходом - добавляем еще и следующее:
    GPIOB->MODER|= GPIO_MODER_MODER7_0; - режим работы заданного пина как выход общего назначения.
    Выбираем режим выхода, push-pull или open-drain.
    GPIOB->OTYPER &= ~ GPIO_OTYPER_OT_7; - "очищаем" бит настройки пина, сейчас он стал настроен как push-pull. Если нужно включить режим открытый сток, пишем немножко по-другому -
    GPIOB->OTYPER |= GPIO_OTYPER_OT_7;
    Настроим пушпул, если требуется.
    Сбросим битики, отвечающие за пушпул -
    GPIOB->PUPDR &= ~ GPIO_PUPDR_PUPDR7;
    Сейчас выставлен режим без подтяжки.
    Включаем нужный режим -
    GPIOB->PUPDR |= GPIO_PUPDR_PUPDR7_0; - включен пуллап.
    или -
    GPIOB->PUPDR |= GPIO_PUPDR_PUPDR7_1; - включен пуллдаун.
    Осталось выставить скорость работы пина.
    Сбрасываем настройки скорости в ноль, при этом скорость станет равна 400Кгц -
    GPIOB->OSPEEDR &= ~ GPIO_OSPEEDER_OSPEEDR7;
    Теперь можно выставить другую скорость, если нужно -
    GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR7_0; - 2Мгц.
    GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR7_1; - 10Мгц.
    GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR7; - 40Мгц.

    Теперь вкратце о подаче 0 или 1 на выход пина.
    GPIOB->ODR |= GPIO_ODR_ODR_7; - записываем 1 в бит регистра пина.
    GPIOB->ODR &= ~GPIO_ODR_ODR_7; - сбрасываем битик пина, на выходе - 0.

    Вариант на эту же тему -
    GPIOB->BSRRL = GPIO_BSRR_BS_7; // установить бит 7 PORTB
    GPIOB->BSRRH = GPIO_BSRR_BS_7; // сбросить бит 7 PORTB

    Чтение уровня на пине, если он настроен как вход -
    if (GPIOB->IDR & GPIO_IDR_IDR_7) - как условие в составе IF,
    или просто присваивание переменной tmp значения входного пина -
    tmp = (GPIOB->IDR & GPIO_IDR_IDR_7);
    переменная примет значение 1, если на пине будет 1. Просто, как трактор.

    ---------- Post added at 14:07 ---------- Previous post was at 14:04 ----------

    Виктор, прошу пардону, я там маленько влез в твой первый пост в теме, чтобы добавить немножко ссылок для удобства поиска в этой теме...
    Последний раз редактировалось Ewgeny7; 04.05.2014 в 14:11.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  5. #94

    Регистрация
    10.11.2010
    Адрес
    г. Пермь
    Сообщений
    316
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот хорошие на мой взгляд уроки для начинающих или пробующих в программирование первые шаги . Только там на меге , но суть не играет , язык то все равно тот же си. К тому же там и видео объяснительно поучительное есть . Мне очень понравились , надеюсь и кому то еще пригодятся .
    Последний раз редактировалось Dragoos; 02.05.2014 в 15:57.

  6. #95

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Dragoos, спасибо, но это не то.
    На Меге и я могу уроки писать. СТМ32 - другая кухня...
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  7. #96

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Как-то у меня по другому выходит
    У 32F и 32L есть различия.
    У нашей платки на STM32L156 нет определения RCC_APB2ENR_IOPxEN...
    Список определений можно подсмотреть в файле stm32l1xx.h
    Там есть такое:
    #define RCC_AHBENR_GPIOBEN /*!< GPIO port B clock enable */

    ---------- Post added at 11:30 ---------- Previous post was at 11:29 ----------

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    И насколько я понимаю, они 16-ти разрядные?
    Да, 16-разрядные.

    ---------- Post added at 11:33 ---------- Previous post was at 11:30 ----------

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Жень, а сколько в нашем микроконтроллере портов ввода-вывода?
    Я бегло посчитал количество пинов I/O на демоплатке, вышло 45. Точнее можно посмотреть в даташите.
    Фишка в том, что у чипа не обязательно порты выведены в полном составе. все 16 бит. Может быть и меньше. Вот, я вижу два вывода порта Н...
    Последний раз редактировалось Ewgeny7; 03.05.2014 в 11:36.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  8. #97

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Нашёл ещё одну статью
    Ага, это то же самое, что я проходил по минному полю несколько дней назад.
    Только в статейке не описывается конфигурирование частот, а мы это уже сделали

    ---------- Post added at 20:34 ---------- Previous post was at 20:22 ----------

    Вот, кстати, файлик system_stm32l1xx.c с выставленными частотами 24Мгц от внутреннего генератора и PLL, systick равен 3000.
    Это чтобы не париться с настройками клоков, а сразу знать, что мы имеем в проекте.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  9. #98

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    но для этого мне нужно дождаться плату.
    Я тоже так думаю. Нужно предварительно запомнить, что такое шины AHB, APB, что на них висит и "разложить в голове" мнемоники команд на включение этих периферий, про это как раз хорошо написано в приведенной тобой статье.
    У меня тоже уже возникает приятное чувство понимания происходящего.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  10. #99

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    И использовать HSE, и это будет намного стабильнее, чем у HSI с его стабильностью 1% при 25 гр. С.
    Согласен, но только со стабильностью. С остальным - нет.
    Аргументы - а зачем нам высокая стабильность? Часы делать на этом генераторе мы не будем, синтезом четких времянок типа видеосигнала - тоже заниматься не будем (пока). Поэтому смысла во внешнем кварце пока не вижу... А качество таймингов HSI вполне применимы для 99% применений. Это мое мнение


    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Это тоже не понял, какие 3000,
    Виктор, еще раз посмотри визуальный построитель в Экселе.
    Я использую HSI, 16Мгц, далее сигнал идет на PLL, где он умножается на 3 (получаем те же 48Мгц) и делим на 2, получаем 24Мгц. Эта частота уже расходится по АНВ (ядро, порты) и по АРВ1-2 (таймеры, RS-232, IIC...), а также через делитель на 8 создается клок 24000000/8=3000 кГц для системного таймера systick, который не периферийный таймер, а просто "тикалка", типа МультиМедиаТаймера для Винды, он удобен своей простотой для отсчета времянок внутри программы, например, для функции задержки выполнения программы. Я вкратце упоминал уже про него. Но пока не заморачивайся на нем.

    ---------- Post added at 22:03 ---------- Previous post was at 22:01 ----------

    А я сейчас прицепляю индикатор WH1602 к демоплате.
    Накопал библиотеку для работы с этим дисплейчиком, слегка перелопатил код для нашего примения и нашего чипа, сижу, паяю проводки

    ---------- Post added at 22:26 ---------- Previous post was at 22:03 ----------

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Вот единственное с командами, какими это всё сделать, я пока не разобрался, в синтаксис этого Си не въезжаю, откуда вот эти все & ~ берутся, мне не понятно, пока.
    Сейчас попробую это развернуто объяснить. Сначала это вызывает ступор, но потом привыкаешь и щелкаешь как двоичную арифметику. Пишу...

    ---------- Post added at 22:43 ---------- Previous post was at 22:26 ----------

    Напишу на примере привычного байтового 8-битного представления. Просто для лёгкости и ради привычности.
    Придумаем свою команду, похожую по синтаксису на СТМ32-овскую.
    GPIOB->PORT |= PIN_6 | PIN_7;
    Похоже?
    Разбираем.
    Порт В имеет свой адрес, число. Его "функция" PORT - это содержимое этого порта.
    После включения питания на чип он как правило имеет во всех разрядах нули.
    Т.е., GPIOB->PORT равно 0х00000000.
    Заранее описанные мнемоники PIN_6 и PIN_7 - это просто числа... Можно посмотреть их значение в файлах типа stm32lxx.h.
    Но у нас своя, выдуманная мнемоника.
    Будет логичным присвоить значения 0х01000000 для PIN_6 и 0х10000000 для PIN_7.
    Для восьмибитного порта это единички в соответствующих разрядах.
    Дальше пошла обычная двоичная арифметика.
    Что произойдет после выполнения описанной выше команды?
    К содержимому порта (0х00000000) будет арифметическое ИЛИ двух чисел:
    0х00000000
    0х10000000
    0х01000000
    -----------
    0х11000000 - результат. Т.е., на пинах 6 и 7 порта появятся единички.
    Теперь, нам нужно "погасить" единичку в разряде 7, к примеру.
    Как нам это сделать, не затронув прочие биты порта?
    В языке С принято делать так - берем значение всего порта, и логическим И сбрасываем нужный битик.
    Выглядит это так:
    GPIOB->PORT &= ~PIN_7;
    Т.е., мы берем ту же мнемонику PIN_7, инвертируем ее (значок ~), и делаем побитовое И с содержимым порта.
    По шагам:
    0х10000000
    инвертируем командой ~
    0х01111111
    и делаем И с содержимым порта:
    0х11000000 - порт
    0х01111111 - инвертированное PIN_7
    -----------
    0х01000000 - результат. Бит 7 погашен, бит 6 остался, что нам и требовалось.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  11. #100

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Просто хочется поэкспериментировать со временем и с внешним резонатором.
    Я почему-то думаю, что часы мы обязательно сделаем, одним из первых проектов. просто так принято в мире микроконтроллеров, сначала часы и термометр, затем всё остальное
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

Страница 10 из 28 ПерваяПервая ... 67891011121314 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 17
    Последнее: 26.12.2015, 23:22
  2. Ответов: 19
    Последнее: 30.09.2011, 03:08
  3. Ответов: 0
    Последнее: 15.08.2010, 14:38
  4. Ответов: 18
    Последнее: 27.08.2008, 20:27
  5. Ответов: 6
    Последнее: 20.11.2007, 11:29

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •