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

Кто любит RISC в жизни, заходим, не стесняемся.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

Реклама
Аватара пользователя
RoboC
Мудрый кот
Сообщения: 1795
Зарегистрирован: Ср апр 04, 2012 09:55:53
Откуда: Северодонецк
Контактная информация:

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

Сообщение RoboC »

Подскажите.
Если мне после конфигурирования портов надо получить уже установленные состояния на оных, я включаю тактирование , выставляю регистр GPIOA->ODR(как мне нужно) и потом конфигурирую порт как выход РР? :oops:
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Реклама
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

RoboC, Да. И аккуратнее с дефолтные настройками PA13и PA14...
Аватара пользователя
Dentorol
Нашел транзистор. Понюхал.
Сообщения: 155
Зарегистрирован: Пн июн 21, 2010 19:57:07
Откуда: Россия - родина моя

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

Сообщение Dentorol »

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

Постепенно решил переходить с 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 еще сырой?
Реклама
Эиком - электронные компоненты и радиодетали
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

[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, значит скорее всего этого чего-то и нет.
Реклама
Аватара пользователя
Dentorol
Нашел транзистор. Понюхал.
Сообщения: 155
Зарегистрирован: Пн июн 21, 2010 19:57:07
Откуда: Россия - родина моя

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

Сообщение Dentorol »

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

Пойду читать документацию. С учетом того, что мне не повезло и в школе я учил французский ... :cry:
Реклама
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

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

Сообщение Myp3ik »

Dentorol, так у него скорость ацепирования на 12 разрядах 1 МЕГАсемпл / сек. У F1 нет аппаратной возможности управлять режимом RS485. F1 намного старее чем F0, некоторую периферию в новых МК переделали с нуля, много чего доработали. Но во всяком случае F103 лучше чем F100, и с ним можно работать. Но при переходе на F4, F3, F0 будут нюансы. И лучше начать изучение хотя бы с SPL, куб для изучения не подходит.
Иван Сусанин - первый полупроводник :solder:
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

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

Сообщение arkhnchul »

[uquote="Myp3ik",url="/forum/viewtopic.php?p=3307891#p3307891"]И лучше начать изучение хотя бы с SPL, куб для изучения не подходит.[/uquote]
для начального изучения не подходит HAL. Куб умеет вместо него (не все, но по большей части) генерить исходники с LL, оно идеологически не так уж отличается от SPL.
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

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

Сообщение Myp3ik »

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

Добавлено after 1 hour 28 minutes 56 seconds:
Dentorol, а что в результате должно получиться ?
Иван Сусанин - первый полупроводник :solder:
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

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

Сообщение arkhnchul »

[uquote="Myp3ik",url="/forum/viewtopic.php?p=3308033#p3308033"]Куб, если я ничего не путаю, впихнет в проект тот же HAL.[/uquote]
не обязательно, в свойствах проекта для каждой (почти) периферии можно выбрать, какой код генерить - HAL или LL. ST уверяет, что LL - Low Level Library - новая разработка, но плавает и крякает она как SPL. Местами прям копипаста.
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

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

Сообщение Myp3ik »

arkhnchul, спасибо, я этого не знал, надо будет глянуть чего они там наразрабатывали :roll:
Иван Сусанин - первый полупроводник :solder:
Аватара пользователя
Dentorol
Нашел транзистор. Понюхал.
Сообщения: 155
Зарегистрирован: Пн июн 21, 2010 19:57:07
Откуда: Россия - родина моя

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

Сообщение Dentorol »

[uquote="Myp3ik",url="/forum/viewtopic.php?p=3308033#p3308033"]Dentorol, а что в результате должно получиться ?[/uquote]
Ни чего особого - учусь.
Аватара пользователя
bezzabotna
Встал на лапы
Сообщения: 134
Зарегистрирован: Пн ноя 07, 2016 12:14:14

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

Сообщение bezzabotna »

Здравствуйте. Изучаю потихоньку работу с внешними прерываниями. Хочу переключать режимы мигания светодиодов по нажатию кнопки, например. Понимаю, что это проще сделать через таймеры, но изучение тут самоцель. Хочу генерировать прерывания непосредственно от кнопки, но у меня возникла проблема дребезга. Можно ли как то просто решить эту проблемку, ведь обычным способом не прокатит наверное.

Код: Выделить всё

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, верно? А мне нужно, например, четыре режима и четыре обработчика соответственно. Выходит реализовать прерывание непосредственно с кнопки не получится в любом случае? Нужно считать нажатия и переключать какие-нибудь пины мк, которые настроены на вход, а их замыкать на еще какие нибудь пины, которые настроены на выход и уже будут вызывать прерывания своим состоянием? Тем не менее на счет дребезга все равно прошу ответить. Спасибо.
Я конечно все понимаю, но этого я не понимаю.
Аватара пользователя
RoboC
Мудрый кот
Сообщения: 1795
Зарегистрирован: Ср апр 04, 2012 09:55:53
Откуда: Северодонецк
Контактная информация:

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

Сообщение RoboC »

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

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

Сообщение bezzabotna »

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;
		}	
	}
}
Допустим так, для начала. Проблема в том, что при нажимании кнопки горят все светодиоды, а при отпускании загорается рандомный из трех. То есть при одном нажатии у меня кнопка фактически нажимается
большое неопределенное количество раз. Может как-нибудь иначе опрашивать кнопку? В каком нибудь таймере?
Я конечно все понимаю, но этого я не понимаю.
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7359
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

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

Сообщение uldemir »

Надо после первого срабатывания блокировать это прерывание на время успокоения контактов, что собственно и есть "подавление дребезга". Это так - теоретически. меня самого этот вопрос интересует, в плане написания микропотребляющих устройств. Поэтому более конкретно не отвечу.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

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

Сообщение arkhnchul »

[uquote="bezzabotna",url="/forum/viewtopic.php?p=3309369#p3309369"]Может как-нибудь иначе опрашивать кнопку? В каком нибудь таймере?[/uquote]
проще всего - обрабатывать нажатие только после отпускания.
xVekx
Встал на лапы
Сообщения: 125
Зарегистрирован: Вс мар 01, 2009 20:41:19

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

Сообщение xVekx »

Кто подскажет почему при выделении дин. памяти (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;
}
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

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

Сообщение Myp3ik »

xVekx, размер выделяемой памяти не превышает размер кучи (Heap_Size) заданный в конфигурации ?
Иван Сусанин - первый полупроводник :solder:
Аватара пользователя
WatchCat
Это не хвост, это антенна
Сообщения: 1419
Зарегистрирован: Ср сен 03, 2008 21:42:17
Откуда: Ленинградская область,пос.Красный Остров

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

Сообщение WatchCat »

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

Вернуться в «ARM»