Jump to content
ART_ME

STM32 для чайника

Recommended Posts

Сделал вот это, все равно моргает. :huh:

    ind_Temp = (int) Temp/100;
    if (ind_Temp - last_ind_Temp == 1) 
      TM1637_display_all(last_ind_Temp);
    else if (ind_Temp - last_ind_Temp == - 1)
      TM1637_display_all(last_ind_Temp);
    else 
      TM1637_display_all(ind_Temp);	               
    last_ind_Temp = ind_Temp;

 


Никогда не спорьте с дураками. Они опустят Вас до своего уровня и победят за счет опыта.

 

 

Share this post


Link to post
Share on other sites

@ART_ME не нужно безусловно делать это last_ind_Temp = ind_Temp; ну и при чем тут ==

 

    ind_Temp = (int) Temp / 100;
	
    if(((ind_Temp - last_ind_Temp) > 1) || ((ind_Temp - last_ind_Temp) < - 1))
	{
	 TM1637_display_all(ind_Temp);	
	 last_ind_Temp = ind_Temp;	
	}
	else
	{
	 TM1637_display_all(last_ind_Temp);		
	}

 

Edited by MasterElectric

Share this post


Link to post
Share on other sites

@MasterElectric , не понял... Загнать его под else?

 

 

Edited by ART_ME

Никогда не спорьте с дураками. Они опустят Вас до своего уровня и победят за счет опыта.

 

 

Share this post


Link to post
Share on other sites

Вебинар «Экосистема MEAN WELL. Решения для любых задач электропитания» (20.05.2021)

Приглашаем 20 мая на вебинар, посвященный линейке поставок компании MEAN WELL и ее подходу к производству источников питания — как экосистемы продукции и услуг, которая позволяет подобрать оптимальный источник питания для любых задач электропитания. Рассмотрим весь спектр выпускаемой продукции MEAN WELL в области AC/DC-, DC/DC- и DC/AC-преобразователей с подробным разбором интересных и уникальных новинок, их применении и многое другое.

Подробнее

Доброго времени суток. Возможно кто-то имел опыт подключения термодатчика DS18B20 и сможет мне что-нибудь подсказать. Пытаюсь подключить путём ногодрыга: инициализирующий импульс с порта идёт, но датчик не отвечает.  

image.png

Share this post


Link to post
Share on other sites

Барьерные силовые клеммы от Degson – расширение складского ассортимента Компэл

Обновленная линейка барьерных клеммных блоков Degson, поступивших на склад Компэл, содержит широкий ряд клемм, подходящих для соединения проводников различного сечения (от 22AWG до 10AWG). Барьерные клеммные колодки сочетают в себе удобство, простоту и надежность соединения. Это достигается за счет ответственного производства и использования высококачественных материалов. Винтовые клеммные блоки барьерного типа Degson предназначены в первую очередь для коммутации в сильноточных цепях, например, в распределительных и измерительных системах.

Подробнее

ну значит не факт что датчик вообще рабочий. Особенно если покупался на али. И в таком случае вообще не факт что это 18В20, а не какой нибудь С1815


Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Share this post


Link to post
Share on other sites

Материалы вебинара «Решения Analog Devices для гальванической изоляции. Обзор технологий и новинок»

Опубликованы материалы вебинара, посвященного решениям Analog Devices для гальванической изоляции. На вебинаре рассказали о: технологии гальванической изоляции iCoupler, цифровых изоляторах, технологии isoPower, гальванически изолированных интерфейсах (RS-485, CAN, USB, I2C, LVDS) и многом другом. Материалы вебинара будут интересны разработчикам промышленной автоматики и медицинской техники.

Подробнее

 Уважаемые Коллеги!

Буду очень благодарен за толковый совет...

А проблема вот какая. Решил плотно заняться STM32  и, вероятно, сразу же сделал серьёзную ошибку. Подразумевая, что так как все процессоры  STM32 на уровне топологии и команд совместимы сверху вниз,  купил в качестве объекта исследования плату Nucleo STM32H7ZI2 ! А тут ещё и CubeIDE 1.3 подоспел. Итог...

После некоторых мучений установил IDE, но с ним как-то неровно. Шаблон генерится, но попытка двинутся дальше приводит к сообщению о необходимости  update!  Кликаешь по ссылке … Промаргивает быстро какой-то экран... И... тишина...

У меня НИКАКОЙ по сути опыт с этой платформой, но слабеньким своим умишком я понимаю, что НЕПРАВИЛЬНО НАСТРОЕНА СРЕДА РАЗРАБОТКИ. Но вот КАК ЕЁ НАСТРОИТЬ.?.. У меня что-то совсем нет понятия, как двигаться и в каком направлении. Тут недавно наткнулся на некую базу документов от STM. Так там некоторый STM32H7xx Pack в архиве занимает более 1ГБ.  Распаковал и ещё больше запутался, рассматривая содержимое папок!

