STM32: не сбрасываются флаги таймеров

Все о микроконтроллерах: AVR, PIC, STM8, STM32, Arduino, Altera, Xilinx, все что угодно. Этот раздел для всего что клацает байтиками.
Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 29 авг 2013, 08:58

Есть камень, stm32f103c6. В нем, должны происходить прерывания по таймеру.

При инициализации, выполняется вот такое:

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

 
    TIM2->PSC   = 24 - 1;                                        // 1us/tick
    TIM2->DIER =  TIM_DIER_UIE;

    TIM2->ARR   = period;
    TIM2->CCR1 = pw;
    TIM2->CCR2 = pw + timeout_us;

    NVIC_EnableIRQ(TIM2_IRQn);
    TIM2->CR1   = TIM_CR1_CEN;


Ничего страшного - просто запускается таймер. Разрешено только прерывание по обновлению.

Обработчик прерывания выглядит вот так:

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

  extern "C" void TIM2_IRQHandler();
  void TIM2_IRQHandler()
  {
      TurnOn( TEST_PIN );
      TurnOff( TEST_PIN );
     
      TIM2->SR = 0; 
  }


Вопреки ожиданиям, на ножке появляется два прямоугольника:
double.png
double.png (2.66 КБ) 6660 просмотров


Тоесть, флаг не сбрасывается.

Сначала, я подумал, что задеваю какие-то зарезервированные биты. Поэтому, сделал как в STMовской библиотеке:

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

TIM2->SR = (uint16_t)~TIM_IT_Update;


Результат абсолютно тот-же. Самое интересное, что вызов функции из библиотеки работает правильно:

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

TIM_ClearITPendingBit(TIM2, TIM_IT_Update);


Хотя, там только одна строчка. После недолгих экспериментов, я обнаружил, что имеет значение сколько тактов остается до конца прерывания:

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

  extern "C" void TIM2_IRQHandler();
  void TIM2_IRQHandler()
  {
      TurnOn( TEST_PIN );
      TurnOff( TEST_PIN );
     
      TIM2->SR = 0; 
      Nop();
      Nop();
  }


Выдает правильную картинку:
single.png
single.png (2.57 КБ) 6660 просмотров


Если поставить TIM2->SR = 0; в начало прерывания, то флаг сбрасывается корректно.

Кто-нибуть сталкивался с таким?

Аватара пользователя
N1X
Сообщения: 321
Откуда: Беларусь, Гомель

Сообщение N1X » 29 авг 2013, 11:24

Не помню где, но в какой-то периферии я такое уже видел... Если слишком шустро, то тоже кажись влетал в хендлер второй раз... Вот только не помню stm8 или stm32... Причем мне сдается что это какой-то коммуникационный интерфейс был...

yaachii
На форуме

Сообщения: 17932

Сообщение yaachii » 19 апр 2025, 12:37


yaachii
На форуме

Сообщения: 17932

Сообщение yaachii » 02 май 2025, 12:57

