Например TDA7294

Форум РадиоКот • Просмотр темы - STM32 новичку в ARM что к чему
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 19:19:25

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 8459 ]     ... , , , 178, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вс апр 09, 2017 08:53:05 
Потрогал лапой паяльник
Аватар пользователя

Карма: 19
Рейтинг сообщений: 8
Зарегистрирован: Чт окт 31, 2013 10:54:32
Сообщений: 381
Рейтинг сообщения: 0
Мяу коты.

Как записать бит из байта в отдельный пин stm32.

Вот есть функции, но они мне не подходят.
GPIO_ResetBits();
GPIO_SetBits();

Есть байт например 0b11110000(он меняется в программе), мне нужно записать 7 бит этого байта в PD9, 5 бит в РВ4 и т.д. Как это реализовать. Туплю сижу.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вс апр 09, 2017 09:40:23 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
alex38779 писал(а):
Как записать бит из байта в отдельный пин stm32.

Для этого есть регистр BSRR, можно за раз записать любое количество бит не трогая все остальные.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вс апр 09, 2017 14:54:26 
Сверлит текстолит когтями
Аватар пользователя

Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1231
Откуда: Баку
Рейтинг сообщения: 0
Используя маску, например, выделяете нужный бит, а по результату (ноль/!ноль) оперируете регистрами "сет-ресет", как сказано выше. Еще через бит-бандинг можно, если он присутствует.

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вс апр 09, 2017 15:24:35 
Вымогатель припоя

Карма: 4
Рейтинг сообщений: 30
Зарегистрирован: Чт фев 16, 2012 19:00:11
Сообщений: 502
Рейтинг сообщения: 0
Цитата:
Есть байт например 0b11110000(он меняется в программе), мне нужно записать 7 бит этого байта в PD9, 5 бит в РВ4 и т.д. Как это реализовать. Туплю сижу.
Код:
if (b & 0x80) GPIOD->BSRR = 1 << 9; else GPIOD->BRR = 1 << 9;
if (b & 0x20) GPIOB->BSRR = 1 << 4; else GPIOB->BRR = 1 << 4;


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вс апр 09, 2017 18:07:22 
Мучитель микросхем
Аватар пользователя

Карма: 6
Рейтинг сообщений: 87
Зарегистрирован: Вс янв 09, 2011 23:05:37
Сообщений: 450
Откуда: СССР
Рейтинг сообщения: 1
Или так

Код:
GPIOD->BSRR = b & 0x80 ? GPIO_BSRR_BS9 : GPIO_BSRR_BR9;
GPIOB->BSRR = b & 0x20 ? GPIO_BSRR_BS4 : GPIO_BSRR_BR4;

_________________
Иван Сусанин - первый полупроводник :solder:


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт апр 18, 2017 12:37:06 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 1368
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7214
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Снова я затупил. может, кто знает, где. Был код на stm32F051. Хочу перенести на stm32F030. Но в 030 нет TIM15. Так как этот таймер мне создавал переодические прерывания и запуск АЦП, пришлось его переместить на TIM1. И вот: нет прерываний (про АЦП еще даже не смотрел).
Код:
// TIM1 - timebase
  TIM1->CR1 &= ~TIM_CR1_CEN ; // disable timer
  TIM1->PSC = 0;
  TIM1->ARR = 20000-1; // 8MHz / 20000 = 400Hz 
  TIM1->CR1 |= TIM_CR1_URS | TIM_CR1_ARPE ; // only overfow generate UEV
  TIM1->DIER |= TIM_DIER_UIE; // Update interrupt 1 for enable.
  TIM1->CR1  |= TIM_CR1_CEN   ; //enable timer
  TIM1->CR2 |= TIM_CR2_MMS_1 ; // trigger update event    
  NVIC_EnableIRQ(TIM1_BRK_UP_TRG_COM_IRQn); 


