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

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

Сообщение a5021 »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4053788#p4053788"]СКАЗОЧНИК, тупоконечная - big endian (многие армы, кстати, умеют "в оба конца"), остроконечная - "little endian" (подавляющее большинство процессоров и МК). Та же структура для тупоконечных выглядела бы так:

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

typedef struct
{
  uint16_t  RESERVED0;
  __IO uint16_t CRH;
  uint16_t  RESERVED1;
  __IO uint16_t CRL;
...
[/uquote]

Ну и да. Странно видеть в 32-разрядном МК 32-рарядный счетчик, где 16-битные его половинки не лежат вместе. Вообще оно-малия -- шестнадцатибитная периферия неродной оконечности.
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

В 32-битном МК могут быть не 32-битные шины к периферии. По разным причинам.
Реклама
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

[uquote="a5021",url="/forum/viewtopic.php?p=4054368#p4054368"]Ну и да. Странно видеть в 32-разрядном МК 32-рарядный счетчик, где 16-битные его половинки не лежат вместе.[/uquote]
А как вам буферы для USB, где ВЕСЬ буфер 16-битный, но доступ из кода как будто 32-битный. То есть с точки зрения кода там постоянно чередуются 16-битные данные - 16-битная дырка.
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

COKPOWEHEU, никак, разработчики МК принимали жестокую дурь!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Eddy_Em, Да вы-то знаете, конечно. И про наркоманский EPnR тоже.
Реклама
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=4054370#p4054370"]В 32-битном МК могут быть не 32-битные шины к периферии. По разным причинам.[/uquote]
В жизни все может быть, но где тут "не 32-битные шины к периферии" я не вижу.

Изображение
Вложения
2021-07-01_183754.jpg
(88.81 КБ) 487 скачиваний
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Где указана разрядность? Я не вижу.
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

Разрядность шины APB1 ? Вы точно нуждаетесь в моей помощи?
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Разрядность шин к периферии.
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

А бывает и не к периферии? Предпочтете углубиться в маразм?
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

То ли лыжи не едут...
Ковыряюсь с STM32F072.
В общем, забыл PA0 и PA1 настроить в режим аналогового входа (т.е. они по умолчанию были как 00 - input), завожу АЦП и… Внезапно, получаю данные!
Это как? Специально погрепал исходники (вдруг где-то таки установил регистр в нужное значение) - ничего подобного!!!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

А почему бы и нет? Ко входу АЦП вывод всё равно подключён.

Просто конфигурация в аналоговом режиме ещё и входной триггер шмидта отключает (иначе на полупитании "сквозить" может немного) ну и резисторы pullup/pulldown отключает гарантировано.
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="a5021",url="/forum/viewtopic.php?p=4055770#p4055770"]А бывает и не к периферии?[/uquote]Конкретное периферийное устройство может использовать не все разряды шины.

[uquote="a5021",url="/forum/viewtopic.php?p=4055770#p4055770"]Предпочтете углубиться в маразм?[/uquote]Опять хамство? Зарекался ведь уже обходить стороной...
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

[uquote="WiseLord",url="/forum/viewtopic.php?p=4055844#p4055844"]А почему бы и нет?[/uquote]
И действительно!
Вот жаль, что я девборду развел и спаял до того, как почитал документацию на touch sensor: оказывается, в каждой группе один канал должен быть подключен к опорному кондеру! Но разводка пинов такая кривая, что невозможно без ущерба остальной периферии хотя бы 2 канала одной группы вывести в LQFP48.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Eddy_Em, занимаетесь сейчас тачсенсором? Не знаете насколько он отличается от L151?
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

COKPOWEHEU, пока не занимаюсь. Может, когда-нибудь с ним попробую... В сниппетах же готовый код есть.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Где именно? Можно ссылку?
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

STM32F0xx_Snippets_Package_V1.2.0/Projects/TSC/01_Acquisition
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Едва нашел место, где не требуют регистрации. На случай если кому понадобится: ссылка внизу https://www.compel.ru/lib/58942
Правда, мне эта штука бесполезна, поскольку используется аппаратный модуль TSC, которого в моем L151 нет, там только заготовка на аналоговых ключах.
Родился
Сообщения: 1
Зарегистрирован: Вт июл 06, 2021 19:44:45

Сообщение ougen »

Здравствуйте, никак не могу побороть таймер TIM1 в STM32F4. Вроде делаю по мануалам, а ШИМ нет. Подскажите, пожалуйста, что не так.

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

void init_3ph_pwm_1(void)
{
	RCC -> AHB1ENR |= RCC_AHB1ENR_GPIOEEN;     //включаем тактирование порта E
	GPIOE -> MODER |= MODE_AF;                 //режим альтернативных функций
	GPIOE -> OTYPER |= MODE_PP;                //настраиваем выход, как Push-Pull 
	GPIOE -> OSPEEDR = GPIO_SPEED_FREQ_MEDIUM; //скорость порта - до 20 мгц
	RCC -> APB2ENR |= RCC_APB2ENR_TIM1EN;      //включаем тактирование TIM1
        TIM1 -> CCER = 0;                          //обнуляем CCER (выключаем каналы)
	TIM1->PSC = 0x0;    //TIM prescaler
        TIM1->ARR = 0x220;  //TIM auto-reload register
	
        TIM1->CCMR1 |= TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1;     // ШИМ режим 1 (OC1M = 110) | TIM_CCMR1_OC1M_0
        TIM1->CCMR1 |= TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1;     // ШИМ режим 1 (OC1M = 110) | TIM_CCMR1_OC2M_0
        TIM1->CCMR2 |= TIM_CCMR2_OC3M_2 | TIM_CCMR2_OC3M_1;     // ШИМ режим 1 (OC1M = 110) | TIM_CCMR2_OC3M_0
	TIM1->CR1 |= TIM_CR1_ARPE;//Включен режим предварительной записи регистра автоперезагрузки
        TIM1->CCMR1 |= TIM_CCMR1_OC1PE; // Включаем регистр предварительной загрузки компатратора канала 1
        TIM1->CCMR1 |= TIM_CCMR1_OC2PE; // Включаем регистр предварительной загрузки компатратора канала 2
        TIM1->CCMR2 |= TIM_CCMR2_OC3PE; // Включаем регистр предварительной загрузки компатратора канала 3
        TIM1->CR1 |= TIM_CR1_DIR; // Если установить, будет считать вниз
        TIM1->CR1 |= TIM_CR1_CMS_0 | TIM_CR1_CMS_1; // Режим 3 выравнивания по центру
	TIM1->CCER |= TIM_CCER_CC1E | TIM_CCER_CC1NE;
        TIM1->CCER |= TIM_CCER_CC2E | TIM_CCER_CC2NE;
        TIM1->CCER |= TIM_CCER_CC3E | TIM_CCER_CC3NE;
	TIM1 -> BDTR |= TIM_BDTR_MOE;              //разрешаем вывод сигнала на выводы
	TIM1 -> CR1 |= TIM_CR1_CEN;                //счетчик разрешен
}
Этой функцией выставляю скважность

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

void set_sin_freq(void)
{ 
  TIM1->CCR1 = 50;
  TIM1->CCR2 = 100;
  TIM1->CCR3 = 150;
  
}
Ответить

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