Не бросайте, подскажите, как настроить среду... Какие файлы и в какие папки поместить, чтобы скомпилировать хотя бы самый простой учебный проект с использованием , скажем  GPIO.

Share this post


Link to post
Share on other sites

Это та нуклео что на 2 ядрах? Ну да для изучения с нуля это вы погорячились, если там обычный H743 то проблем быть не должно. Паки качает сама среда в свой репозиторий. У меня 1.3 проблем не возникло и ст-линк 3 обновился нормально. мб русские буквы в путях?

Edited by MasterElectric

Share this post


Link to post
Share on other sites

Здравствуйте!

STM32F407GT

Регистр GPIOx_OSPEEDR для конфигурации скорости тактирования портов.

Прошу пояснить в каком случае какие скорости выбирать, как это отражается в конфигурации МК на аппаратном уровне.

Share this post


Link to post
Share on other sites

это выразается в количестве цифрового шума от переключения порта. Выше скорость, больше шума. Обьяснение по рабоче-крестьянски. На самом деле оно очень длинное и описано в каком то даташите, номер которого лень вспоминать


Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Share this post


Link to post
Share on other sites

Всем привет!
Не кидайтесь табуретками в начинающего...
Осваиваю NUCLEO-G431KB  (stm32G431).
Сразу скажу, что не собираюсь быть крутым программистом, Nucleo приобрел, главным образом, для одной чисто прикладной задачи. 
Для начала в Arduino IDE попробовал, скачав соответствующие библиотеки, - вроде все работает.  Но скорость работы, в частности АЦП, очень низкая - 90мкс/сэмпл.
Пробовал установить Keil, IAR, STM32CubeIDE, но они требуют 64 разрядную виндовс...
Поставил STM32CubeMX  - ругается на 32-разрядную Jawa и не гарантирует нормальной работы, но вроде работает..
Пока делаю так - в STM32CubeMX делаю проект, компилирую, из папки исходников беру main.c и вставляю в Arduino IDE.  Эта IDE ругается на #include "main.h"  и на кусок кода, я так понимаю, обработчик ошибок.  Удаляю эти куски, все работает...
Вот вопрос 1 - что с этим делать?
Дальше.  В частности, сейчас задача - сделать оцифровку входного сигнала с максимсальной частотой.  Хочу настроить АЦП для работы в режиме dual Interleaved mode , но работает почему-то только ADC1.  Что может быть, как проверить?

Новый текстовый документ (2).txt

Share this post


Link to post
Share on other sites

Здравствуйте!

Осваивал метод bit-band применительно к портам. В регистре GPIOx_ODR удалось сбросить бит, но не удаётся его установить в чём подвох?

Share this post


Link to post
Share on other sites

Спасибо, с этим уже разобрался. Кривые руки, точнее, мозг. Обычная невнимательность и неаккуратность. МК STM32VGT6.
Следующий вопрос: внутренняя периферия, к которой относится SysTick, не имеет bit-band адресации?

Share this post


Link to post
Share on other sites
3 часа назад, Скептик сказал:

bit-band

где ты это слово взял?


Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Share this post


Link to post
Share on other sites

Bit-banding is a term that ARM uses to describe a feature that is available on the Cortex M3 and M4 CPU cores. Basically, the device takes a region of memory (the Bit-band region) and maps each bit in that region to an entire word in a second memory region (the Bit-band Alias Region).

Вот здесь хорошо расписано.

Edited by LiVit

Share this post


Link to post
Share on other sites

Привет!

Новый вопрос от начинающего ассемблерщика. МК STM32F407VGT6. Не могу включить RTC. Алгоритм такой:

1. Включение тактирования GPIOC:

         В регистре RСC_AHB1ENR  бит GPIOCENR = 1

2. Выбор назначения пинов PC14, PC15 как альтернативной функции:

Регистр GPIOC_MODER = 0xA000 0000
= 0b1010 0000 0000 0000 0000 0000 0000 0000

3. Выбор номера альтернативной функции для пинов PC14, PC15:

         Регистр GPIOC_AFRH = 0xFF00 0000

4. Выбор источника тактирования RTC от LSE:

В регистре RСC_BDCR  биты RTCSEL[1:0] = 01;

5. Включение тактирования LSE:

         В регистре RСC_BDCR  бит LSEON = 1;

6. Включение тактирования RTC:

         В регистре RСC_BDCR  бит RTCEN = 1;

7. Снятие блокировки изменения регистров RTC:

         В регистр RTC_WPR записываю 0x00CA, затем 0x0053;

8. Включение режима инициализации RTC:

         В регистре RTC_ISR бит INIT = 1;

9. Циклически проверяю включение режима инициализации RTC:

         Читаю из регистра RTC_ISR флаг INITF.

Флаг равен 0, режим инициализации не включается.

Подскажите, где ошибка.

Share this post


Link to post
Share on other sites

Забыл пункт