вот обработчик...
Код:
void TIM1_BRK_UP_TRG_COM_IRQnHandler(void) {
         
    TIM1
->SR &= (uint32_t) (~TIM_SR_UIF);
    flag.tick = 1;
В отладчике что-то считает. в регистре SR значение 0x001F - Все возможные флаги прерываний выставлены. Не мог же я снова перепутать название функции обработчика? ведь делаю NVIC_EnableIRQ(TIM1_BRK_UP_TRG_COM_IRQn) и обработчик зовётся TIM1_BRK_UP_TRG_COM_IRQnHandler.

Добавлено after 1 hour 38 minutes 51 second:
Еще странность... при отладке не разрешает поставить брейкпоинт в этом обработчике. Причем, в соседнем - позволяет (это там где тёмно-серые поля):
Изображение

Таксс. в хидерах, я не нашел вообще такого названия. Так как должен называться обработчик прерывания от TIM1 ?

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт апр 18, 2017 12:52:38 
Встал на лапы

Карма: 1
Рейтинг сообщений: 39
Зарегистрирован: Ср фев 01, 2012 10:55:53
Сообщений: 145
Рейтинг сообщения: 0
TIM1 немного отличается от других таймеров. У него надо еще задавать количество повторений в регистре RCR, иначе update event не будет происходить.
Спойлер
Код:
  uint8_t TIM_RepetitionCounter;  /*!< Specifies the repetition counter value. Each time the RCR downcounter
                                       reaches zero, an update event is generated and counting restarts
                                       from the RCR value (N).
                                       This means in PWM mode that (N+1) corresponds to:
                                          - the number of PWM periods in edge-aligned mode
                                          - the number of half PWM period in center-aligned mode
                                       This parameter must be a number between 0x00 and 0xFF.
                                       @note This parameter is valid only for TIM1. */
} TIM_TimeBaseInitTypeDef;       


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт апр 18, 2017 13:18:31 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 1368
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7214
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Там значение 0 - значит REP+1 = 1. Так что не влияет. Нашел - всё-таки опять напутал с названием функции. Должно было быть TIM1_BRK_UP_TRG_COM_IRQHandler(void) - без 'n'.

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт апр 18, 2017 13:43:17 
Встал на лапы

Карма: 1
Рейтинг сообщений: 39
Зарегистрирован: Ср фев 01, 2012 10:55:53
Сообщений: 145
Рейтинг сообщения: 0
uldemir писал(а):
Там значение 0 - значит REP+1 = 1.

Нет, не так. Update event генерируется когда RCR-1=0, то есть для генерации каждый период надо установить RCR=1. Я лично это уже проходил...
Извините, вспомнил в чем у меня была проблема - когда инициализировал таймер, не задавал значение TIM_RepetitionCounter и там был мусор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт апр 18, 2017 14:52:40 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 1368
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7214
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Cудя по картинке, мне как раз и нужно там 0. Если записать там 1, то update event будет происходить через раз. О, и у TIM15 тоже был такой регистр. А я и не обратил внимания.

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн апр 24, 2017 04:34:48 
Вымогатель припоя

Зарегистрирован: Вт ноя 02, 2010 17:46:37
Сообщений: 574
Рейтинг сообщения: 0
Подскажите сброс/установку несколько битов в регистр MODER можно сделать как то более по феншуйне( код был по меньше, а то там ещё парочку регистров настроить и растянется это все на всю страницу :shock: )
Код:

#define PIN_F1          15
#define PIN_F2          14
#define PIN_F3          13
#define PIN_F4          12

#define MASK_KEY2   ((1<<PIN_F1)|(1<<PIN_F2)|(1<<PIN_F3)|(1<<PIN_F4))

#define KEY_PORT2   GPIOB


    KEY_PORT2->MODER  &= ~(GPIO_MODER_MODER0 << (PIN_F1 * 2)
                  |GPIO_MODER_MODER0 << (PIN_F2 * 2)
                  |GPIO_MODER_MODER0 << (PIN_F3 * 2)
                  |GPIO_MODER_MODER0 << (PIN_F4 * 2)
                  );


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн апр 24, 2017 05:30:07 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
Использовал поляка вариант, удобно когда кнопки на разных портах:
Спойлер
Код:
static  GPIO_TypeDef * const KeyGPIOInitTable[] = {
      GPIOC, GPIOC, GPIOC, GPIOC, GPIOA,
      0
};
static uint8_t const KeyPINInitTable[] = {
      5, 10, 11, 12, 15,
      0
};

Код:
void gpio_conf(GPIO_TypeDef *GPIO, uint8_t pin, uint8_t mode, uint8_t type, uint8_t speed, uint8_t pullup, uint8_t af)
{
    GPIO->MODER = (GPIO->MODER & MASK2BIT(pin)) | (mode << (pin * 2));
    GPIO->OTYPER = (GPIO->OTYPER & MASK1BIT(pin)) | (type << pin);
    GPIO->OSPEEDR = (GPIO->OSPEEDR & MASK2BIT(pin)) | (speed << (pin * 2));
    GPIO->PUPDR = (GPIO->PUPDR & MASK2BIT(pin)) | (pullup << (pin * 2));
    if (pin > 7)
    {
      GPIO->AFR[1] = (GPIO->AFR[1] & AFMASKH(pin)) | (af << ((pin - 8) * 4));
    }
    else
    {
      GPIO->AFR[0] = (GPIO->AFR[0] & AFMASKL(pin)) | (af << ((pin)*4));
    }
}

Код:
......................................
   while(KeyGPIOInitTable[i] != 0)
   {
      gpio_conf(KeyGPIOInitTable[i], KeyPINInitTable[i], MODE_INPUT, TYPE_PUSHPULL, SPEED_2MHz, PULLUP_UP, 0);
      i++;
   }
....................................

