Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Re: STM32 новичку в ARM что к чему

Пн фев 05, 2018 12:45:04

https://github.com/g4lvanix/STM32F4-wor ... ngePolling

Re: STM32 новичку в ARM что к чему

Пн фев 05, 2018 21:00:47

Подскажите.
Если мне после конфигурирования портов надо получить уже установленные состояния на оных, я включаю тактирование , выставляю регистр GPIOA->ODR(как мне нужно) и потом конфигурирую порт как выход РР? :oops:

Re: STM32 новичку в ARM что к чему

Пн фев 05, 2018 21:53:19

RoboC, Да. И аккуратнее с дефолтные настройками PA13и PA14...

Re: STM32 новичку в ARM что к чему

Пн фев 12, 2018 22:48:55

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

Постепенно решил переходить с AVR на ARM STM32.
Купил одну из самых дешевых отладочных плат на микроконтроллере STM32F103C8T6 и к ней в придачу простенький St-Link v2.

Скачал CubeMX v4.23. Решил поиграться с АЦП. На вкладке "Pinout" выбрал нужные мне каналы. На вкладке "Configuration" смотрю параметры ADC1.
Изображение

Насколько я знаю АЦП в STM32F103C8T6 12 битный и для ускорения ацепирования имеется возможность уменьшить разрядность АЦП например до 10 или до 8 бит и даже до 6 бит.
Где в CubeMX для микроконтроллера STM32F103C8T6 выставляется этот параметр?

Например для микроконтроллера STM32F030F4P6 этот параметр выставляется так:
Изображение

Далее решил для микроконтроллера STM32F103C8T6 использовать интерфейс RS-485. Для реализации этого интерфейса необходимо подключить дополнительный вывод который будет переключить направление у микросхем драйвера RS-485 (прием/передача). Смотрю-смотрю, но так и не нашел где же можно установить использование дополнительного вывода для переключения прием/передача.
Изображение

Для микроконтроллера STM32F030F4P6 этот параметр выставляется так:
Изображение

Скачал новую версию 4.24 ситуация аналогична. Скачал старую версию 4.17 ситуация аналогична.

Я, конечно, понимаю, что можно выставить необходимый вывод для управления приемом/передачей самому и дописать его использование, можно самому выставлять разрешение АЦП, но видимо либо я что-то недопонимаю, либо CubeMX еще сырой?

Re: STM32 новичку в ARM что к чему

Пн фев 12, 2018 23:44:30

Насколько я знаю АЦП в STM32F103C8T6 12 битный и для ускорения ацепирования имеется возможность уменьшить разрядность АЦП например до 10 или до 8 бит и даже до 6 бит.
Где в CubeMX для микроконтроллера STM32F103C8T6 выставляется этот параметр?

Не нужно гадать, открывай документацию и смотри можно ли у конкретного ADC понизить разрядность или поддерживается ли Hardware flow control для RS-485. У F1 самая старая периферия, если в кубе что-то видишь у F0, но не видишь у F1, значит скорее всего этого чего-то и нет.

Re: STM32 новичку в ARM что к чему

Вт фев 13, 2018 12:50:50

Reflector - спасибо!
Не думал, что у контроллеров STM32 разная переферия.

Пойду читать документацию. С учетом того, что мне не повезло и в школе я учил французский ... :cry:

Re: STM32 новичку в ARM что к чему

Вт фев 13, 2018 13:30:45

Dentorol, так у него скорость ацепирования на 12 разрядах 1 МЕГАсемпл / сек. У F1 нет аппаратной возможности управлять режимом RS485. F1 намного старее чем F0, некоторую периферию в новых МК переделали с нуля, много чего доработали. Но во всяком случае F103 лучше чем F100, и с ним можно работать. Но при переходе на F4, F3, F0 будут нюансы. И лучше начать изучение хотя бы с SPL, куб для изучения не подходит.

Re: STM32 новичку в ARM что к чему

Вт фев 13, 2018 14:06:46

И лучше начать изучение хотя бы с SPL, куб для изучения не подходит.

для начального изучения не подходит HAL. Куб умеет вместо него (не все, но по большей части) генерить исходники с LL, оно идеологически не так уж отличается от SPL.

Re: STM32 новичку в ARM что к чему

Вт фев 13, 2018 18:23:11

Под изучением подразумевалось как раз изучение, а не "кликнул два раза и диодик замигал". Куб, если я ничего не путаю, впихнет в проект тот же HAL. Если нужно быстро сделать рабочее устройство используя много периферии, то можно и кубом, по крайней мере пока нет своих наработок.

Добавлено after 1 hour 28 minutes 56 seconds:
Dentorol, а что в результате должно получиться ?

Re: STM32 новичку в ARM что к чему

Вт фев 13, 2018 18:26:48

Куб, если я ничего не путаю, впихнет в проект тот же HAL.

не обязательно, в свойствах проекта для каждой (почти) периферии можно выбрать, какой код генерить - HAL или LL. ST уверяет, что LL - Low Level Library - новая разработка, но плавает и крякает она как SPL. Местами прям копипаста.

Re: STM32 новичку в ARM что к чему

Вт фев 13, 2018 20:28:17

arkhnchul, спасибо, я этого не знал, надо будет глянуть чего они там наразрабатывали :roll:

Re: STM32 новичку в ARM что к чему

Вт фев 13, 2018 22:51:26

Dentorol, а что в результате должно получиться ?

Ни чего особого - учусь.

Re: STM32 новичку в ARM что к чему

Чт фев 15, 2018 10:51:04