6.2 Циклическая проверка включения LSE:

      Читаю из регистра RCC_BDCR  флаг LSERDY, пока он не установится в 1.

 

Share this post


Link to post
Share on other sites

В файле stm32f4xx_rtc.c в самом начале подробно описана последовательность запуска часов. Сначала надо разрешить доступ к Backup Domain

                   ##### Backup Domain Access #####
 ===================================================================
 [..] After reset, the backup domain (RTC registers, RTC backup data 
      registers and backup SRAM) is protected against possible unwanted write 
      accesses. 
 [..] To enable access to the RTC Domain and RTC registers, proceed as follows:
   (+) Enable the Power Controller (PWR) APB1 interface clock using the
       RCC_APB1PeriphClockCmd() function.
   (+) Enable access to RTC domain using the PWR_BackupAccessCmd() function.
   (+) Select the RTC clock source using the RCC_RTCCLKConfig() function.
   (+) Enable RTC Clock using the RCC_RTCCLKCmd() function.

 

Share this post


Link to post
Share on other sites

Да я на ассемблере пишу, не на СИ. Пункт 7, 8 как раз и есть разрешение доступа к регистрам RTC (документ AN 3371).

Попробовал от LSI, такая же беда.

Share this post


Link to post
Share on other sites
37 minutes ago, Скептик said:

Пункт 7, 8 как раз и есть разрешение доступа к регистрам RTC

Это совсем не то. Сначало надо включить Backup Domain в регистре PWR_CR установить бит DBP.

Share this post


Link to post
Share on other sites

Нашёл в RM0090 описание PWR_CR, бит DBT. Установил вперёд всего . Не помогло. Продолжаю разбираться...

Share this post


Link to post
Share on other sites

Как всегда - невнимательность. Забыл затактировать контроллер питания - бит RCC_APB1ENR_PWREN.
snn_krs, огромное спасибо за подсказку !

 

Share this post


Link to post
Share on other sites

Новая проблема - не могу организовать прерывание от RTC по будильнику. Делаю так:

1. Определяю адрес прерывания от RTC в таблице векторов:

         По адресу 228 записываю адрес обработчика прерываний + 1;

2. Разрешаю прерывания от RTC (41-я линия):

         Регистр NVIC_ISER1 = 0x0200;

3. Устанавливаю время тревоги по будильнику A каждый день в 00:00:00 :

Регистр RTC_ALRMAR = 0x8000 0000;

4. Включаю будильник A:

         Бит RTC_CR_ALRAE = 1;

5. Разрешение прерываний от будильника A:

         Бит RTC_CR_ALRAIE = 1.

Прерывания не происходит.

Подскажите, что не так?

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

    • Значит что-то не то с моделями. В теме по ПараФинну есть симуляции Alex_63. Там все сходилось.
    • Посмотрел как подключить скалер к дисплею.... Я не потяну.... Честно! Не мой уровень. Я хотел по лёгкому соединить дверной видеоглазок с экраном и всё. А теперь вижу, чтобы сделать из дисплея монитор, как раз и нужен этот самый скалер! Но там столько настроек, а я даже многих понятий не знаю! Боюсь, не справлюсь...(((
    • ЛБП 0-30В/0-2А. Многим знакома тема и версия схемы V16y2.  
    • Доброго дня всем. Сделал утепленный бокс для генератора Huter с системой вентиляции и обогрева под управлением ардуинки. Бокс для генератора.  Схема содержит четыре термостата и выводит всю информацию на внешний дисплей. Четвертый термостат при температуре бензобака 45 градусов должен через реле отключать генератор, разрывая цепь питания. Нормально-замкнутые контакты реле подключены последовательно с выключателем зажигания генератора по такой схеме.  Но так как реле питается от БП, который запитан от генератора, то получилась следующая ситуация. Как только контакты реле разрывают цепь питания генератора, на его выходе пропадает напряжение, реле обесточивается и контакты вновь замыкаются, снова замыкая цепь зажигания генератора. Двигатель не успевает остановится, вновь получает зажигание и продолжает работать и на выходе снова появляется напряжение. Ардуинка не успевает перегрузится и считает, что все сделала.( Ну так в программе написал).  Т.е. в таком варианте схема не работает. Надо переделывать. Но никак не соображу, как это сделать. Алгоритм пока вижу такой: 1. Света нет. Нажимаю кнопку, которая фиксируется и замыкает контакты. Запуск разрешен. 2. Завожу генератор, появляется напряжение, начинает работать ардуинка. 3. При температуре бензобака 45 градусов термостат включает реле, которое, каким то образом, разфиксирует кнопку и та размыкает контакты. Генератор отключается.  Финиш. Может будут какие то мысли, как это сделать?  
    • Так он на выходе. Даже если C6 замкнуть там ведь ещё резистор 22 ОМа. Для LM1875 22 ОМа это вообще не нагрузка.
    • Компрессор работает в ванне с маслом. Насколько может увеличиться трение?
×
×
  • Create New...