Top.Mail.Ru
Уведомления
Очистить все

[Закреплено] STM32 для начинающих

Страница 17 / 18
(@dobruybarmaley)
Level 1

@aveal и всё чтоль?!! 😉 🤣 🤣

ОтветитьЦитата
Размещено : 31.10.2023 14:19
Aveal
(@aveal)
Top level Admin

@dobruybarmaley ну у меня работает )

ОтветитьЦитата
Создатель темы Размещено : 31.10.2023 14:20
(@dobruybarmaley)
Level 1

@aveal с другой стороны действительно, мне её не зачем хранить 🤔

ОтветитьЦитата
Размещено : 31.10.2023 14:25
(@dobruybarmaley)
Level 1

@aveal и у меня работает! Спасибо!

ОтветитьЦитата
Размещено : 31.10.2023 14:31
Aveal
(@aveal)
Top level Admin

@dobruybarmaley она просто инициализируется однократно, поэтому не функционирует, например так будет уже работать нормально:

static bool t = btn.isPress();
t = btn.isPress();
ОтветитьЦитата
Создатель темы Размещено : 31.10.2023 14:39
Aveal
(@aveal)
Top level Admin

Запись от: @dobruybarmaley

@aveal и у меня работает! Спасибо!

Отлично!

 

ОтветитьЦитата
Создатель темы Размещено : 31.10.2023 14:39
(@dobruybarmaley)
Level 1

@aveal да, я понял

ОтветитьЦитата
Размещено : 31.10.2023 14:50
(@eduard)
Level 4 Moderator

Запись от: @dobruybarmaley

да вот что то картинка не загрузилась, в ожидании модерации висит

Какая картинка?

ОтветитьЦитата
Размещено : 31.10.2023 20:32
(@autoelectric87)
New member

Всем привет. Нигде не могу найти как сделать включения канала от кнопки и выключение по сопротивлению например 1 кОм. 

ОтветитьЦитата
Размещено : 16.12.2023 16:42
(@eduard)
Level 4 Moderator

@autoelectric87 Включение какого канала?

Какая кнопка?

Информации мало, что бы понять что вы хотите.

ОтветитьЦитата
Размещено : 17.12.2023 11:09
(@eduard_ivanov)
New member

Приветствую всех.

Мне нужно начать работать с мк STM32, конкретно с F303C6T6. На нём уже собран контроллер управления лабораторной установкой. На плате есть разъём IDC-20 male, остальные разъёмы для питания, измерений, связи. Есть также 2 изолированных канала RS485. Какой мне нужен программатор, чтобы прошивать эту плату и отлаживать?

ОтветитьЦитата
Размещено : 29.07.2024 12:55
Aveal
(@aveal)
Top level Admin

@eduard_ivanov Доброго времени суток, в теории должны быть выведены сигналы SWCLK, SWDATA для ST-Link программатора (самый распространенный вариант).

ОтветитьЦитата
Создатель темы Размещено : 29.07.2024 13:08
 Jebo
(@jebo)
Level 1

Доброго времени суток!

Пытаюсь отойти от HAL в сторону CMSIS. Занялся таймерами и тут же возникли проблемы. Мне необходимо чтобы первый таймер считал раз в секунду и с этим проблем нет. Но вот для второго таймера задача посложнее. Он должен считать по сбросу первого таймера до 5 и зажигать светодиоды (плата STM32F3DISCOVERY). Вот тут видимо я что-то настроил неправильно и светодиоды просто горят. В отладчике вроде в прерывание второго таймера я попадаю, но точно не каждые 5 секунд как рассчитывал. Может кто помочь? 

Мою настройку из программы привел ниже: 

void TIM1_sets(void)			// Настройка TIM1
    {
	  RCC -> APB2ENR |= RCC_APB2ENR_TIM1EN;		// Разрешение тактирования от АРВ2 ???
	  TIM1->SMCR &= ~ TIM_SMCR_SMS;				// биты SMS в 000

	  TIM1->PSC = 1999;							// биты предделителя (PSC + 1)
	  TIM1->ARR = 23999;						// биты счетчика (ARR + 1)
	  TIM1->DIER |= TIM_DIER_UIE;				// разрешаем прерывание по переполнению в регистре таймера

	  TIM1->CR2 |= 1<<5;						// включаем TRGO UPDATE для использвания следующим счетчиком
//	  TIM1->RCR |= 1;							// количество повторений основного счетчика (RCR+1) до появления события

	  NVIC_EnableIRQ(TIM1_BRK_TIM15_IRQn);		// разрешение прерывания TIM1 в регистре прерываний
	  NVIC_EnableIRQ(TIM1_UP_TIM16_IRQn);		// разрешение прерывания TIM1 в регистре прерываний

	  NVIC_SetPriority(TIM1_BRK_TIM15_IRQn, 1);	// установка приоритета прерывания в регистре прерываний
	  NVIC_SetPriority(TIM1_UP_TIM16_IRQn, 1);	// установка приоритета прерывания в регистре прерываний
    }

void TIM2_sets(void)			// Настройка TIM2
    {
	  RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;

	  TIM2->SMCR |=7;							// биты SMS в 0111 для настройки генерации в режиме подчиненного External Clock Mode 1
 	  TIM2->ARR = 4;							// биты счетчика (ARR + 1) до скольки вести счет +1

 	  TIM2->DIER |= 1<<6;						// разрешаем прерывание по переполнению в регистре таймера
 	  TIM2->CR2 |= 1<<5;						// включаем TRGO UPDATE для использвания следующим счетчиком


	  NVIC_EnableIRQ(TIM2_IRQn);				// разрешение прерывания TIM2 в регистре прерываний
	  NVIC_SetPriority(TIM2_IRQn, 1);			// установка приоритета прерывания в регистре прерываний

    }

void TIM1_UP_TIM16_IRQHandler(void)		// Обработчик прерывания TIM1
{
  
	TIM1->SR &= ~ TIM_SR_UIF;
  
}

void TIM2_IRQHandler(void)			// Обработчик прерывания TIM2
{
  	GPIOE->ODR ^= 0xFF00;
	TIM2->SR &= ~ TIM_SR_UIF;
}

Далее в основной функции инициализирую, обнуляю счетчики и включаю тактирование

	TIM1_sets();
  	TIM2_sets();
  	TIM1 -> CNT = 0;
  	TIM2 -> CNT = 0;
  	TIM2 -> CR1 = TIM_CR1_CEN;
  	TIM1 -> CR1 = TIM_CR1_CEN;
ОтветитьЦитата
Размещено : 22.11.2024 21:11
Aveal
(@aveal)
Top level Admin

@jebo Доброго времени!

По описанию как будто TIM2 тут избыточен) Инкрементируем переменную по переполнению первого таймера - дошли до нужного значения - делаем действия.

ОтветитьЦитата
Создатель темы Размещено : 25.11.2024 11:52
 Jebo
(@jebo)
Level 1

Запись от: @aveal

@jebo Доброго времени!

По описанию как будто TIM2 тут избыточен) Инкрементируем переменную по переполнению первого таймера - дошли до нужного значения - делаем действия.

 

Для этой задачи второй таймер избыточен. Но я изучаю таймеры и возможность работы таймера от таймера - весьма интересная штука. В интернете есть и пример под HAL. Я пытался разобраться как там настройка работает, но к сожалению мозгов не хватает. Может вы сможете помочь с настройкой? Или хотя бы на что обратить внимание, какой-то конкретный аспект?

 

ОтветитьЦитата
Размещено : 25.11.2024 18:29
Страница 17 / 18
Поделиться: