Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

Пишу драйвера для stm32f10x и stm32f0xx

Непрочитано 02.10.2020, 22:01  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Пишу драйвера для stm32f10x и stm32f0xx

Все привет. Давненько не появлялся.
Кто меня помнит, теперь живу в Голландии, работаю на Canon.
Итак, начал писать альтернативные драйвера под ST МК.

Основная идея - "все в одном". Ставим, включаем, работает.

На данный момент имеется:
stm32f10x (тестировалось на STM32F103VC и STM32F103RBT6)
ADC, BKP, CRC, DAC, DMA, DELAY, EXTI, GPIO, I2C, RTC, SPI, TIM и UART.

CRC, DAC, I2C, SPI и UART используют DMA.
Если канал оказывается занят, передача обрывается с ошибкой.
Добавленна поддержка FreeRTOS. Отложенные прерывания, заморозка
функции на время работы переферии.

В stm32f0xx используется DMA, но если канал занят, использует прерывание.
У этого семейства богатые функции перенаправления функционала пинов,
поэтому модель драйвера выглядит иначе. Ипользуется указатель на девайс,
а не индекс устройства, как в stm32f10x.

Пришлашаю к сотрудничеству и совместной разработке.
Делайте fork и оставляйте пожелания. Пожалуйста, используйте английский язык.

https://github.com/Virviglaz/stm32f103
https://github.com/Virviglaz/stm32f0xx
Реклама:
Easyrider83 вне форума  
Непрочитано 03.10.2020, 14:27  
NewWriter
Почётный гражданин KAZUS.RUN
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Пишу драйвера для stm32f10x и stm32f0xx

Уууу, приветствуем тебя снова! Наше вам с кисточкой Говорят, сейчас правильно называть "Нидерланды", чтобы не ассоциировалось с Голландским сыром, который в Голландии никогда и не видели

По теме темы я в принципе не сильно то заморачиваюсь, а просто пишу (копипасчу) под конкретное применение. Благо, там сложностей больших то нету. Единственная заморочка - это USB, но по счастью оное сейчас уже не шибко то актуально (активно вытесняется беспроводными технологиями).
Для самых ленивых есть CubeHAL, уже адаптированный под разворачивание FreeRTOS.

Сообщение от Easyrider83 Посмотреть сообщение
Пожалуйста, используйте английский язык.
А здесь по-русски отвечать можно?
NewWriter вне форума  
Сказали "Спасибо" NewWriter
Easyrider83 (03.10.2020)
Непрочитано 03.10.2020, 15:34  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Пишу драйвера для stm32f10x и stm32f0xx

Сообщение от NewWriter Посмотреть сообщение
Уууу, приветствуем тебя снова! Наше вам с кисточкой Говорят, сейчас правильно называть "Нидерланды", чтобы не ассоциировалось с Голландским сыром, который в Голландии никогда и не видели
сыры здесь невероятно вкусные, как и все остальное
Сообщение от NewWriter Посмотреть сообщение
А здесь по-русски отвечать можно?
Здесь как вам удобно будет
Easyrider83 вне форума  
Непрочитано 03.10.2020, 18:32  
NewWriter
Почётный гражданин KAZUS.RUN
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Пишу драйвера для stm32f10x и stm32f0xx

Про RCC.
Поскольку время от времени я использую динамическое управление частотой, которое актуально при батарейном питании и особенно в L-серии, то я пишу функцию переключения частот и источников тактирования. Это функция вида
Код:
void SetSystemClock(int8_t mode)
{
    switch(mode) {
    case ULTRAPERFORM: ‹...›
    break;

    case BOOST: ‹...›
    break;

    case NORMAL: ‹...›
    break;

    case ECON: ‹...›
    break;

    case IDLE: ‹...›
    break;
}
причем, поскольку некоторые тайминги (таймеры, скорость UART, I2C) должны оставаться постоянными, приходится тут же в этой функции корректировать все эти значения.
Частота должна переключаться по возможности быстро, с минимальными задержками (особенно на повышение), значит, нужно это делать по кратчайшему пути, без лишних программерских телодвижений. То есть, никаких вычислений при исполнении, все коэфф. уже прописаны, и никаких лишних вызовов функций.

Так же, требуется определение причины сброса по анализу битов. Например, когда вставили батарейки или подключили аккумулятор, полного запуска быть не должно. А вот при сбросе после выхода из Standby - другое дело. Так же иногда сброс кнопкой на NRST - это переход в сервисный режим с диагностическим или иным функционалом.
NewWriter вне форума  
Непрочитано 03.10.2020, 18:50  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Пишу драйвера для stm32f10x и stm32f0xx

Сообщение от NewWriter Посмотреть сообщение
Про RCC.
Поскольку время от времени я использую динамическое управление частотой, которое актуально при батарейном питании и особенно в L-серии, то я пишу функцию переключения частот и источников тактирования
У меня реализован механизм выбора частоты в зависимости и текущей частоты ядра, но он применяется только один раз при инитиализации. У меня пока нет необходимости это менять. Если хотите поучаствовать, буду рад увидеть merge request.
Easyrider83 вне форума  
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ускорить компьютер 7Fantomas7 Ремонт оргтехники 111 08.08.2018 05:27
Не определяются драйвера для FT232 Y.Logvin Коллекция глюков 6 22.10.2014 13:23
Расчет бутстрепной емкости для драйвера верхнего ключа Виталий Басараб Источники питания и свет 28 17.02.2014 12:13
Усиление драйвера двигателя TB6560 swat24 Электроника - это просто 8 26.05.2012 21:30
Продаются ли такие драйвера для Led ? dess2 Источники питания и свет 28 20.09.2011 13:20


Часовой пояс GMT +4, время: 21:36.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.