Здравствуйте. Изучаю потихоньку работу с внешними прерываниями. Хочу переключать режимы мигания светодиодов по нажатию кнопки, например. Понимаю, что это проще сделать через таймеры, но изучение тут самоцель. Хочу генерировать прерывания непосредственно от кнопки, но у меня возникла проблема дребезга. Можно ли как то просто решить эту проблемку, ведь обычным способом не прокатит наверное.
Код:
if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 1)
      {
         if(Button_count<5)   Button_count++;   
         else Button_state=1;
      }
      
      else
      {
         if (Button_count>0)Button_count--;
         else Button_state=0;


И еще вопрос. Нажатие кнопки которая заведена на PA0 Может вызвать только 1 обработчик прерывания EXTI0_IRQHandler, верно? А мне нужно, например, четыре режима и четыре обработчика соответственно. Выходит реализовать прерывание непосредственно с кнопки не получится в любом случае? Нужно считать нажатия и переключать какие-нибудь пины мк, которые настроены на вход, а их замыкать на еще какие нибудь пины, которые настроены на выход и уже будут вызывать прерывания своим состоянием? Тем не менее на счет дребезга все равно прошу ответить. Спасибо.

Re: STM32 новичку в ARM что к чему

Чт фев 15, 2018 11:02:14

Зачем вам прерывание? Опрашивайте кнопку в основном цикле :dont_know: .
Я фильтрую дребезг опрашивая кнопку 200 раз(примерно) в сек, как только 10-20 раз подряд кнопка считалась как нажатая(0 или 1 , в зависимости от подключения), то флажок короткого нажатия "+" ; 200 раз считалась как нажатая - флажок длинного нажатия "+". При таком подходе не нужен кондер на кнопке. Частота опроса задается таймером, обычно тем , который формирует задержки.
Можно использовать 1 вход МК и АЦП.

Re: STM32 новичку в ARM что к чему

Чт фев 15, 2018 13:27:20

RoboC,
изучение тут самоцель.


Добавлено after 1 hour 6 minutes 48 seconds:
Код:
while(1)
   {
      if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 1)
      {
         if(Button_count<200)   Button_count++;   //устранение дребезга
         else Button_state=1;
      }
      else
      {
         if (Button_count>0)Button_count--;
         else Button_state=0;
      }
      //temp++;
      if(Button_state==1)
      {
         Mode++;
         if(Mode==1) //режимы
         {
            GPIO_SetBits(GPIOE, GPIO_Pin_8);
            GPIO_ResetBits(GPIOE, GPIO_Pin_10);
         }
         if(Mode==2)
         {
            GPIO_SetBits(GPIOE, GPIO_Pin_9);
            GPIO_ResetBits(GPIOE, GPIO_Pin_8);
         
         }
         if(Mode==3)
         {
            GPIO_SetBits(GPIOE, GPIO_Pin_10);
            GPIO_ResetBits(GPIOE, GPIO_Pin_9);
            
         }
         if (Mode>3)Mode=0;
      }   
   }
}

Допустим так, для начала. Проблема в том, что при нажимании кнопки горят все светодиоды, а при отпускании загорается рандомный из трех. То есть при одном нажатии у меня кнопка фактически нажимается
большое неопределенное количество раз. Может как-нибудь иначе опрашивать кнопку? В каком нибудь таймере?

Re: STM32 новичку в ARM что к чему

Чт фев 15, 2018 13:34:42

Надо после первого срабатывания блокировать это прерывание на время успокоения контактов, что собственно и есть "подавление дребезга". Это так - теоретически. меня самого этот вопрос интересует, в плане написания микропотребляющих устройств. Поэтому более конкретно не отвечу.

Re: STM32 новичку в ARM что к чему

Чт фев 15, 2018 13:58:50

Может как-нибудь иначе опрашивать кнопку? В каком нибудь таймере?

проще всего - обрабатывать нажатие только после отпускания.

Re: STM32 новичку в ARM что к чему

Чт фев 15, 2018 22:26:43

Кто подскажет почему при выделении дин. памяти (malloc проверка есть, free делал) в прерывании может выбрасывать в HardFault ?

Код:
int ADS1248_RegWrite(uint8_t reg,uint8_t *data,uint8_t count)
{
   //uint8_t *txbuf;
   uint8_t txbuf[16];
   int ret;
   //txbuf = malloc(sizeof(uint8_t) * (2 + count));
   /*if(txbuf == NULL) {
      return -1;
   }*/
   txbuf[0] = ADS1248_COM_WREG | reg;
   if(count > 0)
      txbuf[1] = count-1;
   else
      txbuf[1] = 0;
   memcpy(&txbuf[2],data,count);
   ret = ADS1248_WriteRead(txbuf,2 + count,NULL,0);
   //free(txbuf);
   return ret;
}

Re: STM32 новичку в ARM что к чему

Пт фев 16, 2018 01:58:17

xVekx, размер выделяемой памяти не превышает размер кучи (Heap_Size) заданный в конфигурации ?

Re: STM32 новичку в ARM что к чему

Пт фев 16, 2018 04:28:06

Достались две китайские отладочные платы с stm32,хочу к делу пристроить,тем более что stlink у меня есть,да и некоторый опыт в общении с микроконтроллерами тоже.
Вопрос: может кто-то видел уже срисованную схему этих плат? А то я даже не знаю что у гугла спрашивать.
Или всё же придется самому с микроскопом посидеть...
Вложения
HTB1uS.jpg
(57.89 KiB) Скачиваний: 440
Ответить