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

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

То есть, *_it.c/h файлики, которые генерируются кубом, Вы просто не компилируете вообще?
Реклама
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

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

Сообщение Ярослав555 »

Как это не компилирую? Компилирую. Просто обратите внимание что оригинальные Callback функции объявлены с директивой weak - слабые. Это по своему назначению и не функци вовсе, а так - заглушки. Совершенно законно можно определить Callback функцию с тем же именем у себя в файле, и компилятор возьмет именно ее, как более высшую по проритету. Лично я пока не экспериментировал с выносом Callback в отдельный файл, но спокойно пишу их в мейне в секции юзер кода. Там делаю свич по переданному параметру - таймер, юарт и т.д., и дальше передаю обработку по ветке в нужный объект.
Реклама
Аватара пользователя
neko
Родился
Сообщения: 19
Зарегистрирован: Пт дек 07, 2018 13:56:33

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

Сообщение neko »

Утречка всем.
Нужен STM32 F103C8T6 для ослика DSO138
нашел на али чипы с припиской
LQFP48 и QFP48 QFP
что это значит и подойдут ли такие?
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

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

Сообщение Ярослав555 »

это тип корпуса. STM32 F103C8T6 сущевствуют только в LQFP48. Думаю китайцы не вдавались в детали описания и это все одни и те же чипы.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
neko
Родился
Сообщения: 19
Зарегистрирован: Пт дек 07, 2018 13:56:33

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

Сообщение neko »

Спасибо, прикупил
Реклама
Frogfot
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

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

Сообщение Frogfot »

STM32F103C8T6. Запустил ШИМ на таймере 1, Ок. Пытаюсь запустить на таймере 2 шим 1 - на выходе РА15 глухо. Подскажите плиз где чего я неправильно сделал:
Спойлер

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

RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; // Timer 2 clock enabled
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN | // Enabled Alternate Function I/O clock
                             RCC_APB2ENR_IOPAEN; // Enabled Clock GPIO A

AFIO->MAPR = AFIO_MAPR_SWJ_CFG_JTAGDISABLE |     // Disable JTAG
	             AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1; // Partial remap Timer 2 

GPIOA->CRH =  GPIO_CRH_MODE15_1 | // Output Push-Pull max speed 2 MHz
                         GPIO_CRH_CNF15_1;   // AFO Push-Pull

TIM2->PSC = 359; // Prescaller 16 bit
TIM2->ARR = 0xFFFF;  // Value Auto Reload Register
TIM2->CCR1 = 0x0FFF; // TIM2 capture/compare register 1

TIM2->CCER |= TIM_CCER_CC1E | // Compare 1 output enable
                        TIM_CCER_CC1P;  // Compare 1 output polarity
	
TIM2->CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1; //PWM mode 1, channel 1 Ouput

TIM2->CR1 = TIM_CR1_ARPE | // Auto-reload preload enable
	            TIM_CR1_URS;   // Update request source
	
TM2->CR2 = 0x00;
	
TIM2->DIER = 0; Update interrupt enable
	
TIM2->CR1 |= TIM_CR1_CEN; // Counter enable

Исправил код, добавил remap чтобы всё было в одном месте - не помогло.
Последний раз редактировалось Frogfot Сб фев 15, 2020 12:08:01, всего редактировалось 5 раз.
Хорошему коту и в декабре - март :)
Реклама
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

[uquote="Frogfot",url="/forum/viewtopic.php?p=3791101#p3791101"]Пытаюсь запустить на таймере 2 шим 1 - на выходе РА11 глухо.[/uquote]
Во-первых, не PA11, а PA15 который у тебя и настраивается. Во-вторых, этот пин находится в колонке Remap, а его то ты и не делаешь(AFIO->MAPR).
Frogfot
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

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

Сообщение Frogfot »

[uquote="Reflector",url="/forum/viewtopic.php?p=3791107#p3791107"][uquote="Frogfot",url="/forum/viewtopic.php?p=3791101#p3791101"]Пытаюсь запустить на таймере 2 шим 1 - на выходе РА11 глухо.[/uquote]
Во-первых, не PA11, а PA15 который у тебя и настраивается. Во-вторых, этот пин находится в колонке Remap, а его то ты и не делаешь(AFIO->MAPR).[/uquote]
Ок, спасибо, сейчас исправлю. На РА 11 запускал с таймера 1 выход 4, забыл исправить, а ремап упустил из вида.

Типа так?

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

