|
STM32F103 - как получить на выходе пина меандр в половину тактовой частоты? |
|
|
|
 |
Ответов
|
Mar 4 2015, 18:08
|
Гуру
     
Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164

|
Тихо сам с собою.... В принципе, нужную конструкцию я сварганил: Код TIM_TimeBaseStructInit(&TIM_InitStructure); TIM_InitStructure.TIM_Prescaler = 10000-1; TIM_InitStructure.TIM_Period = 1; TIM_TimeBaseInit(TIM2, &TIM_InitStructure);
TIM_OCStructInit(&TIM_OCConfig); TIM_OCConfig.TIM_OCMode = TIM_OCMode_Toggle; TIM_OCConfig.TIM_OutputState = TIM_OutputState_Enable; TIM_OC1Init(TIM2, &TIM_OCConfig);
TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable); TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);
TIM_Cmd(TIM2, ENABLE);
TIM_TimeBaseStructInit(&TIM_InitStructure); TIM_InitStructure.TIM_Prescaler = 2-1; TIM_InitStructure.TIM_Period =10; TIM_TimeBaseInit(TIM3, &TIM_InitStructure);
TIM_OCStructInit(&TIM_OCConfig); TIM_OCConfig.TIM_OCMode = TIM_OCMode_Toggle; TIM_OCConfig.TIM_OutputState = TIM_OutputState_Enable; TIM_OC1Init(TIM3, &TIM_OCConfig);
TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Gated); TIM_SelectInputTrigger(TIM3, TIM_TS_ITR1);
TIM_SelectMasterSlaveMode(TIM3, TIM_MasterSlaveMode_Enable);
TIM_SelectOutputTrigger(TIM3, TIM_TRGOSource_Update);
TIM_ITConfig(TIM3, TIM_DIER_UIE, ENABLE); TIM_Cmd(TIM3, ENABLE); .........................................................
void TIM3_IRQHandler(void) { TIM_Cmd(TIM2, DISABLE); ClockON_FLAG=0; TIM3->SR &= ~TIM_SR_UIF; //reset interrupt flag }
............................................................
while(1) // ЭТО ВМЕСТО ФУНКЦИИ. ПОКА ПРОСТО ЗАЦИКЛИЛ ЗАПУСК ТАЙМЕРА { ClockON_FLAG=1; TIM_Cmd(TIM2,ENABLE); while(ClockON_FLAG); delay_ms(5); } Осталось понять что не так с TIM1. Он работает, генерирует прерывания, но не дергает ножкой. Сама ножка в режиме OUT_PP выдает импульсы. НИкакая другая перферия не включена. У меня контроллер STM32F103RET6, если что...
Сообщение отредактировал zheka - Mar 4 2015, 18:35
|
|
|
|
Сообщений в этой теме
zheka STM32F103 - как получить на выходе пина меандр в половину тактовой частоты? Mar 2 2015, 18:21 ViKo MCO смотрите. Mar 2 2015, 18:26 zheka спасибо, но мне бы с таймером. Я хочу в определенн... Mar 2 2015, 19:10 adnega Цитата(zheka @ Mar 2 2015, 22:10) вывести... Mar 3 2015, 07:04 ViKo Таймер может работать на частоте шины. Делить на 2... Mar 3 2015, 06:55 zheka Вот что мне нужно было:
Код TIM_TimeBaseStructInit... Mar 3 2015, 16:31 SSerge Цитата(zheka @ Mar 3 2015, 23:31) Что-то ... Mar 3 2015, 16:49 zheka И при этом ведущий же таймер будет дергать клоком,... Mar 3 2015, 16:53 SSerge Подойдёт, я думаю, режим Gated Mode - The counter... Mar 3 2015, 17:00 zheka Цитата(SSerge @ Mar 3 2015, 20:00) Подойд... Mar 3 2015, 17:40  SSerge Цитата(zheka @ Mar 4 2015, 00:40) Настрои... Mar 3 2015, 18:14 zheka Значит нужно 999 для TIM2 и 9 для TIM3 ?
Не... я п... Mar 3 2015, 19:13 SSerge Figure 8. Clock tree в реф. мануале.
Видим что вс... Mar 3 2015, 19:13 zheka Вот ведущий таймер
TIM_InitStructure.TIM_Prescale... Mar 3 2015, 19:28 SSerge Так.
SYSCLK=72 000 000
прескалер AHB = 1
прескалер... Mar 3 2015, 19:59 zheka иными словами, при каскадировании второй таймер бу... Mar 3 2015, 20:15 SSerge Цитата(zheka @ Mar 4 2015, 03:07) иными с... Mar 3 2015, 20:30 zheka ЦитатаНу так TRGO-то можно по-разному формировать.... Mar 4 2015, 03:43 zheka Скажите, а у TIM1 есть какие-нибудь особенности в ... Mar 4 2015, 16:48    zheka Цитата(SSerge @ Mar 5 2015, 03:55) Если в... Mar 5 2015, 04:39     SSerge Цитата(zheka @ Mar 5 2015, 11:39) Но - я ... Mar 5 2015, 12:08 zheka Подождите...
Ведь импульс это и есть -туда плюс об... Mar 5 2015, 13:28
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|