audiobookkeeper.rucottagenet.rueyesvision.rueyesvisions.comfactoringfee.rufilmzones.rugadwall.rugaffertape.rugageboard.rugagrule.rugallduct.rugalvanometric.rugangforeman.rugangwayplatform.rugarbagechute.rugardeningleave.rugascautery.rugashbucket.rugasreturn.rugatedsweep.rugaugemodel.rugaussianfilter.rugearpitchdiameter.ru
geartreating.rugeneralizedanalysis.rugeneralprovisions.rugeophysicalprobe.rugeriatricnurse.rugetintoaflap.rugetthebounce.ruhabeascorpus.ruhabituate.ruhackedbolt.ruhackworker.ruhadronicannihilation.ruhaemagglutinin.ruhailsquall.ruhairysphere.ruhalforderfringe.ruhalfsiblings.ruhallofresidence.ruhaltstate.ruhandcoding.ruhandportedhead.ruhandradar.ruhandsfreetelephone.ru
hangonpart.ruhaphazardwinding.ruhardalloyteeth.ruhardasiron.ruhardenedconcrete.ruharmonicinteraction.ruhartlaubgoose.ruhatchholddown.ruhaveafinetime.ruhazardousatmosphere.ruheadregulator.ruheartofgold.ruheatageingresistance.ruheatinggas.ruheavydutymetalcutting.rujacketedwall.rujapanesecedar.rujibtypecrane.rujobabandonment.rujobstress.rujogformation.rujointcapsule.rujointsealingmaterial.ru
journallubricator.rujuicecatcher.rujunctionofchannels.rujusticiablehomicide.rujuxtapositiontwin.rukaposidisease.rukeepagoodoffing.rukeepsmthinhand.rukentishglory.rukerbweight.rukerrrotation.rukeymanassurance.rukeyserum.rukickplate.rukillthefattedcalf.rukilowattsecond.rukingweakfish.rukinozones.rukleinbottle.rukneejoint.ruknifesethouse.ruknockonatom.ruknowledgestate.ru
kondoferromagnet.rulabeledgraph.rulaborracket.rulabourearnings.rulabourleasing.rulaburnumtree.rulacingcourse.rulacrimalpoint.rulactogenicfactor.rulacunarycoefficient.ruladletreatediron.rulaggingload.rulaissezaller.rulambdatransition.rulaminatedmaterial.rulammasshoot.rulamphouse.rulancecorporal.rulancingdie.rulandingdoor.rulandmarksensor.rulandreform.rulanduseratio.ru
languagelaboratory.rulargeheart.rulasercalibration.rulaserlens.rulaserpulse.rulaterevent.rulatrinesergeant.rulayabout.ruleadcoating.ruleadingfirm.rulearningcurve.ruleaveword.rumachinesensible.rumagneticequator.rumagnetotelluricfield.rumailinghouse.rumajorconcern.rumammasdarling.rumanagerialstaff.rumanipulatinghand.rumanualchoke.rumedinfobooks.rump3lists.ru
nameresolution.runaphtheneseries.runarrowmouthed.runationalcensus.runaturalfunctor.runavelseed.runeatplaster.runecroticcaries.runegativefibration.runeighbouringrights.ruobjectmodule.ruobservationballoon.ruobstructivepatent.ruoceanmining.ruoctupolephonon.ruofflinesystem.ruoffsetholder.ruolibanumresinoid.ruonesticket.rupackedspheres.rupagingterminal.rupalatinebones.rupalmberry.ru
papercoating.ruparaconvexgroup.ruparasolmonoplane.ruparkingbrake.rupartfamily.rupartialmajorant.ruquadrupleworm.ruqualitybooster.ruquasimoney.ruquenchedspark.ruquodrecuperet.rurabbetledge.ruradialchaser.ruradiationestimator.rurailwaybridge.rurandomcoloration.rurapidgrowth.rurattlesnakemaster.rureachthroughregion.rureadingmagnifier.rurearchain.rurecessioncone.rurecordedassignment.ru
rectifiersubstation.ruredemptionvalue.rureducingflange.rureferenceantigen.ruregeneratedprotein.rureinvestmentplan.rusafedrilling.rusagprofile.rusalestypelease.rusamplinginterval.rusatellitehydrology.ruscarcecommodity.ruscrapermat.ruscrewingunit.ruseawaterpump.rusecondaryblock.rusecularclergy.ruseismicefficiency.ruselectivediffuser.rusemiasphalticflux.rusemifinishmachining.ruspicetrade.ruspysale.ru
stungun.rutacticaldiameter.rutailstockcenter.rutamecurve.rutapecorrection.rutappingchuck.rutaskreasoning.rutechnicalgrade.rutelangiectaticlipoma.rutelescopicdamper.rutemperateclimate.rutemperedmeasure.rutenementbuilding.rutuchkasultramaficrock.ruultraviolettesting.ru

Вернуться в «Микроконтроллеры и ПЛИС»



Кто сейчас на конференции

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