STM32 новичку в ARM что к чему
- Реклама
- RoboC
- Мудрый кот
- Сообщения: 1795
- Зарегистрирован: Ср апр 04, 2012 09:55:53
- Откуда: Северодонецк
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Подскажите.
Если мне после конфигурирования портов надо получить уже установленные состояния на оных, я включаю тактирование , выставляю регистр GPIOA->ODR(как мне нужно) и потом конфигурирую порт как выход РР?
Если мне после конфигурирования портов надо получить уже установленные состояния на оных, я включаю тактирование , выставляю регистр GPIOA->ODR(как мне нужно) и потом конфигурирую порт как выход РР?
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Re: STM32 новичку в ARM что к чему
RoboC, Да. И аккуратнее с дефолтные настройками PA13и PA14...
- Dentorol
- Нашел транзистор. Понюхал.
- Сообщения: 155
- Зарегистрирован: Пн июн 21, 2010 19:57:07
- Откуда: Россия - родина моя
Re: STM32 новичку в ARM что к чему
Здравствуйте!
Постепенно решил переходить с 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 еще сырой?
Постепенно решил переходить с 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 что к чему
[uquote="Dentorol",url="/forum/viewtopic.php?p=3307587#p3307587"]Насколько я знаю АЦП в STM32F103C8T6 12 битный и для ускорения ацепирования имеется возможность уменьшить разрядность АЦП например до 10 или до 8 бит и даже до 6 бит.
Где в CubeMX для микроконтроллера STM32F103C8T6 выставляется этот параметр?[/uquote]
Не нужно гадать, открывай документацию и смотри можно ли у конкретного ADC понизить разрядность или поддерживается ли Hardware flow control для RS-485. У F1 самая старая периферия, если в кубе что-то видишь у F0, но не видишь у F1, значит скорее всего этого чего-то и нет.
Где в CubeMX для микроконтроллера STM32F103C8T6 выставляется этот параметр?[/uquote]
Не нужно гадать, открывай документацию и смотри можно ли у конкретного ADC понизить разрядность или поддерживается ли Hardware flow control для RS-485. У F1 самая старая периферия, если в кубе что-то видишь у F0, но не видишь у F1, значит скорее всего этого чего-то и нет.
- Реклама
- Dentorol
- Нашел транзистор. Понюхал.
- Сообщения: 155
- Зарегистрирован: Пн июн 21, 2010 19:57:07
- Откуда: Россия - родина моя
Re: STM32 новичку в ARM что к чему
Reflector - спасибо!
Не думал, что у контроллеров STM32 разная переферия.
Пойду читать документацию. С учетом того, что мне не повезло и в школе я учил французский ...
Не думал, что у контроллеров STM32 разная переферия.
Пойду читать документацию. С учетом того, что мне не повезло и в школе я учил французский ...
Re: STM32 новичку в ARM что к чему
Dentorol, так у него скорость ацепирования на 12 разрядах 1 МЕГАсемпл / сек. У F1 нет аппаратной возможности управлять режимом RS485. F1 намного старее чем F0, некоторую периферию в новых МК переделали с нуля, много чего доработали. Но во всяком случае F103 лучше чем F100, и с ним можно работать. Но при переходе на F4, F3, F0 будут нюансы. И лучше начать изучение хотя бы с SPL, куб для изучения не подходит.
Иван Сусанин - первый полупроводник 
Re: STM32 новичку в ARM что к чему
[uquote="Myp3ik",url="/forum/viewtopic.php?p=3307891#p3307891"]И лучше начать изучение хотя бы с SPL, куб для изучения не подходит.[/uquote]
для начального изучения не подходит HAL. Куб умеет вместо него (не все, но по большей части) генерить исходники с LL, оно идеологически не так уж отличается от SPL.
для начального изучения не подходит HAL. Куб умеет вместо него (не все, но по большей части) генерить исходники с LL, оно идеологически не так уж отличается от SPL.
Re: STM32 новичку в ARM что к чему
Под изучением подразумевалось как раз изучение, а не "кликнул два раза и диодик замигал". Куб, если я ничего не путаю, впихнет в проект тот же HAL. Если нужно быстро сделать рабочее устройство используя много периферии, то можно и кубом, по крайней мере пока нет своих наработок.
Добавлено after 1 hour 28 minutes 56 seconds:
Dentorol, а что в результате должно получиться ?
Добавлено after 1 hour 28 minutes 56 seconds:
Dentorol, а что в результате должно получиться ?
Иван Сусанин - первый полупроводник 
Re: STM32 новичку в ARM что к чему
[uquote="Myp3ik",url="/forum/viewtopic.php?p=3308033#p3308033"]Куб, если я ничего не путаю, впихнет в проект тот же HAL.[/uquote]
не обязательно, в свойствах проекта для каждой (почти) периферии можно выбрать, какой код генерить - HAL или LL. ST уверяет, что LL - Low Level Library - новая разработка, но плавает и крякает она как SPL. Местами прям копипаста.
не обязательно, в свойствах проекта для каждой (почти) периферии можно выбрать, какой код генерить - HAL или LL. ST уверяет, что LL - Low Level Library - новая разработка, но плавает и крякает она как SPL. Местами прям копипаста.
Re: STM32 новичку в ARM что к чему
arkhnchul, спасибо, я этого не знал, надо будет глянуть чего они там наразрабатывали 
Иван Сусанин - первый полупроводник 
- Dentorol
- Нашел транзистор. Понюхал.
- Сообщения: 155
- Зарегистрирован: Пн июн 21, 2010 19:57:07
- Откуда: Россия - родина моя
Re: STM32 новичку в ARM что к чему
[uquote="Myp3ik",url="/forum/viewtopic.php?p=3308033#p3308033"]Dentorol, а что в результате должно получиться ?[/uquote]
Ни чего особого - учусь.
Ни чего особого - учусь.
- bezzabotna
- Встал на лапы
- Сообщения: 134
- Зарегистрирован: Пн ноя 07, 2016 12:14:14
Re: STM32 новичку в ARM что к чему
Здравствуйте. Изучаю потихоньку работу с внешними прерываниями. Хочу переключать режимы мигания светодиодов по нажатию кнопки, например. Понимаю, что это проще сделать через таймеры, но изучение тут самоцель. Хочу генерировать прерывания непосредственно от кнопки, но у меня возникла проблема дребезга. Можно ли как то просто решить эту проблемку, ведь обычным способом не прокатит наверное.
И еще вопрос. Нажатие кнопки которая заведена на PA0 Может вызвать только 1 обработчик прерывания EXTI0_IRQHandler, верно? А мне нужно, например, четыре режима и четыре обработчика соответственно. Выходит реализовать прерывание непосредственно с кнопки не получится в любом случае? Нужно считать нажатия и переключать какие-нибудь пины мк, которые настроены на вход, а их замыкать на еще какие нибудь пины, которые настроены на выход и уже будут вызывать прерывания своим состоянием? Тем не менее на счет дребезга все равно прошу ответить. Спасибо.
Код: Выделить всё
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;Я конечно все понимаю, но этого я не понимаю.
- RoboC
- Мудрый кот
- Сообщения: 1795
- Зарегистрирован: Ср апр 04, 2012 09:55:53
- Откуда: Северодонецк
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Зачем вам прерывание? Опрашивайте кнопку в основном цикле
.
Я фильтрую дребезг опрашивая кнопку 200 раз(примерно) в сек, как только 10-20 раз подряд кнопка считалась как нажатая(0 или 1 , в зависимости от подключения), то флажок короткого нажатия "+" ; 200 раз считалась как нажатая - флажок длинного нажатия "+". При таком подходе не нужен кондер на кнопке. Частота опроса задается таймером, обычно тем , который формирует задержки.
Можно использовать 1 вход МК и АЦП.
Я фильтрую дребезг опрашивая кнопку 200 раз(примерно) в сек, как только 10-20 раз подряд кнопка считалась как нажатая(0 или 1 , в зависимости от подключения), то флажок короткого нажатия "+" ; 200 раз считалась как нажатая - флажок длинного нажатия "+". При таком подходе не нужен кондер на кнопке. Частота опроса задается таймером, обычно тем , который формирует задержки.
Можно использовать 1 вход МК и АЦП.
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
- bezzabotna
- Встал на лапы
- Сообщения: 134
- Зарегистрирован: Пн ноя 07, 2016 12:14:14
Re: STM32 новичку в ARM что к чему
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 что к чему
Надо после первого срабатывания блокировать это прерывание на время успокоения контактов, что собственно и есть "подавление дребезга". Это так - теоретически. меня самого этот вопрос интересует, в плане написания микропотребляющих устройств. Поэтому более конкретно не отвечу.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Re: STM32 новичку в ARM что к чему
[uquote="bezzabotna",url="/forum/viewtopic.php?p=3309369#p3309369"]Может как-нибудь иначе опрашивать кнопку? В каком нибудь таймере?[/uquote]
проще всего - обрабатывать нажатие только после отпускания.
проще всего - обрабатывать нажатие только после отпускания.
Re: STM32 новичку в ARM что к чему
Кто подскажет почему при выделении дин. памяти (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 что к чему
xVekx, размер выделяемой памяти не превышает размер кучи (Heap_Size) заданный в конфигурации ?
Иван Сусанин - первый полупроводник 
- WatchCat
- Это не хвост, это антенна
- Сообщения: 1419
- Зарегистрирован: Ср сен 03, 2008 21:42:17
- Откуда: Ленинградская область,пос.Красный Остров
Re: STM32 новичку в ARM что к чему
Достались две китайские отладочные платы с stm32,хочу к делу пристроить,тем более что stlink у меня есть,да и некоторый опыт в общении с микроконтроллерами тоже.
Вопрос: может кто-то видел уже срисованную схему этих плат? А то я даже не знаю что у гугла спрашивать.
Или всё же придется самому с микроскопом посидеть...
Вопрос: может кто-то видел уже срисованную схему этих плат? А то я даже не знаю что у гугла спрашивать.
Или всё же придется самому с микроскопом посидеть...
- Вложения
-
- HTB1uS.jpg
- (57.89 КБ) 460 скачиваний