AFIO->MAPR = AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1; // Partial remap Timer 2 
Добавлено after 9 hours 18 minutes 59 seconds:
2 Reflector: исправил, всё равно нет ШИМа на выходе. Где-то ещё одна собака порылась :) А может и не одна.
Хорошему коту и в декабре - март :)
a797945
Мучитель микросхем
Сообщения: 446
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Откуда: 69.Ржев

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

Сообщение a797945 »

у таймера, что касается канала все перепроверь
Frogfot
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

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

Сообщение Frogfot »

[uquote="a797945",url="/forum/viewtopic.php?p=3791211#p3791211"]у таймера, что касается канала все перепроверь[/uquote]
Таймер в режиме переполнения отлично работет, прерывания выдаёт. Пытаюсь выдать с него ШИМ - где-то что-то или не доделал, или неправильно сделал, ШИМа нет.
Хорошему коту и в декабре - март :)
Кислородный
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Чт фев 13, 2020 07:41:02

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

Сообщение Кислородный »

Мануал и даташит в помощь!
ШИМ получился 0% для первого канала, а настраивается для второго канала - регистр CCR2, в то время как регистр CCR1 по умолчанию = 0, а законфиген на ШИМ именно первый канал. Нужно поменять CCR2 на CCR1.
Ну и при значениях PSC = 359 и ARR = 65535, у вас получится оооочень бооооольшооой период в несколько секунд при дефолтной частоте 8 МГц. Для отдельных вспышек светодиода пойдет, но не для регулировки яркости этого светодиода.

Ну и вторым вопросом, чусствую, будет вопрос "аааа, куда пропала отладкааааа??? почему он в пошаговой отладке отвалился???"
Последний раз редактировалось Кислородный Сб фев 15, 2020 10:26:38, всего редактировалось 1 раз.
еавс!
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

Frogfot, я от всех F1 уже избавился, потому проверить не могу, но на PA15 еще JTDI висит и это вход. В большинстве случаев используется SWD и лишние ноги JTAG отключаются через тот же ремап в начале программы.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

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

Сообщение VladislavS »

Совершенно верно.

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

AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_1;  // PA15 отключить от J-TAG
Frogfot
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

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

Сообщение Frogfot »

[uquote="Reflector",url="/forum/viewtopic.php?p=3791227#p3791227"]Frogfot, я от всех F1 уже избавился, потому проверить не могу.[/uquote]Круто, я ещё играюсь F103, вот хочу попробовать Black Pils на STM32F411.
[uquote="Reflector",url="/forum/viewtopic.php?p=3791227#p3791227"]Frogfot но на PA15 еще JTDI висит и это вход. В большинстве случаев используется SWD и лишние ноги JTAG отключаются через тот же ремап в начале программы.[/uquote]
Слона то я и не заметил :) Благодарю, уже когда-то натыкался на эти грабли, но запамятовал. Шью я тоже по SWD.Типа так?

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

AFIO->MAPR = AFIO_MAPR_SWJ_CFG_JTAGDISABLE
Сейчас исправлю, попробую.
Последний раз редактировалось Frogfot Сб фев 15, 2020 10:52:56, всего редактировалось 3 раза.
Хорошему коту и в декабре - март :)
a797945
Мучитель микросхем
Сообщения: 446
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Откуда: 69.Ржев

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

Сообщение a797945 »

о, все расписали


только дефолтовая там не 8МГц
Frogfot
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

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

Сообщение Frogfot »

Отключил JTAG, всё равно ШИМа нет :(

Добавлено after 12 minutes 53 seconds:
[uquote="Кислородный",url="/forum/viewtopic.php?p=3791225#p3791225"]Мануал и даташит в помощь![/uquote]
Типа "Бог в помощь!" - спасибо.

[uquote="Кислородный",url="/forum/viewtopic.php?p=3791225#p3791225"]Мануал и даташит в помощь!
ШИМ получился 0% для первого канала, а настраивается для второго канала - регистр CCR2, в то время как регистр CCR1 по умолчанию = 0, а законфиген на ШИМ именно первый канал. Нужно поменять CCR2 на CCR1.
Ну и при значениях PSC = 359 и ARR = 65535, у вас получится оооочень бооооольшооой период в несколько секунд при дефолтной частоте 8 МГц. Для отдельных вспышек светодиода пойдет, но не для регулировки яркости этого светодиода.[/uquote]
Частота 72 МГц, на таймере 1 работает нормально, на выходах ШИМ светодиоды, на таймере 1 мигает, на таймере 2 глухо. Сейчас посмотрю исправлю CCR2 на CCR1. Спасибо, до ночи сидел, нахомутал.

[uquote="Кислородный",url="/forum/viewtopic.php?p=3791225#p3791225"]Ну и вторым вопросом, чусствую, будет вопрос "аааа, куда пропала отладкааааа??? почему он в пошаговой отладке отвалился???"[/uquote]
Шью по SWD, такого вопроса не будет.

Добавлено after 16 minutes 32 seconds:
[uquote="Кислородный",url="/forum/viewtopic.php?p=3791225#p3791225"]Нужно поменять CCR2 на CCR1.[/uquote]
Исправил, не помогло. ШИМа нет. Уважаемые знатоки, какие у кого ещё предложения?
Хорошему коту и в декабре - март :)
Кислородный
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Чт фев 13, 2020 07:41:02

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

