STM32 новичку в ARM что к чему
- RoboC
- Мудрый кот
- Сообщения: 1795
- Зарегистрирован: Ср апр 04, 2012 09:55:53
- Откуда: Северодонецк
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Держите.
У гугла надо спросить "stm32f103c8t6" , перейти на картинки и там все ясно будет.
У гугла надо спросить "stm32f103c8t6" , перейти на картинки и там все ясно будет.
- Вложения
-
- arduino-stm32f103c8t6-schematics.png
- (214.08 КБ) 427 скачиваний
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Re: STM32 новичку в ARM что к чему
Myp3ik. достаточно чтобы проработать 1-5 мин, да и выделяется от силы 5 байт.А может быть что, в основном цикле тоже есть выделение дин памяти, при прерывании просто адреса выделяемой памяти друг на друга накладываются?
Re: STM32 новичку в ARM что к чему
А что говорит стек вызовов?
Re: STM32 новичку в ARM что к чему
xVekx, можно попробовать вызовы выделения памяти обернуть как критическую секцию
А еще лучше, как Вы и поступили, просто выделить массив. Где это возможно, от динамического выделения памяти лучше отказаться, особенно там, где оно не нужно в принципе.
Код: Выделить всё
__disable_irq();
uint8_t *txbuf = (uint8_t*)malloc(sizeof(uint8_t) * (2 + count));
__enable_irq();
А еще лучше, как Вы и поступили, просто выделить массив. Где это возможно, от динамического выделения памяти лучше отказаться, особенно там, где оно не нужно в принципе.
Иван Сусанин - первый полупроводник 
Re: STM32 новичку в ARM что к чему
Добрый день, подскажите, для какой цели здесь стоит пред делитель "RTC_DIV", вроде как для более точного измерения, но каким образом это происходит не понятно. Так же в даташите
http://www.st.com/content/ccc/resource/ ... to,-13,759
написано что он перезагружается из RTC_PRL, но я смотрю в отладки IAR, значение RTC_DIV скачет как хочешь и не капельки не совпадает с PRL.
Ну и ещё один вопрос, его можно считывать, но зачем?