другой пример и хидер тут:
http://en.radzio.dxp.pl/stm32f429idisco ... oller.html


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн апр 24, 2017 06:19:44 
Вымогатель припоя

Зарегистрирован: Вт ноя 02, 2010 17:46:37
Сообщений: 574
Рейтинг сообщения: 0
О спасибо, я же уже натыкался на этот пример правда давненько забыл на проч про него. :(
Если ещё добавить X-macros на соотношение порта и пина то будет отлично. :))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Чт май 11, 2017 18:54:07 
Вымогатель припоя
Аватар пользователя

Карма: 7
Рейтинг сообщений: 58
Зарегистрирован: Чт янв 20, 2011 09:07:08
Сообщений: 665
Откуда: Пермь
Рейтинг сообщения: 0
Как подсчитать количество нажатий кнопки таймером?
Использую TIM2, тактирую от ETR2 (pull_up), опускаю ETR2 на землю кнопкой, запускаю таймер HAL_TIM_Base_Start(&htim2)
Значение счётчика получаю __HAL_TIM_GET_COUNTER(&htim2)
Что-то не работает увеличение счётчика TIM2 от нажатий...

Код:
/* TIM2 init function */
static void MX_TIM2_Init(void)
{

  TIM_ClockConfigTypeDef sClockSourceConfig;
  TIM_MasterConfigTypeDef sMasterConfig;

  htim2.Instance = TIM2;
  htim2.Init.Prescaler = 0;
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim2.Init.Period = 0;
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
  {
    Error_Handler();
  }

  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_ETRMODE2;
  sClockSourceConfig.ClockPolarity = TIM_CLOCKPOLARITY_NONINVERTED;
  sClockSourceConfig.ClockPrescaler = TIM_CLOCKPRESCALER_DIV1;
  sClockSourceConfig.ClockFilter = 0;
  if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
  {
    Error_Handler();
  }

  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
  {
    Error_Handler();
  }

}

_________________
Никакая контра не уйдёт от нас


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пт май 12, 2017 03:50:36 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21790
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Как подсчитать количество нажатий кнопки таймером?

А как Вы собираетесь ликвидировать дребезг кнопки?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пт май 12, 2017 03:51:35 
Вымогатель припоя
Аватар пользователя

Карма: 7
Рейтинг сообщений: 58
Зарегистрирован: Чт янв 20, 2011 09:07:08
Сообщений: 665
Откуда: Пермь
Рейтинг сообщения: 0
А как Вы собираетесь ликвидировать дребезг кнопки?

Да никак. Я просто разбираюсь таймерами STM32 :)))

_________________
Никакая контра не уйдёт от нас


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Ср май 17, 2017 11:05:35 
Первый раз сказал Мяу!
Аватар пользователя

Карма: 3
Рейтинг сообщений: 3
Зарегистрирован: Сб авг 22, 2015 08:32:37
Сообщений: 23
Откуда: Киев
Рейтинг сообщения: 0
Всем доброго времени суток. Спаял платку с STM32F071. Пока решил не разбираться детально с регистрами, сконфигурирован периферию Кубом. И вот что интересно, МК виснет, если выбрать тактирование от HSE, от HSI работает нормально. Не работал раньше с линейкой F0, и впервые конфигурирую периферию Кубом, поэтому возникают вопросы. Можно на 100% доверять конфигам периферии от Куба? Для F0, если проблемы с HSE, разве не включается автоматически HSI? Если я случайно перегрел при пайке выводы входов тактирования.

_________________
Нужно добиваться того чего хочется. В противном случае останется лишь довольствоваться тем, что есть.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Ср май 17, 2017 14:29:05 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 157
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3328
Рейтинг сообщения: 0
Версия Куба? Если не ошибаюсь в 20 есть баг с настройкой тактирования.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Ср май 17, 2017 15:01:52 
Первый раз сказал Мяу!
Аватар пользователя

Карма: 3
Рейтинг сообщений: 3
Зарегистрирован: Сб авг 22, 2015 08:32:37
Сообщений: 23
Откуда: Киев
Рейтинг сообщения: 0
Куб 4.20.1. С HSE всё оказалось до смешного банально - не заметил мелкую закоротку между ножками. Убрал - заработало HSE. Теперь та же проблема с LSE - не возводится в 1 бит LSERDY.

_________________
Нужно добиваться того чего хочется. В противном случае останется лишь довольствоваться тем, что есть.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Чт май 18, 2017 18:58:04 
Собутыльник Кота
Аватар пользователя

Карма: 14
Рейтинг сообщений: 117
Зарегистрирован: Сб фев 20, 2010 14:00:12
Сообщений: 2994
Откуда: Москва
Рейтинг сообщения: 0
А почему в итоге проц не завелся от HSI? Ведь по идее, даже если "на ходу" из схемы выдрать кварц, то МК переключится на внутренний RC генератор.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 8459 ]     ... , , , 178, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y