Сообщение Кислородный »

Вы нас так тестируете на внимательность?? :)
TIM1->CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1; //PWM mode 1, channel 1 Ouput

На первых порах приучите себя не копипастить текст, а писать заново. Куда вам торопиться? Зато запомните назначение регистров и битов и уж точно не забудете переправить TIM1 на TM2 и CCR2 на CCR1.
А для быстрой замены таймера есть такая фича:

#define USED_TIM TIM2
USED_TIM->CCMR1 = TIM_CCMR.......
USED_TIM->CR1 |= TIM_CR1_CEN.......

и надо лишь заменить в дефайне TIM2 на TIM1
еавс!
Frogfot
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

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

Сообщение Frogfot »

[uquote="Кислородный",url="/forum/viewtopic.php?p=3791278#p3791278"]Вы нас так тестируете на внимательность?? :)
TIM1->CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1; //PWM mode 1, channel 1 Ouput[/uquote]
Благодарю, 100 раз просматривал, не заметил. Исправил, но ШИМа по прежнему нет.

Привожу код инициализации для Таймера 1 - который работает:
Спойлер

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


// ----------------------------------------------------------------------
void Init_TC1 (void)
{
  TIM1->PSC   = 719; // 72; // TIM1 prescaler
	
  TIM1->ARR   = 0xFFFF; // 1000; // TIM1 auto-reload register

  TIM1->CCR4  = 0x0FFF; // 300; // TIM1 and TIM8 capture/compare register	//коэф. заполнения

  TIM1->CCER  = TIM_CCER_CC4E | // Compare 4 output enable
              	TIM_CCER_CC4P;  // Compare 4 output polarity

  TIM1->BDTR  = TIM_BDTR_MOE; // OC and OCN outputs are enabled

  TIM1->CCMR2 = TIM_CCMR2_OC4M_2 | TIM_CCMR2_OC4M_1; // PWM mode 1, прямой ШИМ 4 канал

  TIM1->CR1   = TIM_CR1_CEN; // Counter enabled
}
Хорошему коту и в декабре - март :)
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

[uquote="Frogfot",url="/forum/viewtopic.php?p=3791284#p3791284"]Исправил, но ШИМа по прежнему нет.[/uquote]
Откопал старую платку с F103, почему у меня с твоим последним кодом ШИМ есть?
Спойлер

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

	RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; // Timer 2 clock enabled
	RCC->APB2ENR |= RCC_APB2ENR_AFIOEN | // Enabled Alternate Function I/O clock
		RCC_APB2ENR_IOPAEN; // Enabled Clock GPIO A

	AFIO->MAPR = AFIO_MAPR_SWJ_CFG_JTAGDISABLE |     // Disable JTAG
		AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1; // Partial remap Timer 2

	GPIOA->CRH = GPIO_CRH_MODE15_1 | // Output Push-Pull max speed 2 MHz
		GPIO_CRH_CNF15_1;   // AFO Push-Pull

	TIM2->PSC = 359; // Prescaller 16 bit
	TIM2->ARR = 0xFFFF;  // Value Auto Reload Register
	TIM2->CCR1 = 0x0FFF; // TIM2 capture/compare register 1

	TIM2->CCER |= TIM_CCER_CC1E | // Compare 1 output enable
		TIM_CCER_CC1P;  // Compare 1 output polarity

	TIM2->CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1; //PWM mode 1, channel 1 Ouput

	TIM2->CR1 = TIM_CR1_ARPE | // Auto-reload preload enable
		TIM_CR1_URS;   // Update request source

	TIM2->CR2 = 0x00;

	TIM2->DIER = 0; //Update interrupt enable

	TIM2->CR1 |= TIM_CR1_CEN; // Counter enable
Кислородный
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Чт фев 13, 2020 07:41:02

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

Сообщение Кислородный »

Со всеми замеченными правками - должно работать. Просто вы наверно не замечаете его.
Вот, работает:
Вложения
DS1Z_QuickPrint3.png
(6.12 КБ) 234 скачивания
еавс!
Ответить

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