http://www.st.com/content/ccc/resource/ ... to,-13,759
написано что он перезагружается из RTC_PRL, но я смотрю в отладки IAR, значение RTC_DIV скачет как хочешь и не капельки не совпадает с PRL.
Ну и ещё один вопрос, его можно считывать, но зачем?
- Вложения
-
- RTC.png
- (65.9 КБ) 265 скачиваний
Re: STM32 новичку в ARM что к чему
STM32F105RBT6 LQFP64 port РA9 pin 42 - подскажите кто в теме, для чего на эту ногу подаётся постоянно 5В?
Re: STM32 новичку в ARM что к чему
Ребята, помогите. Написал код мигания диода по кнопке, не работает. Использую CMSIS. Компилится без ошибок.
Код: Выделить всё
#include "stm32f10x.h" // Device header
int main(void)
{
RCC->APB2ENR|=RCC_APB2ENR_IOPCEN; //включаем тактирование
RCC->APB2ENR|=RCC_APB2ENR_IOPAEN; //включаем тактирование
GPIOC->CRH |= (GPIO_CRH_MODE13_1); // Выставляем бит MODE0. Режим MODE10 = Max Speed 2MHz
GPIOC->CRH &= ~(GPIO_CRH_CNF13); // Сбрасываем биты CNF для бита 13. Режим 00 - Push-Pull
GPIOA->CRL |= GPIO_CRL_CNF0_1;
GPIOA->CRL &= ~(GPIO_CRL_MODE0);
GPIOA->ODR &= ~GPIO_ODR_ODR0; //подтяжка к земле
while(1)
{
if ((GPIOA->IDR & 0x01)==0x01) //Кнопка нажата? Соединение на плюс.
{
GPIOC->BSRR=GPIO_BSRR_BR13; //сбросили бит
}
else
{
GPIOC->BSRR=GPIO_BSRR_BS13; //установили бит
}
}
}
Re: STM32 новичку в ARM что к чему
Добрый день, подскажите пожалуйста как настроить porch для данного контроллера.
http://prntscr.com/iqv0td
Получается жестко задается только задний porch, а как выбрать длину синхроимпульса и передний?
DOTCLK 60MHz.
http://prntscr.com/iqv0td
Получается жестко задается только задний porch, а как выбрать длину синхроимпульса и передний?
DOTCLK 60MHz.
Re: STM32 новичку в ARM что к чему
Так вроде и не должно работать.
Замените GPIOC->BSRR=GPIO_BSRR_BR13; //сбросили бит
На GPIOC->BRR=GPIO_BSRR_BR13; //сбросили бит
Замените GPIOC->BSRR=GPIO_BSRR_BR13; //сбросили бит
На GPIOC->BRR=GPIO_BSRR_BR13; //сбросили бит
Re: STM32 новичку в ARM что к чему
Подкиньте идею в каком направлении копать. Хочу к stm32F051 подключить цветовой сенсор TCS3200, который выдаёт частоту в зависимости от интенсивности света. Максимальная частота может быть 600кГц, 120кГц или 12кГц. Т.е. могу выбрать любую. Каким образом можно на этом кристале померять частоту? У меня уже заняты TIM3 и 15. А из свободных входов есть все 4 TIM1_CH1-4 и TIM1_ETR. Пока как самое простое нашел как измерять период через каналы захвата (называется PWM input в RM), но может есть еще какой способ? Смотрел режим slave trigger mode, но похоже это только запускает счет, но не останавливает.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Re: STM32 новичку в ARM что к чему
Вам и нужен режим захвата PWM. По завершении захвата будет прерывание, в одном регистре будет период PWM, в другом - заполнение. А вообще там таймер можно настроить как угодно...
Иван Сусанин - первый полупроводник 
Re: STM32 новичку в ARM что к чему
Спасибо за отзывы, но режим захвата мне не очень нужен - у него время измерения зависит от измеряемой частоты. Правда забыл написать, что минимальная частота может быть 2 Гц. В моей ситуации это не будет никогда (если только разом не перегорят все светодиоды, хотя может просто отвалиться их питание), но тем не менее.
Просто месяц назад решал аналогичную задачу для микрочипа - надо было мерять период секундных импульсов от RTC в тактовых импульсах контроллера и подгонять эту же частоту, чтобы уменьшить отклонение, чтобы UART нормально работал. И там был применен именно trigger gated mode - один фронт запускал счет, второй - останавливал. Еще и в режиме одиночного запуска: прочитал значение, сделал коррекцию, и запустил для измерения следующего периода. Но в STM32F051 этого режима не нашел, а самый похожий и был режим захвата PWM. Но здесь мне нужен всё же режим подсчета импульсов за интервал времени.
Мне уже прислали исходник в котором используется один таймер как мастер задающий счетный интервал, для слейва, который и считает импульсы за этот интервал. Причем, мастер в режиме одноразового срабатывания. Т.е. я ручками выставляю код цвета - измеряю, меняю код - снова измеряю итд. А врежиме захвата я уже начал настраиваться, чтобы захваченные значения через ПДП заносились в массив в котором я буду высчитывать средний период итп. И как удачно, что слейвом является TIM1. Правда, мастер - TIM3, который у меня уже занят другими делами, но я посмотрел, что могу использовать взамен TIM2, TIM15 или TIM17. Хм, почему эту инфу надо искать по двум даташитам? разве нельзя сразу указать там где есть таблица доступных таймеров с числом каналов захвата итп. инфой? А то трудно распланировать, когда нужно найти кто может запускать АЦП, кто ПДП, а при переходе на другой кристалл, оказывается что этого таймера нет, а "соседний" или не умеет этого делать или работает с каналом ПДП, который занят каким-то другим ресурсом.
Просто месяц назад решал аналогичную задачу для микрочипа - надо было мерять период секундных импульсов от RTC в тактовых импульсах контроллера и подгонять эту же частоту, чтобы уменьшить отклонение, чтобы UART нормально работал. И там был применен именно trigger gated mode - один фронт запускал счет, второй - останавливал. Еще и в режиме одиночного запуска: прочитал значение, сделал коррекцию, и запустил для измерения следующего периода. Но в STM32F051 этого режима не нашел, а самый похожий и был режим захвата PWM. Но здесь мне нужен всё же режим подсчета импульсов за интервал времени.
Мне уже прислали исходник в котором используется один таймер как мастер задающий счетный интервал, для слейва, который и считает импульсы за этот интервал. Причем, мастер в режиме одноразового срабатывания. Т.е. я ручками выставляю код цвета - измеряю, меняю код - снова измеряю итд. А врежиме захвата я уже начал настраиваться, чтобы захваченные значения через ПДП заносились в массив в котором я буду высчитывать средний период итп. И как удачно, что слейвом является TIM1. Правда, мастер - TIM3, который у меня уже занят другими делами, но я посмотрел, что могу использовать взамен TIM2, TIM15 или TIM17. Хм, почему эту инфу надо искать по двум даташитам? разве нельзя сразу указать там где есть таблица доступных таймеров с числом каналов захвата итп. инфой? А то трудно распланировать, когда нужно найти кто может запускать АЦП, кто ПДП, а при переходе на другой кристалл, оказывается что этого таймера нет, а "соседний" или не умеет этого делать или работает с каналом ПДП, который занят каким-то другим ресурсом.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: STM32 новичку в ARM что к чему
[uquote="uldemir",url="/forum/viewtopic.php?p=3337575#p3337575"]режим захвата мне не очень нужен - у него время измерения зависит от измеряемой частоты[/uquote]
все равно ж нужен хоть один период для измерения - в STM32F0xx Snippet Examples есть пример - 03_InputCaptureOnTI1:
This example configures the TIM1 in order to compute the elapsed time between two rising edges occurring on its TI1 (channel 1).
Применял на практике - нужно было определять частоту 425Гц, использовал TIM14 - там как раз один канал захвата, работает четко.
Тут было еще на форуме про reciprocal frequency meter , пробовал практически на STM32F030F4P6 - тоже было в одной теме на форуме, но тему почистили.
Немного теории, правда AVR:
http://www.mshopf.de/proj/avr/freq_meter.html
на STM32F030F4P6, в случае reciprocal, задействовано было 2 таймера
все равно ж нужен хоть один период для измерения - в STM32F0xx Snippet Examples есть пример - 03_InputCaptureOnTI1:
This example configures the TIM1 in order to compute the elapsed time between two rising edges occurring on its TI1 (channel 1).
Применял на практике - нужно было определять частоту 425Гц, использовал TIM14 - там как раз один канал захвата, работает четко.
Тут было еще на форуме про reciprocal frequency meter , пробовал практически на STM32F030F4P6 - тоже было в одной теме на форуме, но тему почистили.
Немного теории, правда AVR:
http://www.mshopf.de/proj/avr/freq_meter.html
на STM32F030F4P6, в случае reciprocal, задействовано было 2 таймера
Re: STM32 новичку в ARM что к чему
В данном случае я не делаю частотомер, а просто опрашиваю датчик цвета. Т.е. мне нужно просто оценить отношение частот на выходе. Так что имхо, наоборот, отсутствие импульсов мне явно сообщит, что для данного канала цвета - темно. И не надо будет ждать полсекунды. Т.е. если я интервал измерения сделаю по 1ms, то через 4 с небольшим, я уже буду знать цвет.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: STM32 новичку в ARM что к чему
а в если использовать захват - то после двух положительных фронтов измеряемого сигнала
Re: STM32 новичку в ARM что к чему
Каким образом это мешает измерению частоты методом ШИМ захвата?uldemir писал(а):Правда забыл написать, что минимальная частота может быть 2 Гц.
Re: STM32 новичку в ARM что к чему
Таймер будет переполняться. А 32 разрядного таймера нет... Вернее есть, но он занят.
Иван Сусанин - первый полупроводник 