stm32h5xx_ll_dma.h 297 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345
  1. /**
  2. ******************************************************************************
  3. * @file stm32h5xx_ll_dma.h
  4. * @author MCD Application Team
  5. * @brief Header file of DMA LL module.
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * Copyright (c) 2023 STMicroelectronics.
  10. * All rights reserved.
  11. *
  12. * This software is licensed under terms that can be found in the LICENSE file
  13. * in the root directory of this software component.
  14. * If no LICENSE file comes with this software, it is provided AS-IS.
  15. *
  16. ******************************************************************************
  17. @verbatim
  18. ==============================================================================
  19. ##### LL DMA driver acronyms #####
  20. ==============================================================================
  21. [..] Acronyms table :
  22. =========================================
  23. || Acronym || ||
  24. =========================================
  25. || SRC || Source ||
  26. || DEST || Destination ||
  27. || ADDR || Address ||
  28. || ADDRS || Addresses ||
  29. || INC || Increment / Incremented ||
  30. || DEC || Decrement / Decremented ||
  31. || BLK || Block ||
  32. || RPT || Repeat / Repeated ||
  33. || TRIG || Trigger ||
  34. =========================================
  35. @endverbatim
  36. ******************************************************************************
  37. */
  38. /* Define to prevent recursive inclusion -------------------------------------*/
  39. #ifndef STM32H5xx_LL_DMA_H
  40. #define STM32H5xx_LL_DMA_H
  41. #ifdef __cplusplus
  42. extern "C" {
  43. #endif /* __cplusplus */
  44. /* Includes ------------------------------------------------------------------*/
  45. #include "stm32h5xx.h"
  46. /** @addtogroup STM32H5xx_LL_Driver
  47. * @{
  48. */
  49. #if defined (GPDMA1)
  50. /** @defgroup DMA_LL DMA
  51. * @{
  52. */
  53. /* Private types -------------------------------------------------------------*/
  54. /* Private variables ---------------------------------------------------------*/
  55. /** @defgroup DMA_LL_Private_Variables DMA Private Variables
  56. * @{
  57. */
  58. #define DMA_CHANNEL0_OFFSET (0x00000050UL)
  59. #define DMA_CHANNEL1_OFFSET (0x000000D0UL)
  60. #define DMA_CHANNEL2_OFFSET (0x00000150UL)
  61. #define DMA_CHANNEL3_OFFSET (0x000001D0UL)
  62. #define DMA_CHANNEL4_OFFSET (0x00000250UL)
  63. #define DMA_CHANNEL5_OFFSET (0x000002D0UL)
  64. #define DMA_CHANNEL6_OFFSET (0x00000350UL)
  65. #define DMA_CHANNEL7_OFFSET (0x000003D0UL)
  66. /* Array used to get the DMA Channel register offset versus Channel index LL_DMA_CHANNEL_x */
  67. static const uint32_t LL_DMA_CH_OFFSET_TAB[] =
  68. {
  69. DMA_CHANNEL0_OFFSET, DMA_CHANNEL1_OFFSET, DMA_CHANNEL2_OFFSET, DMA_CHANNEL3_OFFSET,
  70. DMA_CHANNEL4_OFFSET, DMA_CHANNEL5_OFFSET, DMA_CHANNEL6_OFFSET, DMA_CHANNEL7_OFFSET,
  71. };
  72. /**
  73. * @}
  74. */
  75. /* Private constants ---------------------------------------------------------*/
  76. /* Private macros ------------------------------------------------------------*/
  77. /* Exported types ------------------------------------------------------------*/
  78. #if defined (USE_FULL_LL_DRIVER)
  79. /** @defgroup DMA_LL_ES_INIT DMA Exported Init structure
  80. * @{
  81. */
  82. /**
  83. * @brief LL DMA init structure definition.
  84. */
  85. typedef struct
  86. {
  87. uint32_t SrcAddress; /*!< This field specify the data transfer source address.
  88. Programming this field is mandatory for all available DMA channels.
  89. This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF.
  90. This feature can be modified afterwards using unitary function
  91. @ref LL_DMA_SetSrcAddress(). */
  92. uint32_t DestAddress; /*!< This field specify the data transfer destination address.
  93. Programming this field is mandatory for all available DMA channels.
  94. This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF.
  95. This feature can be modified afterwards using unitary function
  96. @ref LL_DMA_SetDestAddress(). */
  97. uint32_t Direction; /*!< This field specify the data transfer direction.
  98. Programming this field is mandatory for all available DMA channels.
  99. This parameter can be a value of @ref DMA_LL_EC_TRANSFER_DIRECTION.
  100. This feature can be modified afterwards using unitary function
  101. @ref LL_DMA_SetDataTransferDirection(). */
  102. uint32_t BlkHWRequest; /*!< This field specify the hardware request unity.
  103. Programming this field is mandatory for all available DMA channels.
  104. This parameter can be a value of @ref DMA_LL_EC_BLKHW_REQUEST.
  105. This feature can be modified afterwards using unitary function
  106. @ref LL_DMA_SetBlkHWRequest(). */
  107. uint32_t DataAlignment; /*!< This field specify the transfer data alignment.
  108. Programming this field is mandatory for all available DMA channels.
  109. This parameter can be a value of @ref DMA_LL_EC_DATA_ALIGNMENT.
  110. This feature can be modified afterwards using unitary function
  111. @ref LL_DMA_SetDataAlignment(). */
  112. uint32_t SrcBurstLength; /*!< This field specify the source burst length of transfer in bytes.
  113. Programming this field is mandatory for all available DMA channels.
  114. This parameter must be a value between Min_Data = 1 and Max_Data = 64.
  115. This feature can be modified afterwards using unitary function
  116. @ref LL_DMA_SetSrcBurstLength(). */
  117. uint32_t DestBurstLength; /*!< This field specify the destination burst length of transfer in bytes.
  118. Programming this field is mandatory for all available DMA channels.
  119. This parameter must be a value between Min_Data = 1 and Max_Data = 64.
  120. This feature can be modified afterwards using unitary function
  121. @ref LL_DMA_SetDestBurstLength(). */
  122. uint32_t SrcDataWidth; /*!< This field specify the source data width.
  123. Programming this field is mandatory for all available DMA channels.
  124. This parameter can be a value of @ref DMA_LL_EC_SOURCE_DATA_WIDTH.
  125. This feature can be modified afterwards using unitary function
  126. @ref LL_DMA_SetSrcDataWidth(). */
  127. uint32_t DestDataWidth; /*!< This field specify the destination data width.
  128. Programming this field is mandatory for all available DMA channels.
  129. This parameter can be a value of @ref DMA_LL_EC_DESTINATION_DATA_WIDTH.
  130. This feature can be modified afterwards using unitary function
  131. @ref LL_DMA_SetDestDataWidth(). */
  132. uint32_t SrcIncMode; /*!< This field specify the source burst increment mode.
  133. Programming this field is mandatory for all available DMA channels.
  134. This parameter can be a value of @ref DMA_LL_EC_SOURCE_INCREMENT_MODE.
  135. This feature can be modified afterwards using unitary function
  136. @ref LL_DMA_SetSrcIncMode(). */
  137. uint32_t DestIncMode; /*!< This field specify the destination burst increment mode.
  138. Programming this field is mandatory for all available DMA channels.
  139. This parameter can be a value of @ref DMA_LL_EC_DESTINATION_INCREMENT_MODE.
  140. This feature can be modified afterwards using unitary function
  141. @ref LL_DMA_SetDestIncMode(). */
  142. uint32_t Priority; /*!< This field specify the channel priority level.
  143. Programming this field is mandatory for all available DMA channels.
  144. This parameter can be a value of @ref DMA_LL_EC_PRIORITY_LEVEL.
  145. This feature can be modified afterwards using unitary function
  146. @ref LL_DMA_SetChannelPriorityLevel(). */
  147. uint32_t BlkDataLength; /*!< This field specify the length of a block transfer in bytes.
  148. Programming this field is mandatory for all available DMA channels.
  149. This parameter must be a value between Min_Data = 0 and Max_Data = 0x0000FFFF.
  150. This feature can be modified afterwards using unitary function
  151. @ref LL_DMA_SetBlkDataLength(). */
  152. uint32_t BlkRptCount; /*!< This field specify the number of repetitions of the current block.
  153. Programming this field is mandatory only for 2D addressing channels.
  154. This parameter can be a value between 1 and 2048 Min_Data = 0
  155. and Max_Data = 0x000007FF.
  156. This feature can be modified afterwards using unitary function
  157. @ref LL_DMA_SetBlkRptCount(). */
  158. uint32_t TriggerMode; /*!< This field specify the trigger mode.
  159. Programming this field is mandatory for all available DMA channels.
  160. This parameter can be a value of @ref DMA_LL_EC_TRIGGER_MODE.
  161. This feature can be modified afterwards using unitary function
  162. @ref LL_DMA_SetTriggerMode(). */
  163. uint32_t TriggerPolarity; /*!< This field specify the trigger event polarity.
  164. Programming this field is mandatory for all available DMA channels.
  165. This parameter can be a value of @ref DMA_LL_EC_TRIGGER_POLARITY.
  166. This feature can be modified afterwards using unitary function
  167. @ref LL_DMA_SetTriggerPolarity(). */
  168. uint32_t TriggerSelection; /*!< This field specify the trigger event selection.
  169. Programming this field is mandatory for all available DMA channels.
  170. This parameter can be a value of @ref DMA_LL_EC_TRIGGER_SELECTION.
  171. This feature can be modified afterwards using unitary function
  172. @ref LL_DMA_SetHWTrigger(). */
  173. uint32_t Request; /*!< This field specify the peripheral request selection.
  174. Programming this field is mandatory for all available DMA channels.
  175. This parameter can be a value of @ref DMA_LL_EC_REQUEST_SELECTION.
  176. This feature can be modified afterwards using unitary function
  177. @ref LL_DMA_SetPeriphRequest(). */
  178. uint32_t TransferEventMode; /*!< This field specify the transfer event mode.
  179. Programming this field is mandatory for all available DMA channels.
  180. This parameter can be a value of @ref DMA_LL_EC_TRANSFER_EVENT_MODE.
  181. This feature can be modified afterwards using unitary function
  182. @ref LL_DMA_SetTransferEventMode(). */
  183. uint32_t DestHWordExchange; /*!< This field specify the destination half word exchange.
  184. Programming this field is mandatory for all available DMA channels.
  185. This parameter can be a value of @ref DMA_LL_EC_DEST_HALFWORD_EXCHANGE.
  186. This feature can be modified afterwards using unitary function
  187. @ref LL_DMA_SetDestHWordExchange(). */
  188. uint32_t DestByteExchange; /*!< This field specify the destination byte exchange.
  189. Programming this field is mandatory for all available DMA channels.
  190. This parameter can be a value of @ref DMA_LL_EC_DEST_BYTE_EXCHANGE.
  191. This feature can be modified afterwards using unitary function
  192. @ref LL_DMA_SetDestByteExchange(). */
  193. uint32_t SrcByteExchange; /*!< This field specify the source byte exchange.
  194. Programming this field is mandatory for all available DMA channels.
  195. This parameter can be a value of @ref DMA_LL_EC_SRC_BYTE_EXCHANGE.
  196. This feature can be modified afterwards using unitary function
  197. @ref LL_DMA_SetSrcByteExchange(). */
  198. uint32_t SrcAllocatedPort; /*!< This field specify the source allocated port.
  199. Programming this field is mandatory for all available DMA channels.
  200. This parameter can be a value of @ref DMA_LL_EC_SOURCE_ALLOCATED_PORT.
  201. This feature can be modified afterwards using unitary function
  202. @ref LL_DMA_SetSrcAllocatedPort(). */
  203. uint32_t DestAllocatedPort; /*!< This field specify the destination allocated port.
  204. Programming this field is mandatory for all available DMA channels.
  205. This parameter can be a value of @ref DMA_LL_EC_DESTINATION_ALLOCATED_PORT.
  206. This feature can be modified afterwards using unitary function
  207. @ref LL_DMA_SetDestAllocatedPort(). */
  208. uint32_t LinkAllocatedPort; /*!< This field specify the linked-list allocated port.
  209. Programming this field is mandatory for all available DMA channels.
  210. This parameter can be a value of @ref DMA_LL_EC_LINKED_LIST_ALLOCATED_PORT.
  211. This feature can be modified afterwards using unitary function
  212. @ref LL_DMA_SetLinkAllocatedPort(). */
  213. uint32_t LinkStepMode; /*!< This field specify the link step mode.
  214. Programming this field is mandatory for all available DMA channels.
  215. This parameter can be a value of @ref DMA_LL_EC_LINK_STEP_MODE.
  216. This feature can be modified afterwards using unitary function
  217. @ref LL_DMA_SetLinkStepMode(). */
  218. uint32_t SrcAddrUpdateMode; /*!< This field specify the source address update mode.
  219. Programming this field is mandatory only for 2D addressing channels.
  220. This parameter can be a value of @ref DMA_LL_EC_SRC_ADDR_UPDATE_MODE.
  221. This feature can be modified afterwards using unitary function
  222. @ref LL_DMA_SetSrcAddrUpdate(). */
  223. uint32_t DestAddrUpdateMode; /*!< This field specify the destination address update mode.
  224. Programming this field is mandatory only for 2D addressing channels.
  225. This parameter can be a value of @ref DMA_LL_EC_DEST_ADDR_UPDATE_MODE.
  226. This feature can be modified afterwards using unitary function
  227. @ref LL_DMA_SetDestAddrUpdate(). */
  228. uint32_t SrcAddrOffset; /*!< This field specifies the source address offset.
  229. Programming this field is mandatory only for 2D addressing channels.
  230. This parameter can be a value Between 0 to 0x00001FFF.
  231. This feature can be modified afterwards using unitary function
  232. @ref LL_DMA_SetSrcAddrUpdateValue(). */
  233. uint32_t DestAddrOffset; /*!< This field specifies the destination address offset.
  234. Programming this field is mandatory only for 2D addressing channels.
  235. This parameter can be a value Between 0 to 0x00001FFF.
  236. This feature can be modified afterwards using unitary function
  237. @ref LL_DMA_SetDestAddrUpdateValue(). */
  238. uint32_t BlkRptSrcAddrUpdateMode; /*!< This field specifies the block repeat source address update mode.
  239. Programming this field is mandatory only for 2D addressing channels.
  240. This parameter can be a value of @ref DMA_LL_EC_BLK_RPT_SRC_ADDR_UPDATE_MODE.
  241. This feature can be modified afterwards using unitary function
  242. @ref LL_DMA_SetBlkRptSrcAddrUpdate(). */
  243. uint32_t BlkRptDestAddrUpdateMode; /*!< This field specifies the block repeat destination address update mode.
  244. Programming this field is mandatory only for 2D addressing channels.
  245. This parameter can be a value of @ref DMA_LL_EC_BLK_RPT_DEST_ADDR_UPDATE_MODE.
  246. This feature can be modified afterwards using unitary function
  247. @ref LL_DMA_SetBlkRptDestAddrUpdate(). */
  248. uint32_t BlkRptSrcAddrOffset; /*!< This field specifies the block repeat source address offset.
  249. Programming this field is mandatory only for 2D addressing channels.
  250. This parameter can be a value Between 0 to 0x0000FFFF.
  251. This feature can be modified afterwards using unitary function
  252. @ref LL_DMA_SetBlkRptSrcAddrUpdateValue(). */
  253. uint32_t BlkRptDestAddrOffset; /*!< This field specifies the block repeat destination address offset.
  254. Programming this field is mandatory only for 2D addressing channels.
  255. This parameter can be a value Between 0 to 0x0000FFFF.
  256. This feature can be modified afterwards using unitary function
  257. @ref LL_DMA_SetBlkRptDestAddrUpdateValue(). */
  258. uint32_t LinkedListBaseAddr; /*!< This field specify the linked list base address.
  259. Programming this field is mandatory for all available DMA channels.
  260. This parameter can be a value Between 0 to 0xFFFF0000 (where the 4 first
  261. bytes are always forced to 0).
  262. This feature can be modified afterwards using unitary function
  263. @ref LL_DMA_SetLinkedListBaseAddr(). */
  264. uint32_t LinkedListAddrOffset; /*!< Specifies the linked list address offset.
  265. Programming this field is mandatory for all available DMA channels.
  266. This parameter can be a value Between 0 to 0x0000FFFC.
  267. This feature can be modified afterwards using unitary function
  268. @ref LL_DMA_SetLinkedListAddrOffset(). */
  269. uint32_t Mode; /*!< Specifies the transfer mode for the DMA channel.
  270. This parameter can be a value of @ref DMA_LL_TRANSFER_MODE */
  271. } LL_DMA_InitTypeDef;
  272. /**
  273. * @brief LL DMA init linked list structure definition.
  274. */
  275. typedef struct
  276. {
  277. uint32_t Priority; /*!< This field specify the channel priority level.
  278. Programming this field is mandatory for all available DMA channels.
  279. This parameter can be a value of @ref DMA_LL_EC_PRIORITY_LEVEL.
  280. This feature can be modified afterwards using unitary function
  281. @ref LL_DMA_SetChannelPriorityLevel(). */
  282. uint32_t LinkStepMode; /*!< This field specify the link step mode.
  283. Programming this field is mandatory for all available DMA channels.
  284. This parameter can be a value of @ref DMA_LL_EC_LINK_STEP_MODE.
  285. This feature can be modified afterwards using unitary function
  286. @ref LL_DMA_SetLinkStepMode(). */
  287. uint32_t LinkAllocatedPort; /*!< This field specify the linked-list allocated port.
  288. Programming this field is mandatory for all available DMA channels.
  289. This parameter can be a value of @ref DMA_LL_EC_LINKED_LIST_ALLOCATED_PORT.
  290. This feature can be modified afterwards using unitary function
  291. @ref LL_DMA_SetLinkAllocatedPort(). */
  292. uint32_t TransferEventMode; /*!< This field specify the transfer event mode.
  293. Programming this field is mandatory for all available DMA channels.
  294. This parameter can be a value of @ref DMA_LL_EC_TRANSFER_EVENT_MODE.
  295. This feature can be modified afterwards using unitary function
  296. @ref LL_DMA_SetTransferEventMode(). */
  297. } LL_DMA_InitLinkedListTypeDef;
  298. /**
  299. * @brief LL DMA node init structure definition.
  300. */
  301. typedef struct
  302. {
  303. /* CTR1 register fields ******************************************************
  304. If any CTR1 fields need to be updated comparing to previous node, it is
  305. mandatory to update the new value in CTR1 register fields and enable update
  306. CTR1 register in UpdateRegisters fields if it is not enabled in the
  307. previous node.
  308. */
  309. #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
  310. uint32_t DestSecure; /*!< This field specify the destination secure.
  311. This parameter can be a value of @ref DMA_LL_EC_DESTINATION_SECURITY_ATTRIBUTE. */
  312. #endif /* (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
  313. uint32_t DestAllocatedPort; /*!< This field specify the destination allocated port.
  314. This parameter can be a value of @ref DMA_LL_EC_DESTINATION_ALLOCATED_PORT. */
  315. uint32_t DestHWordExchange; /*!< This field specify the destination half word exchange.
  316. This parameter can be a value of @ref DMA_LL_EC_DEST_HALFWORD_EXCHANGE. */
  317. uint32_t DestByteExchange; /*!< This field specify the destination byte exchange.
  318. This parameter can be a value of @ref DMA_LL_EC_DEST_BYTE_EXCHANGE. */
  319. uint32_t DestBurstLength; /*!< This field specify the destination burst length of transfer in bytes.
  320. This parameter must be a value between Min_Data = 1 and Max_Data = 64. */
  321. uint32_t DestIncMode; /*!< This field specify the destination increment mode.
  322. This parameter can be a value of @ref DMA_LL_EC_DESTINATION_INCREMENT_MODE. */
  323. uint32_t DestDataWidth; /*!< This field specify the destination data width.
  324. This parameter can be a value of @ref DMA_LL_EC_DESTINATION_DATA_WIDTH. */
  325. #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
  326. uint32_t SrcSecure; /*!< This field specify the source secure.
  327. This parameter can be a value of @ref DMA_LL_EC_SOURCE_SECURITY_ATTRIBUTE. */
  328. #endif /* (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
  329. uint32_t SrcAllocatedPort; /*!< This field specify the source allocated port.
  330. This parameter can be a value of @ref DMA_LL_EC_SOURCE_ALLOCATED_PORT. */
  331. uint32_t SrcByteExchange; /*!< This field specify the source byte exchange.
  332. This parameter can be a value of @ref DMA_LL_EC_SRC_BYTE_EXCHANGE. */
  333. uint32_t DataAlignment; /*!< This field specify the transfer data alignment.
  334. This parameter can be a value of @ref DMA_LL_EC_DATA_ALIGNMENT. */
  335. uint32_t SrcBurstLength; /*!< This field specify the source burst length of transfer in bytes.
  336. This parameter must be a value between Min_Data = 1 and Max_Data = 64. */
  337. uint32_t SrcIncMode; /*!< This field specify the source increment mode.
  338. This parameter can be a value of @ref DMA_LL_EC_SOURCE_INCREMENT_MODE. */
  339. uint32_t SrcDataWidth; /*!< This field specify the source data width.
  340. This parameter can be a value of @ref DMA_LL_EC_SOURCE_DATA_WIDTH. */
  341. /* CTR2 register fields ******************************************************
  342. If any CTR2 fields need to be updated comparing to previous node, it is
  343. mandatory to update the new value in CTR2 register fields and enable update
  344. CTR2 register in UpdateRegisters fields if it is not enabled in the
  345. previous node.
  346. For all node created, filling all fields is mandatory.
  347. */
  348. uint32_t TransferEventMode; /*!< This field specify the transfer event mode.
  349. This parameter can be a value of @ref DMA_LL_EC_TRANSFER_EVENT_MODE. */
  350. uint32_t TriggerPolarity; /*!< This field specify the trigger event polarity.
  351. This parameter can be a value of @ref DMA_LL_EC_TRIGGER_POLARITY. */
  352. uint32_t TriggerSelection; /*!< This field specify the trigger event selection.
  353. This parameter can be a value of @ref DMA_LL_EC_TRIGGER_SELECTION. */
  354. uint32_t TriggerMode; /*!< This field specify the trigger mode.
  355. This parameter can be a value of @ref DMA_LL_EC_TRIGGER_MODE. */
  356. uint32_t BlkHWRequest; /*!< This field specify the hardware request unity.
  357. This parameter can be a value of @ref DMA_LL_EC_BLKHW_REQUEST. */
  358. uint32_t Direction; /*!< This field specify the transfer direction.
  359. This parameter can be a value of @ref DMA_LL_EC_TRANSFER_DIRECTION. */
  360. uint32_t Request; /*!< This field specify the peripheral request selection.
  361. This parameter can be a value of @ref DMA_LL_EC_REQUEST_SELECTION. */
  362. uint32_t Mode; /*!< This field DMA Transfer Mode.
  363. This parameter can be a value of @ref DMA_LL_TRANSFER_MODE. */
  364. /* CBR1 register fields ******************************************************
  365. If any CBR1 fields need to be updated comparing to previous node, it is
  366. mandatory to update the new value in CBR1 register fields and enable update
  367. CBR1 register in UpdateRegisters fields if it is not enabled in the
  368. previous node.
  369. If the node to be created is not for 2D addressing channels, there is no
  370. need to fill the following fields for CBR1 register :
  371. - BlkReptDestAddrUpdate.
  372. - BlkRptSrcAddrUpdate.
  373. - DestAddrUpdate.
  374. - SrcAddrUpdate.
  375. - BlkRptCount.
  376. */
  377. uint32_t BlkRptDestAddrUpdateMode; /*!< This field specifies the block repeat destination address update mode.
  378. This parameter can be a value of
  379. @ref DMA_LL_EC_BLK_RPT_DEST_ADDR_UPDATE_MODE. */
  380. uint32_t BlkRptSrcAddrUpdateMode; /*!< This field specifies the block repeat source address update mode.
  381. This parameter can be a value of
  382. @ref DMA_LL_EC_BLK_RPT_SRC_ADDR_UPDATE_MODE. */
  383. uint32_t DestAddrUpdateMode; /*!< This field specify the Destination address update mode.
  384. This parameter can be a value of @ref DMA_LL_EC_DEST_ADDR_UPDATE_MODE. */
  385. uint32_t SrcAddrUpdateMode; /*!< This field specify the Source address update mode.
  386. This parameter can be a value of @ref DMA_LL_EC_SRC_ADDR_UPDATE_MODE. */
  387. uint32_t BlkRptCount; /*!< This field specify the number of repetitions of the current block.
  388. This parameter can be a value between 1 and 2048 Min_Data = 0
  389. and Max_Data = 0x000007FF. */
  390. uint32_t BlkDataLength; /*!< This field specify the length of a block transfer in bytes.
  391. This parameter must be a value between Min_Data = 0
  392. and Max_Data = 0x0000FFFF. */
  393. /* CSAR register fields ******************************************************
  394. If any CSAR fields need to be updated comparing to previous node, it is
  395. mandatory to update the new value in CSAR register fields and enable update
  396. CSAR register in UpdateRegisters fields if it is not enabled in the
  397. previous node.
  398. For all node created, filling all fields is mandatory.
  399. */
  400. uint32_t SrcAddress; /*!< This field specify the transfer source address.
  401. This parameter must be a value between Min_Data = 0
  402. and Max_Data = 0xFFFFFFFF. */
  403. /* CDAR register fields ******************************************************
  404. If any CDAR fields need to be updated comparing to previous node, it is
  405. mandatory to update the new value in CDAR register fields and enable update
  406. CDAR register in UpdateRegisters fields if it is not enabled in the
  407. previous node.
  408. For all node created, filling all fields is mandatory.
  409. */
  410. uint32_t DestAddress; /*!< This field specify the transfer destination address.
  411. This parameter must be a value between Min_Data = 0
  412. and Max_Data = 0xFFFFFFFF. */
  413. /* CTR3 register fields ******************************************************
  414. If any CTR3 fields need to be updated comparing to previous node, it is
  415. mandatory to update the new value in CTR3 register fields and enable update
  416. CTR3 register in UpdateRegisters fields if it is not enabled in the
  417. previous node.
  418. This register is used only for 2D addressing channels.
  419. If used channel is linear addressing, this register will be overwritten by
  420. CLLR register in memory.
  421. When this register is enabled on UpdateRegisters and the selected channel
  422. is linear addressing, LL APIs will discard this register update in memory.
  423. */
  424. uint32_t DestAddrOffset; /*!< This field specifies the destination address offset.
  425. This parameter can be a value Between 0 to 0x00001FFF. */
  426. uint32_t SrcAddrOffset; /*!< This field specifies the source address offset.
  427. This parameter can be a value Between 0 to 0x00001FFF. */
  428. /* CBR2 register fields ******************************************************
  429. If any CBR2 fields need to be updated comparing to previous node, it is
  430. mandatory to update the new value in CBR2 register fields and enable update
  431. CBR2 register in UpdateRegisters fields if it is not enabled in the
  432. previous node.
  433. This register is used only for 2D addressing channels.
  434. If used channel is linear addressing, this register will be discarded in
  435. memory. When this register is enabled on UpdateRegisters and the selected
  436. channel is linear addressing, LL APIs will discard this register update in
  437. memory.
  438. */
  439. uint32_t BlkRptDestAddrOffset; /*!< This field specifies the block repeat destination address offset.
  440. This parameter can be a value Between 0 to 0x0000FFFF. */
  441. uint32_t BlkRptSrcAddrOffset; /*!< This field specifies the block repeat source address offset.
  442. This parameter can be a value Between 0 to 0x0000FFFF. */
  443. /* CLLR register fields ******************************************************
  444. If any CLLR fields need to be updated comparing to previous node, it is
  445. mandatory to update the new value in CLLR register fields and enable update
  446. CLLR register in UpdateRegisters fields if it is not enabled in the
  447. previous node.
  448. If used channel is linear addressing, there is no need to enable/disable
  449. CTR3 and CBR2 register in UpdateRegisters fields as they will be discarded
  450. by LL APIs.
  451. */
  452. uint32_t UpdateRegisters; /*!< Specifies the linked list register update.
  453. This parameter can be a value of @ref DMA_LL_EC_LINKEDLIST_REGISTER_UPDATE. */
  454. /* DMA Node type field *******************************************************
  455. This parameter defines node types as node size and node content varies
  456. between channels.
  457. Thanks to this fields, linked list queue could be created independently
  458. from channel selection. So, one queue could be executed by all DMA channels.
  459. */
  460. uint32_t NodeType; /*!< Specifies the node type to be created.
  461. This parameter can be a value of @ref DMA_LL_EC_LINKEDLIST_NODE_TYPE. */
  462. } LL_DMA_InitNodeTypeDef;
  463. /**
  464. * @brief LL DMA linked list node structure definition.
  465. * @note For 2D addressing channels, the maximum node size is :
  466. * (4 Bytes * 8 registers = 32 Bytes).
  467. * For GPDMA linear addressing channels, the maximum node size is :
  468. * (4 Bytes * 6 registers = 24 Bytes).
  469. */
  470. typedef struct
  471. {
  472. __IO uint32_t LinkRegisters[8U];
  473. } LL_DMA_LinkNodeTypeDef;
  474. /**
  475. * @}
  476. */
  477. #endif /* USE_FULL_LL_DRIVER */
  478. /* Exported constants --------------------------------------------------------*/
  479. /** @defgroup DMA_LL_Exported_Constants DMA Exported Constants
  480. * @{
  481. */
  482. /** @defgroup DMA_LL_EC_CHANNEL Channel
  483. * @{
  484. */
  485. #define LL_DMA_CHANNEL_0 (0x00U)
  486. #define LL_DMA_CHANNEL_1 (0x01U)
  487. #define LL_DMA_CHANNEL_2 (0x02U)
  488. #define LL_DMA_CHANNEL_3 (0x03U)
  489. #define LL_DMA_CHANNEL_4 (0x04U)
  490. #define LL_DMA_CHANNEL_5 (0x05U)
  491. #define LL_DMA_CHANNEL_6 (0x06U)
  492. #define LL_DMA_CHANNEL_7 (0x07U)
  493. #define LL_DMA_CHANNEL_8 (0x08U)
  494. #define LL_DMA_CHANNEL_9 (0x09U)
  495. #define LL_DMA_CHANNEL_10 (0x0AU)
  496. #define LL_DMA_CHANNEL_11 (0x0BU)
  497. #define LL_DMA_CHANNEL_12 (0x0CU)
  498. #define LL_DMA_CHANNEL_13 (0x0DU)
  499. #define LL_DMA_CHANNEL_14 (0x0EU)
  500. #define LL_DMA_CHANNEL_15 (0x0FU)
  501. #if defined (USE_FULL_LL_DRIVER)
  502. #define LL_DMA_CHANNEL_ALL (0x10U)
  503. #endif /* USE_FULL_LL_DRIVER */
  504. /**
  505. * @}
  506. */
  507. #if defined (USE_FULL_LL_DRIVER)
  508. /** @defgroup DMA_LL_EC_CLLR_OFFSET CLLR offset
  509. * @{
  510. */
  511. #define LL_DMA_CLLR_OFFSET0 (0x00U)
  512. #define LL_DMA_CLLR_OFFSET1 (0x01U)
  513. #define LL_DMA_CLLR_OFFSET2 (0x02U)
  514. #define LL_DMA_CLLR_OFFSET3 (0x03U)
  515. #define LL_DMA_CLLR_OFFSET4 (0x04U)
  516. #define LL_DMA_CLLR_OFFSET5 (0x05U)
  517. #define LL_DMA_CLLR_OFFSET6 (0x06U)
  518. #define LL_DMA_CLLR_OFFSET7 (0x07U)
  519. /**
  520. * @}
  521. */
  522. #endif /* USE_FULL_LL_DRIVER */
  523. /** @defgroup DMA_LL_EC_PRIORITY_LEVEL Priority Level
  524. * @{
  525. */
  526. #define LL_DMA_LOW_PRIORITY_LOW_WEIGHT 0x00000000U /*!< Priority level : Low Priority, Low Weight */
  527. #define LL_DMA_LOW_PRIORITY_MID_WEIGHT DMA_CCR_PRIO_0 /*!< Priority level : Low Priority, Mid Weight */
  528. #define LL_DMA_LOW_PRIORITY_HIGH_WEIGHT DMA_CCR_PRIO_1 /*!< Priority level : Low Priority, High Weight */
  529. #define LL_DMA_HIGH_PRIORITY DMA_CCR_PRIO /*!< Priority level : High Priority */
  530. /**
  531. * @}
  532. */
  533. /** @defgroup DMA_LL_EC_LINKED_LIST_ALLOCATED_PORT Linked List Allocated Port
  534. * @{
  535. */
  536. #define LL_DMA_LINK_ALLOCATED_PORT0 0x00000000U /*!< Linked List Allocated Port 0 */
  537. #define LL_DMA_LINK_ALLOCATED_PORT1 DMA_CCR_LAP /*!< Linked List Allocated Port 1 */
  538. /**
  539. * @}
  540. */
  541. /** @defgroup DMA_LL_EC_LINK_STEP_MODE Link Step Mode
  542. * @{
  543. */
  544. #define LL_DMA_LSM_FULL_EXECUTION 0x00000000U /*!< Channel execute the full linked list */
  545. #define LL_DMA_LSM_1LINK_EXECUTION DMA_CCR_LSM /*!< Channel execute one node of the linked list */
  546. /**
  547. * @}
  548. */
  549. /** @defgroup DMA_LL_EC_DEST_HALFWORD_EXCHANGE Destination Half-Word Exchange
  550. * @{
  551. */
  552. #define LL_DMA_DEST_HALFWORD_PRESERVE 0x00000000U /*!< No destination Half-Word exchange when destination data width
  553. is word */
  554. #define LL_DMA_DEST_HALFWORD_EXCHANGE DMA_CTR1_DHX /*!< Destination Half-Word exchange when destination data width
  555. is word */
  556. /**
  557. * @}
  558. */
  559. /** @defgroup DMA_LL_EC_DEST_BYTE_EXCHANGE Destination Byte Exchange
  560. * @{
  561. */
  562. #define LL_DMA_DEST_BYTE_PRESERVE 0x00000000U /*!< No destination Byte exchange when destination data width > Byte */
  563. #define LL_DMA_DEST_BYTE_EXCHANGE DMA_CTR1_DBX /*!< Destination Byte exchange when destination data width > Byte */
  564. /**
  565. * @}
  566. */
  567. /** @defgroup DMA_LL_EC_SRC_BYTE_EXCHANGE Source Byte Exchange
  568. * @{
  569. */
  570. #define LL_DMA_SRC_BYTE_PRESERVE 0x00000000U /*!< No source Byte exchange when source data width is word */
  571. #define LL_DMA_SRC_BYTE_EXCHANGE DMA_CTR1_SBX /*!< Source Byte exchange when source data width is word */
  572. /**
  573. * @}
  574. */
  575. /** @defgroup DMA_LL_EC_SOURCE_ALLOCATED_PORT Source Allocated Port
  576. * @{
  577. */
  578. #define LL_DMA_SRC_ALLOCATED_PORT0 0x00000000U /*!< Source Allocated Port 0 */
  579. #define LL_DMA_SRC_ALLOCATED_PORT1 DMA_CTR1_SAP /*!< Source Allocated Port 1 */
  580. /**
  581. * @}
  582. */
  583. /** @defgroup DMA_LL_EC_DESTINATION_ALLOCATED_PORT Destination Allocated Port
  584. * @{
  585. */
  586. #define LL_DMA_DEST_ALLOCATED_PORT0 0x00000000U /*!< Destination Allocated Port 0 */
  587. #define LL_DMA_DEST_ALLOCATED_PORT1 DMA_CTR1_DAP /*!< Destination Allocated Port 1 */
  588. /**
  589. * @}
  590. */
  591. /** @defgroup DMA_LL_EC_DESTINATION_INCREMENT_MODE Destination Increment Mode
  592. * @{
  593. */
  594. #define LL_DMA_DEST_FIXED 0x00000000U /*!< Destination fixed single/burst */
  595. #define LL_DMA_DEST_INCREMENT DMA_CTR1_DINC /*!< Destination incremented single/burst */
  596. /**
  597. * @}
  598. */
  599. /** @defgroup DMA_LL_EC_DESTINATION_DATA_WIDTH Destination Data Width
  600. * @{
  601. */
  602. #define LL_DMA_DEST_DATAWIDTH_BYTE 0x00000000U /*!< Destination Data Width : Byte */
  603. #define LL_DMA_DEST_DATAWIDTH_HALFWORD DMA_CTR1_DDW_LOG2_0 /*!< Destination Data Width : HalfWord */
  604. #define LL_DMA_DEST_DATAWIDTH_WORD DMA_CTR1_DDW_LOG2_1 /*!< Destination Data Width : Word */
  605. /**
  606. * @}
  607. */
  608. /** @defgroup DMA_LL_EC_DATA_ALIGNMENT Data Alignment
  609. * @{
  610. */
  611. #define LL_DMA_DATA_ALIGN_ZEROPADD 0x00000000U /*!< If src data width < dest data width :
  612. => Right Aligned padded with 0 up to destination
  613. data width.
  614. If src data width > dest data width :
  615. => Right Aligned Left Truncated down to destination
  616. data width. */
  617. #define LL_DMA_DATA_ALIGN_SIGNEXTPADD DMA_CTR1_PAM_0 /*!< If src data width < dest data width :
  618. => Right Aligned padded with sign extended up to destination
  619. data width.
  620. If src data width > dest data width :
  621. => Left Aligned Right Truncated down to the destination
  622. data width */
  623. #define LL_DMA_DATA_PACK_UNPACK DMA_CTR1_PAM_1 /*!< If src data width < dest data width :
  624. => Packed at the destination data width
  625. If src data width > dest data width :
  626. => Unpacked at the destination data width */
  627. /**
  628. * @}
  629. */
  630. /** @defgroup DMA_LL_EC_SOURCE_INCREMENT_MODE Source Increment Mode
  631. * @{
  632. */
  633. #define LL_DMA_SRC_FIXED 0x00000000U /*!< Source fixed single/burst */
  634. #define LL_DMA_SRC_INCREMENT DMA_CTR1_SINC /*!< Source incremented single/burst */
  635. /**
  636. * @}
  637. */
  638. /** @defgroup DMA_LL_EC_SOURCE_DATA_WIDTH Source Data Width
  639. * @{
  640. */
  641. #define LL_DMA_SRC_DATAWIDTH_BYTE 0x00000000U /*!< Source Data Width : Byte */
  642. #define LL_DMA_SRC_DATAWIDTH_HALFWORD DMA_CTR1_SDW_LOG2_0 /*!< Source Data Width : HalfWord */
  643. #define LL_DMA_SRC_DATAWIDTH_WORD DMA_CTR1_SDW_LOG2_1 /*!< Source Data Width : Word */
  644. /**
  645. * @}
  646. */
  647. /** @defgroup DMA_LL_EC_BLKHW_REQUEST Block Hardware Request
  648. * @{
  649. */
  650. #define LL_DMA_HWREQUEST_SINGLEBURST 0x00000000U /*!< Hardware request is driven by a peripheral with a hardware
  651. request/acknowledge protocol at a burst level */
  652. #define LL_DMA_HWREQUEST_BLK DMA_CTR2_BREQ /*!< Hardware request is driven by a peripheral with a hardware
  653. request/acknowledge protocol at a block level */
  654. /**
  655. * @}
  656. */
  657. /** @defgroup DMA_LL_EC_TRANSFER_EVENT_MODE Transfer Event Mode
  658. * @{
  659. */
  660. #define LL_DMA_TCEM_BLK_TRANSFER 0x00000000U /*!< The TC (and the HT) event is generated at the
  661. (respectively half) end of each block */
  662. #define LL_DMA_TCEM_RPT_BLK_TRANSFER DMA_CTR2_TCEM_0 /*!< The TC (and the HT) event is generated at the
  663. (respectively half) end of the repeated block */
  664. #define LL_DMA_TCEM_EACH_LLITEM_TRANSFER DMA_CTR2_TCEM_1 /*!< The TC (and the HT) event is generated at the
  665. (respectively half) end of each linked-list item */
  666. #define LL_DMA_TCEM_LAST_LLITEM_TRANSFER DMA_CTR2_TCEM /*!< The TC (and the HT) event is generated at the
  667. (respectively half) end of the last linked-list item */
  668. /**
  669. * @}
  670. */
  671. /** @defgroup DMA_LL_EC_TRIGGER_POLARITY Trigger Polarity
  672. * @{
  673. */
  674. #define LL_DMA_TRIG_POLARITY_MASKED 0x00000000U /*!< No trigger of the selected DMA request.
  675. Masked trigger event */
  676. #define LL_DMA_TRIG_POLARITY_RISING DMA_CTR2_TRIGPOL_0 /*!< Trigger of the selected DMA request on the rising
  677. edge of the selected trigger event input */
  678. #define LL_DMA_TRIG_POLARITY_FALLING DMA_CTR2_TRIGPOL_1 /*!< Trigger of the selected DMA request on the falling
  679. edge of the selected trigger event input */
  680. /**
  681. * @}
  682. */
  683. /** @defgroup DMA_LL_EC_TRIGGER_MODE Transfer Trigger Mode
  684. * @{
  685. */
  686. #define LL_DMA_TRIGM_BLK_TRANSFER 0x00000000U /*!< A block transfer is conditioned by (at least)
  687. one hit trigger */
  688. #define LL_DMA_TRIGM_RPT_BLK_TRANSFER DMA_CTR2_TRIGM_0 /*!< A repeated block transfer is conditioned by (at least)
  689. one hit trigger */
  690. #define LL_DMA_TRIGM_LLI_LINK_TRANSFER DMA_CTR2_TRIGM_1 /*!< A LLI link transfer is conditioned by (at least)
  691. one hit trigger */
  692. #define LL_DMA_TRIGM_SINGLBURST_TRANSFER DMA_CTR2_TRIGM /*!< A Single/Burst transfer is conditioned by (at least)
  693. one hit trigger */
  694. /**
  695. * @}
  696. */
  697. /** @defgroup DMA_LL_EC_TRANSFER_DIRECTION Transfer Direction
  698. * @{
  699. */
  700. #define LL_DMA_DIRECTION_MEMORY_TO_MEMORY DMA_CTR2_SWREQ /*!< Memory to memory direction */
  701. #define LL_DMA_DIRECTION_PERIPH_TO_MEMORY 0x00000000U /*!< Peripheral to memory direction */
  702. #define LL_DMA_DIRECTION_MEMORY_TO_PERIPH DMA_CTR2_DREQ /*!< Memory to peripheral direction */
  703. /**
  704. * @}
  705. */
  706. /** @defgroup DMA_LL_TRANSFER_MODE Transfer Mode
  707. * @{
  708. */
  709. #define LL_DMA_NORMAL 0x00000000U /*!< Normal DMA transfer */
  710. #define LL_DMA_PFCTRL DMA_CTR2_PFREQ /*!< HW request peripheral flow control mode */
  711. /**
  712. * @}
  713. */
  714. /** @defgroup DMA_LL_EC_BLK_RPT_SRC_ADDR_UPDATE_MODE Block Repeat Source Address Update Mode
  715. * @{
  716. */
  717. #define LL_DMA_BLKRPT_SRC_ADDR_INCREMENT 0x00000000U /*!< Source address pointer is incremented after each block
  718. transfer by source update value */
  719. #define LL_DMA_BLKRPT_SRC_ADDR_DECREMENT DMA_CBR1_BRSDEC /*!< Source address pointer is decremented after each block
  720. transfer by source update value */
  721. /**
  722. * @}
  723. */
  724. /** @defgroup DMA_LL_EC_BLK_RPT_DEST_ADDR_UPDATE_MODE Block Repeat Destination Address Update Mode
  725. * @{
  726. */
  727. #define LL_DMA_BLKRPT_DEST_ADDR_INCREMENT 0x00000000U /*!< Destination address is incremented after each block
  728. transfer by destination update value */
  729. #define LL_DMA_BLKRPT_DEST_ADDR_DECREMENT DMA_CBR1_BRDDEC /*!< Destination address is decremented after each block
  730. transfer by destination update value */
  731. /**
  732. * @}
  733. */
  734. /** @defgroup DMA_LL_EC_SRC_ADDR_UPDATE_MODE Burst Source Address Update Mode
  735. * @{
  736. */
  737. #define LL_DMA_BURST_SRC_ADDR_INCREMENT 0x00000000U /*!< Source address pointer is incremented after each burst
  738. transfer by source update value */
  739. #define LL_DMA_BURST_SRC_ADDR_DECREMENT DMA_CBR1_SDEC /*!< Source address pointer is decremented after each burst
  740. transfer by source update value */
  741. /**
  742. * @}
  743. */
  744. /** @defgroup DMA_LL_EC_DEST_ADDR_UPDATE_MODE Burst Destination Address Update Mode
  745. * @{
  746. */
  747. #define LL_DMA_BURST_DEST_ADDR_INCREMENT 0x00000000U /*!< Destination address pointer is incremented after each
  748. burst transfer by destination update value */
  749. #define LL_DMA_BURST_DEST_ADDR_DECREMENT DMA_CBR1_DDEC /*!< Destination address pointer is decremented after each
  750. burst transfer by destination update value */
  751. /**
  752. * @}
  753. */
  754. #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
  755. /** @defgroup DMA_LL_EC_SOURCE_SECURITY_ATTRIBUTE Source Security Attribute
  756. * @{
  757. */
  758. #define LL_DMA_CHANNEL_NSEC 0x00000000U /*!< NSecure channel */
  759. #define LL_DMA_CHANNEL_SEC 0x00000001U /*!< Secure channel */
  760. /**
  761. * @}
  762. */
  763. /** @defgroup DMA_LL_EC_SOURCE_SECURITY_ATTRIBUTE Source Security Attribute
  764. * @{
  765. */
  766. #define LL_DMA_CHANNEL_SRC_NSEC 0x00000000U /*!< NSecure transfer from the source */
  767. #define LL_DMA_CHANNEL_SRC_SEC DMA_CTR1_SSEC /*!< Secure transfer from the source */
  768. /**
  769. * @}
  770. */
  771. /** @defgroup DMA_LL_EC_DESTINATION_SECURITY_ATTRIBUTE Destination Security Attribute
  772. * @{
  773. */
  774. #define LL_DMA_CHANNEL_DEST_NSEC 0x00000000U /*!< NSecure transfer from the destination */
  775. #define LL_DMA_CHANNEL_DEST_SEC DMA_CTR1_DSEC /*!< Secure transfer from the destination */
  776. /**
  777. * @}
  778. */
  779. #endif /* (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
  780. /** @defgroup DMA_LL_EC_LINKEDLIST_NODE_TYPE Linked list node type
  781. * @{
  782. */
  783. #define LL_DMA_GPDMA_LINEAR_NODE 0x01U /*!< GPDMA node : linear addressing node */
  784. #define LL_DMA_GPDMA_2D_NODE 0x02U /*!< GPDMA node : 2 dimension addressing node */
  785. /**
  786. * @}
  787. */
  788. /** @defgroup DMA_LL_EC_LINKEDLIST_REGISTER_UPDATE Linked list register update
  789. * @{
  790. */
  791. #define LL_DMA_UPDATE_CTR1 DMA_CLLR_UT1 /*!< Update CTR1 register from memory :
  792. available for all DMA channels */
  793. #define LL_DMA_UPDATE_CTR2 DMA_CLLR_UT2 /*!< Update CTR2 register from memory :
  794. available for all DMA channels */
  795. #define LL_DMA_UPDATE_CBR1 DMA_CLLR_UB1 /*!< Update CBR1 register from memory :
  796. available for all DMA channels */
  797. #define LL_DMA_UPDATE_CSAR DMA_CLLR_USA /*!< Update CSAR register from memory :
  798. available for all DMA channels */
  799. #define LL_DMA_UPDATE_CDAR DMA_CLLR_UDA /*!< Update CDAR register from memory :
  800. available for all DMA channels */
  801. #define LL_DMA_UPDATE_CTR3 DMA_CLLR_UT3 /*!< Update CTR3 register from memory :
  802. available only for 2D addressing DMA channels */
  803. #define LL_DMA_UPDATE_CBR2 DMA_CLLR_UB2 /*!< Update CBR2 register from memory :
  804. available only for 2D addressing DMA channels */
  805. #define LL_DMA_UPDATE_CLLR DMA_CLLR_ULL /*!< Update CLLR register from memory :
  806. available for all DMA channels */
  807. /**
  808. * @}
  809. */
  810. /** @defgroup DMA_LL_EC_REQUEST_SELECTION Request Selection
  811. * @{
  812. */
  813. /* GPDMA1 Hardware Requests */
  814. #define LL_GPDMA1_REQUEST_ADC1 0U /*!< GPDMA1 HW request is ADC1 */
  815. #if defined (ADC2)
  816. #define LL_GPDMA1_REQUEST_ADC2 1U /*!< GPDMA1 HW request is ADC2 */
  817. #endif /* ADC2 */
  818. #define LL_GPDMA1_REQUEST_DAC1_CH1 2U /*!< GPDMA1 HW request is DAC1_CH1 */
  819. #define LL_GPDMA1_REQUEST_DAC1_CH2 3U /*!< GPDMA1 HW request is DAC1_CH2 */
  820. #define LL_GPDMA1_REQUEST_TIM6_UP 4U /*!< GPDMA1 HW request is TIM6_UP */
  821. #define LL_GPDMA1_REQUEST_TIM7_UP 5U /*!< GPDMA1 HW request is TIM7_UP */
  822. #define LL_GPDMA1_REQUEST_SPI1_RX 6U /*!< GPDMA1 HW request is SPI1_RX */
  823. #define LL_GPDMA1_REQUEST_SPI1_TX 7U /*!< GPDMA1 HW request is SPI1_TX */
  824. #define LL_GPDMA1_REQUEST_SPI2_RX 8U /*!< GPDMA1 HW request is SPI2_RX */
  825. #define LL_GPDMA1_REQUEST_SPI2_TX 9U /*!< GPDMA1 HW request is SPI2_TX */
  826. #define LL_GPDMA1_REQUEST_SPI3_RX 10U /*!< GPDMA1 HW request is SPI3_RX */
  827. #define LL_GPDMA1_REQUEST_SPI3_TX 11U /*!< GPDMA1 HW request is SPI3_TX */
  828. #define LL_GPDMA1_REQUEST_I2C1_RX 12U /*!< GPDMA1 HW request is I2C1_RX */
  829. #define LL_GPDMA1_REQUEST_I2C1_TX 13U /*!< GPDMA1 HW request is I2C1_TX */
  830. #define LL_GPDMA1_REQUEST_I2C2_RX 15U /*!< GPDMA1 HW request is I2C2_RX */
  831. #define LL_GPDMA1_REQUEST_I2C2_TX 16U /*!< GPDMA1 HW request is I2C2_TX */
  832. #if defined (I2C3)
  833. #define LL_GPDMA1_REQUEST_I2C3_RX 18U /*!< GPDMA1 HW request is I2C3_RX */
  834. #define LL_GPDMA1_REQUEST_I2C3_TX 19U /*!< GPDMA1 HW request is I2C3_TX */
  835. #endif /* I2C3 */
  836. #define LL_GPDMA1_REQUEST_USART1_RX 21U /*!< GPDMA1 HW request is USART1_RX */
  837. #define LL_GPDMA1_REQUEST_USART1_TX 22U /*!< GPDMA1 HW request is USART1_TX */
  838. #define LL_GPDMA1_REQUEST_USART2_RX 23U /*!< GPDMA1 HW request is USART2_RX */
  839. #define LL_GPDMA1_REQUEST_USART2_TX 24U /*!< GPDMA1 HW request is USART2_TX */
  840. #define LL_GPDMA1_REQUEST_USART3_RX 25U /*!< GPDMA1 HW request is USART3_RX */
  841. #define LL_GPDMA1_REQUEST_USART3_TX 26U /*!< GPDMA1 HW request is USART3_TX */
  842. #if defined (UART4)
  843. #define LL_GPDMA1_REQUEST_UART4_RX 27U /*!< GPDMA1 HW request is UART4_RX */
  844. #define LL_GPDMA1_REQUEST_UART4_TX 28U /*!< GPDMA1 HW request is UART4_TX */
  845. #endif /* UART4 */
  846. #if defined (UART4)
  847. #define LL_GPDMA1_REQUEST_UART5_RX 29U /*!< GPDMA1 HW request is UART5_RX */
  848. #define LL_GPDMA1_REQUEST_UART5_TX 30U /*!< GPDMA1 HW request is UART5_TX */
  849. #endif /* UART5 */
  850. #if defined (UART4)
  851. #define LL_GPDMA1_REQUEST_USART6_RX 31U /*!< GPDMA1 HW request is USART6_RX */
  852. #define LL_GPDMA1_REQUEST_USART6_TX 32U /*!< GPDMA1 HW request is USART6_TX */
  853. #endif /* USART6 */
  854. #if defined (UART7)
  855. #define LL_GPDMA1_REQUEST_UART7_RX 33U /*!< GPDMA1 HW request is UART7_RX */
  856. #define LL_GPDMA1_REQUEST_UART7_TX 34U /*!< GPDMA1 HW request is UART7_TX */
  857. #endif /* UART7 */
  858. #if defined (UART8)
  859. #define LL_GPDMA1_REQUEST_UART8_RX 35U /*!< GPDMA1 HW request is UART8_RX */
  860. #define LL_GPDMA1_REQUEST_UART8_TX 36U /*!< GPDMA1 HW request is UART8_TX */
  861. #endif /* UART8 */
  862. #if defined (UART9)
  863. #define LL_GPDMA1_REQUEST_UART9_RX 37U /*!< GPDMA1 HW request is UART9_RX */
  864. #define LL_GPDMA1_REQUEST_UART9_TX 38U /*!< GPDMA1 HW request is UART9_TX */
  865. #endif /* UART9 */
  866. #if defined (USART10)
  867. #define LL_GPDMA1_REQUEST_USART10_RX 39U /*!< GPDMA1 HW request is USART10_RX */
  868. #define LL_GPDMA1_REQUEST_USART10_TX 40U /*!< GPDMA1 HW request is USART10_TX */
  869. #endif /* USART10 */
  870. #if defined (USART11)
  871. #define LL_GPDMA1_REQUEST_USART11_RX 41U /*!< GPDMA1 HW request is USART11_RX */
  872. #define LL_GPDMA1_REQUEST_USART11_TX 42U /*!< GPDMA1 HW request is USART11_TX */
  873. #endif /* USART11 */
  874. #if defined (UART12)
  875. #define LL_GPDMA1_REQUEST_UART12_RX 43U /*!< GPDMA1 HW request is UART12_RX */
  876. #define LL_GPDMA1_REQUEST_UART12_TX 44U /*!< GPDMA1 HW request is UART12_TX */
  877. #endif /* UART12 */
  878. #define LL_GPDMA1_REQUEST_LPUART1_RX 45U /*!< GPDMA1 HW request is LPUART1_RX */
  879. #define LL_GPDMA1_REQUEST_LPUART1_TX 46U /*!< GPDMA1 HW request is LPUART1_TX */
  880. #if defined (SPI4)
  881. #define LL_GPDMA1_REQUEST_SPI4_RX 47U /*!< GPDMA1 HW request is SPI4_RX */
  882. #define LL_GPDMA1_REQUEST_SPI4_TX 48U /*!< GPDMA1 HW request is SPI4_TX */
  883. #endif /* SPI4 */
  884. #if defined (SPI5)
  885. #define LL_GPDMA1_REQUEST_SPI5_RX 49U /*!< GPDMA1 HW request is SPI5_RX */
  886. #define LL_GPDMA1_REQUEST_SPI5_TX 50U /*!< GPDMA1 HW request is SPI5_TX */
  887. #endif /* SPI5 */
  888. #if defined (SPI6)
  889. #define LL_GPDMA1_REQUEST_SPI6_RX 51U /*!< GPDMA1 HW request is SPI6_RX */
  890. #define LL_GPDMA1_REQUEST_SPI6_TX 52U /*!< GPDMA1 HW request is SPI6_TX */
  891. #endif /* SPI6 */
  892. #if defined (SAI1)
  893. #define LL_GPDMA1_REQUEST_SAI1_A 53U /*!< GPDMA1 HW request is SAI1_A */
  894. #define LL_GPDMA1_REQUEST_SAI1_B 54U /*!< GPDMA1 HW request is SAI1_B */
  895. #endif /* SAI1 */
  896. #if defined (SAI2)
  897. #define LL_GPDMA1_REQUEST_SAI2_A 55U /*!< GPDMA1 HW request is SAI2_A */
  898. #define LL_GPDMA1_REQUEST_SAI2_B 56U /*!< GPDMA1 HW request is SAI2_B */
  899. #endif /* SAI2 */
  900. #if defined (OCTOSPI1)
  901. #define LL_GPDMA1_REQUEST_OCTOSPI1 57U /*!< GPDMA1 HW request is OCTOSPI1 */
  902. #endif /* OCTOSPI1 */
  903. #define LL_GPDMA1_REQUEST_TIM1_CH1 58U /*!< GPDMA1 HW request is TIM1_CH1 */
  904. #define LL_GPDMA1_REQUEST_TIM1_CH2 59U /*!< GPDMA1 HW request is TIM1_CH2 */
  905. #define LL_GPDMA1_REQUEST_TIM1_CH3 60U /*!< GPDMA1 HW request is TIM1_CH3 */
  906. #define LL_GPDMA1_REQUEST_TIM1_CH4 61U /*!< GPDMA1 HW request is TIM1_CH4 */
  907. #define LL_GPDMA1_REQUEST_TIM1_UP 62U /*!< GPDMA1 HW request is TIM1_UP */
  908. #define LL_GPDMA1_REQUEST_TIM1_TRIG 63U /*!< GPDMA1 HW request is TIM1_TRIG */
  909. #define LL_GPDMA1_REQUEST_TIM1_COM 64U /*!< GPDMA1 HW request is TIM1_COM */
  910. #if defined (TIM8)
  911. #define LL_GPDMA1_REQUEST_TIM8_CH1 65U /*!< GPDMA1 HW request is TIM8_CH1 */
  912. #define LL_GPDMA1_REQUEST_TIM8_CH2 66U /*!< GPDMA1 HW request is TIM8_CH2 */
  913. #define LL_GPDMA1_REQUEST_TIM8_CH3 67U /*!< GPDMA1 HW request is TIM8_CH3 */
  914. #define LL_GPDMA1_REQUEST_TIM8_CH4 68U /*!< GPDMA1 HW request is TIM8_CH4 */
  915. #define LL_GPDMA1_REQUEST_TIM8_UP 69U /*!< GPDMA1 HW request is TIM8_UP */
  916. #define LL_GPDMA1_REQUEST_TIM8_TRIG 70U /*!< GPDMA1 HW request is TIM8_TRIG */
  917. #define LL_GPDMA1_REQUEST_TIM8_COM 71U /*!< GPDMA1 HW request is TIM8_COM */
  918. #endif /* TIM8 */
  919. #define LL_GPDMA1_REQUEST_TIM2_CH1 72U /*!< GPDMA1 HW request is TIM2_CH1 */
  920. #define LL_GPDMA1_REQUEST_TIM2_CH2 73U /*!< GPDMA1 HW request is TIM2_CH2 */
  921. #define LL_GPDMA1_REQUEST_TIM2_CH3 74U /*!< GPDMA1 HW request is TIM2_CH3 */
  922. #define LL_GPDMA1_REQUEST_TIM2_CH4 75U /*!< GPDMA1 HW request is TIM2_CH4 */
  923. #define LL_GPDMA1_REQUEST_TIM2_UP 76U /*!< GPDMA1 HW request is TIM2_UP */
  924. #define LL_GPDMA1_REQUEST_TIM3_CH1 77U /*!< GPDMA1 HW request is TIM3_CH1 */
  925. #define LL_GPDMA1_REQUEST_TIM3_CH2 78U /*!< GPDMA1 HW request is TIM3_CH2 */
  926. #define LL_GPDMA1_REQUEST_TIM3_CH3 79U /*!< GPDMA1 HW request is TIM3_CH3 */
  927. #define LL_GPDMA1_REQUEST_TIM3_CH4 80U /*!< GPDMA1 HW request is TIM3_CH4 */
  928. #define LL_GPDMA1_REQUEST_TIM3_UP 81U /*!< GPDMA1 HW request is TIM3_UP */
  929. #define LL_GPDMA1_REQUEST_TIM3_TRIG 82U /*!< GPDMA1 HW request is TIM3_TRIG */
  930. #if defined (TIM4)
  931. #define LL_GPDMA1_REQUEST_TIM4_CH1 83U /*!< GPDMA1 HW request is TIM4_CH1 */
  932. #define LL_GPDMA1_REQUEST_TIM4_CH2 84U /*!< GPDMA1 HW request is TIM4_CH2 */
  933. #define LL_GPDMA1_REQUEST_TIM4_CH3 85U /*!< GPDMA1 HW request is TIM4_CH3 */
  934. #define LL_GPDMA1_REQUEST_TIM4_CH4 86U /*!< GPDMA1 HW request is TIM4_CH4 */
  935. #define LL_GPDMA1_REQUEST_TIM4_UP 87U /*!< GPDMA1 HW request is TIM4_UP */
  936. #endif /* TIM4 */
  937. #if defined (TIM5)
  938. #define LL_GPDMA1_REQUEST_TIM5_CH1 88U /*!< GPDMA1 HW request is TIM5_CH1 */
  939. #define LL_GPDMA1_REQUEST_TIM5_CH2 89U /*!< GPDMA1 HW request is TIM5_CH2 */
  940. #define LL_GPDMA1_REQUEST_TIM5_CH3 90U /*!< GPDMA1 HW request is TIM5_CH3 */
  941. #define LL_GPDMA1_REQUEST_TIM5_CH4 91U /*!< GPDMA1 HW request is TIM5_CH4 */
  942. #define LL_GPDMA1_REQUEST_TIM5_UP 92U /*!< GPDMA1 HW request is TIM5_UP */
  943. #define LL_GPDMA1_REQUEST_TIM5_TRIG 93U /*!< GPDMA1 HW request is TIM5_TRIG */
  944. #endif /* TIM5 */
  945. #if defined (TIM15)
  946. #define LL_GPDMA1_REQUEST_TIM15_CH1 94U /*!< GPDMA1 HW request is TIM15_CH1 */
  947. #define LL_GPDMA1_REQUEST_TIM15_UP 95U /*!< GPDMA1 HW request is TIM15_UP */
  948. #define LL_GPDMA1_REQUEST_TIM15_TRIG 96U /*!< GPDMA1 HW request is TIM15_TRIG */
  949. #define LL_GPDMA1_REQUEST_TIM15_COM 97U /*!< GPDMA1 HW request is TIM15_COM */
  950. #endif /* TIM15 */
  951. #if defined (TIM16)
  952. #define LL_GPDMA1_REQUEST_TIM16_CH1 98U /*!< GPDMA1 HW request is TIM16_CH1 */
  953. #define LL_GPDMA1_REQUEST_TIM16_UP 99U /*!< GPDMA1 HW request is TIM16_UP */
  954. #endif /* TIM16 */
  955. #if defined (TIM17)
  956. #define LL_GPDMA1_REQUEST_TIM17_CH1 100U /*!< GPDMA1 HW request is TIM17_CH1 */
  957. #define LL_GPDMA1_REQUEST_TIM17_UP 101U /*!< GPDMA1 HW request is TIM17_UP */
  958. #endif /* TIM17 */
  959. #define LL_GPDMA1_REQUEST_LPTIM1_IC1 102U /*!< GPDMA1 HW request is LPTIM1_IC1 */
  960. #define LL_GPDMA1_REQUEST_LPTIM1_IC2 103U /*!< GPDMA1 HW request is LPTIM1_IC2 */
  961. #define LL_GPDMA1_REQUEST_LPTIM1_UE 104U /*!< GPDMA1 HW request is LPTIM1_UE */
  962. #define LL_GPDMA1_REQUEST_LPTIM2_IC1 105U /*!< GPDMA1 HW request is LPTIM2_IC1 */
  963. #define LL_GPDMA1_REQUEST_LPTIM2_IC2 106U /*!< GPDMA1 HW request is LPTIM2_IC2 */
  964. #define LL_GPDMA1_REQUEST_LPTIM2_UE 107U /*!< GPDMA1 HW request is LPTIM2_UE */
  965. #if defined (DCMI)
  966. #define LL_GPDMA1_REQUEST_DCMI 108U /*!< GPDMA1 HW request is DCMI */
  967. #endif /* DCMI */
  968. #if defined (AES)
  969. #define LL_GPDMA1_REQUEST_AES_OUT 109U /*!< GPDMA1 HW request is AES_OUT */
  970. #define LL_GPDMA1_REQUEST_AES_IN 110U /*!< GPDMA1 HW request is AES_IN */
  971. #endif /* AES */
  972. #define LL_GPDMA1_REQUEST_HASH_IN 111U /*!< GPDMA1 HW request is HASH_IN */
  973. #if defined (UCPD1)
  974. #define LL_GPDMA1_REQUEST_UCPD1_RX 112U /*!< GPDMA1 HW request is UCPD1_RX */
  975. #define LL_GPDMA1_REQUEST_UCPD1_TX 113U /*!< GPDMA1 HW request is UCPD1_TX */
  976. #endif /* UCPD1 */
  977. #if defined (CORDIC)
  978. #define LL_GPDMA1_REQUEST_CORDIC_READ 114U /*!< GPDMA1 HW request is CORDIC_READ */
  979. #define LL_GPDMA1_REQUEST_CORDIC_WRITE 115U /*!< GPDMA1 HW request is CORDIC_WRITE */
  980. #endif /* CORDIC */
  981. #if defined (FMAC)
  982. #define LL_GPDMA1_REQUEST_FMAC_READ 116U /*!< GPDMA1 HW request is FMAC_READ */
  983. #define LL_GPDMA1_REQUEST_FMAC_WRITE 117U /*!< GPDMA1 HW request is FMAC_WRITE */
  984. #endif /* FMAC */
  985. #if defined (SAES)
  986. #define LL_GPDMA1_REQUEST_SAES_OUT 118U /*!< GPDMA1 HW request is SAES_OUT */
  987. #define LL_GPDMA1_REQUEST_SAES_IN 119U /*!< GPDMA1 HW request is SAES_IN */
  988. #endif /* SAES */
  989. #define LL_GPDMA1_REQUEST_I3C1_RX 120U /*!< GPDMA1 HW request is I3C1_RX */
  990. #define LL_GPDMA1_REQUEST_I3C1_TX 121U /*!< GPDMA1 HW request is I3C1_TX */
  991. #define LL_GPDMA1_REQUEST_I3C1_TC 122U /*!< GPDMA1 HW request is I3C1_TC */
  992. #define LL_GPDMA1_REQUEST_I3C1_RS 123U /*!< GPDMA1 HW request is I3C1_RS */
  993. #if defined (I2C4)
  994. #define LL_GPDMA1_REQUEST_I2C4_RX 124U /*!< GPDMA1 HW request is I2C4_RX */
  995. #define LL_GPDMA1_REQUEST_I2C4_TX 125U /*!< GPDMA1 HW request is I2C4_TX */
  996. #endif /* I2C4 */
  997. #if defined (LPTIM3)
  998. #define LL_GPDMA1_REQUEST_LPTIM3_IC1 127U /*!< GPDMA1 HW request is LPTIM3_IC1 */
  999. #define LL_GPDMA1_REQUEST_LPTIM3_IC2 128U /*!< GPDMA1 HW request is LPTIM3_IC2 */
  1000. #define LL_GPDMA1_REQUEST_LPTIM3_UE 129U /*!< GPDMA1 HW request is LPTIM3_UE */
  1001. #endif /* LPTIM3 */
  1002. #if defined (LPTIM5)
  1003. #define LL_GPDMA1_REQUEST_LPTIM5_IC1 130U /*!< GPDMA1 HW request is LPTIM5_IC1 */
  1004. #define LL_GPDMA1_REQUEST_LPTIM5_IC2 131U /*!< GPDMA1 HW request is LPTIM5_IC2 */
  1005. #define LL_GPDMA1_REQUEST_LPTIM5_UE 132U /*!< GPDMA1 HW request is LPTIM5_UE */
  1006. #endif /* LPTIM5 */
  1007. #if defined (LPTIM6)
  1008. #define LL_GPDMA1_REQUEST_LPTIM6_IC1 133U /*!< GPDMA1 HW request is LPTIM6_IC1 */
  1009. #define LL_GPDMA1_REQUEST_LPTIM6_IC2 134U /*!< GPDMA1 HW request is LPTIM6_IC2 */
  1010. #define LL_GPDMA1_REQUEST_LPTIM6_UE 135U /*!< GPDMA1 HW request is LPTIM6_UE */
  1011. #endif /* LPTIM6 */
  1012. #if defined (I3C2)
  1013. #define LL_GPDMA1_REQUEST_I3C2_RX 136U /*!< GPDMA1 HW request is I3C2_RX */
  1014. #define LL_GPDMA1_REQUEST_I3C2_TX 137U /*!< GPDMA1 HW request is I3C2_TX */
  1015. #define LL_GPDMA1_REQUEST_I3C2_TC 138U /*!< GPDMA1 HW request is I3C2_TC */
  1016. #define LL_GPDMA1_REQUEST_I3C2_RS 139U /*!< GPDMA1 HW request is I3C2_RS */
  1017. #endif /* I3C2 */
  1018. /* GPDMA2 Hardware Requests */
  1019. #define LL_GPDMA2_REQUEST_ADC1 0U /*!< GPDMA2 HW request is ADC1 */
  1020. #if defined (ADC2)
  1021. #define LL_GPDMA2_REQUEST_ADC2 1U /*!< GPDMA2 HW request is ADC2 */
  1022. #endif /* ADC2 */
  1023. #define LL_GPDMA2_REQUEST_DAC1_CH1 2U /*!< GPDMA2 HW request is DAC1_CH1 */
  1024. #define LL_GPDMA2_REQUEST_DAC1_CH2 3U /*!< GPDMA2 HW request is DAC1_CH2 */
  1025. #define LL_GPDMA2_REQUEST_TIM6_UP 4U /*!< GPDMA2 HW request is TIM6_UP */
  1026. #define LL_GPDMA2_REQUEST_TIM7_UP 5U /*!< GPDMA2 HW request is TIM7_UP */
  1027. #define LL_GPDMA2_REQUEST_SPI1_RX 6U /*!< GPDMA2 HW request is SPI1_RX */
  1028. #define LL_GPDMA2_REQUEST_SPI1_TX 7U /*!< GPDMA2 HW request is SPI1_TX */
  1029. #define LL_GPDMA2_REQUEST_SPI2_RX 8U /*!< GPDMA2 HW request is SPI2_RX */
  1030. #define LL_GPDMA2_REQUEST_SPI2_TX 9U /*!< GPDMA2 HW request is SPI2_TX */
  1031. #define LL_GPDMA2_REQUEST_SPI3_RX 10U /*!< GPDMA2 HW request is SPI3_RX */
  1032. #define LL_GPDMA2_REQUEST_SPI3_TX 11U /*!< GPDMA2 HW request is SPI3_TX */
  1033. #define LL_GPDMA2_REQUEST_I2C1_RX 12U /*!< GPDMA2 HW request is I2C1_RX */
  1034. #define LL_GPDMA2_REQUEST_I2C1_TX 13U /*!< GPDMA2 HW request is I2C1_TX */
  1035. #define LL_GPDMA2_REQUEST_I2C2_RX 15U /*!< GPDMA2 HW request is I2C2_RX */
  1036. #define LL_GPDMA2_REQUEST_I2C2_TX 16U /*!< GPDMA2 HW request is I2C2_TX */
  1037. #if defined (I2C3)
  1038. #define LL_GPDMA2_REQUEST_I2C3_RX 18U /*!< GPDMA2 HW request is I2C3_RX */
  1039. #define LL_GPDMA2_REQUEST_I2C3_TX 19U /*!< GPDMA2 HW request is I2C3_TX */
  1040. #endif /* I2C3 */
  1041. #define LL_GPDMA2_REQUEST_USART1_RX 21U /*!< GPDMA2 HW request is USART1_RX */
  1042. #define LL_GPDMA2_REQUEST_USART1_TX 22U /*!< GPDMA2 HW request is USART1_TX */
  1043. #define LL_GPDMA2_REQUEST_USART2_RX 23U /*!< GPDMA2 HW request is USART2_RX */
  1044. #define LL_GPDMA2_REQUEST_USART2_TX 24U /*!< GPDMA2 HW request is USART2_TX */
  1045. #define LL_GPDMA2_REQUEST_USART3_RX 25U /*!< GPDMA2 HW request is USART3_RX */
  1046. #define LL_GPDMA2_REQUEST_USART3_TX 26U /*!< GPDMA2 HW request is USART3_TX */
  1047. #if defined (UART4)
  1048. #define LL_GPDMA2_REQUEST_UART4_RX 27U /*!< GPDMA2 HW request is UART4_RX */
  1049. #define LL_GPDMA2_REQUEST_UART4_TX 28U /*!< GPDMA2 HW request is UART4_TX */
  1050. #endif /* UART4 */
  1051. #if defined (UART4)
  1052. #define LL_GPDMA2_REQUEST_UART5_RX 29U /*!< GPDMA2 HW request is UART5_RX */
  1053. #define LL_GPDMA2_REQUEST_UART5_TX 30U /*!< GPDMA2 HW request is UART5_TX */
  1054. #endif /* UART5 */
  1055. #if defined (UART4)
  1056. #define LL_GPDMA2_REQUEST_USART6_RX 31U /*!< GPDMA2 HW request is USART6_RX */
  1057. #define LL_GPDMA2_REQUEST_USART6_TX 32U /*!< GPDMA2 HW request is USART6_TX */
  1058. #endif /* USART6 */
  1059. #if defined (UART7)
  1060. #define LL_GPDMA2_REQUEST_UART7_RX 33U /*!< GPDMA2 HW request is UART7_RX */
  1061. #define LL_GPDMA2_REQUEST_UART7_TX 34U /*!< GPDMA2 HW request is UART7_TX */
  1062. #endif /* UART7 */
  1063. #if defined (UART8)
  1064. #define LL_GPDMA2_REQUEST_UART8_RX 35U /*!< GPDMA2 HW request is UART8_RX */
  1065. #define LL_GPDMA2_REQUEST_UART8_TX 36U /*!< GPDMA2 HW request is UART8_TX */
  1066. #endif /* UART8 */
  1067. #if defined (UART9)
  1068. #define LL_GPDMA2_REQUEST_UART9_RX 37U /*!< GPDMA2 HW request is UART9_RX */
  1069. #define LL_GPDMA2_REQUEST_UART9_TX 38U /*!< GPDMA2 HW request is UART9_TX */
  1070. #endif /* UART9 */
  1071. #if defined (USART10)
  1072. #define LL_GPDMA2_REQUEST_USART10_RX 39U /*!< GPDMA2 HW request is USART10_RX */
  1073. #define LL_GPDMA2_REQUEST_USART10_TX 40U /*!< GPDMA2 HW request is USART10_TX */
  1074. #endif /* USART10 */
  1075. #if defined (USART11)
  1076. #define LL_GPDMA2_REQUEST_USART11_RX 41U /*!< GPDMA2 HW request is USART11_RX */
  1077. #define LL_GPDMA2_REQUEST_USART11_TX 42U /*!< GPDMA2 HW request is USART11_TX */
  1078. #endif /* USART11 */
  1079. #if defined (UART12)
  1080. #define LL_GPDMA2_REQUEST_UART12_RX 43U /*!< GPDMA2 HW request is UART12_RX */
  1081. #define LL_GPDMA2_REQUEST_UART12_TX 44U /*!< GPDMA2 HW request is UART12_TX */
  1082. #endif /* UART12 */
  1083. #define LL_GPDMA2_REQUEST_LPUART1_RX 45U /*!< GPDMA2 HW request is LPUART1_RX */
  1084. #define LL_GPDMA2_REQUEST_LPUART1_TX 46U /*!< GPDMA2 HW request is LPUART1_TX */
  1085. #if defined (SPI4)
  1086. #define LL_GPDMA2_REQUEST_SPI4_RX 47U /*!< GPDMA2 HW request is SPI4_RX */
  1087. #define LL_GPDMA2_REQUEST_SPI4_TX 48U /*!< GPDMA2 HW request is SPI4_TX */
  1088. #endif /* SPI4 */
  1089. #if defined (SPI5)
  1090. #define LL_GPDMA2_REQUEST_SPI5_RX 49U /*!< GPDMA2 HW request is SPI5_RX */
  1091. #define LL_GPDMA2_REQUEST_SPI5_TX 50U /*!< GPDMA2 HW request is SPI5_TX */
  1092. #endif /* SPI5 */
  1093. #if defined (SPI6)
  1094. #define LL_GPDMA2_REQUEST_SPI6_RX 51U /*!< GPDMA2 HW request is SPI6_RX */
  1095. #define LL_GPDMA2_REQUEST_SPI6_TX 52U /*!< GPDMA2 HW request is SPI6_TX */
  1096. #endif /* SPI6 */
  1097. #if defined (SAI1)
  1098. #define LL_GPDMA2_REQUEST_SAI1_A 53U /*!< GPDMA2 HW request is SAI1_A */
  1099. #define LL_GPDMA2_REQUEST_SAI1_B 54U /*!< GPDMA2 HW request is SAI1_B */
  1100. #endif /* SAI1 */
  1101. #if defined (SAI2)
  1102. #define LL_GPDMA2_REQUEST_SAI2_A 55U /*!< GPDMA2 HW request is SAI2_A */
  1103. #define LL_GPDMA2_REQUEST_SAI2_B 56U /*!< GPDMA2 HW request is SAI2_B */
  1104. #endif /* SAI2 */
  1105. #if defined (OCTOSPI1)
  1106. #define LL_GPDMA2_REQUEST_OCTOSPI1 57U /*!< GPDMA2 HW request is OCTOSPI1 */
  1107. #endif /* OCTOSPI1 */
  1108. #define LL_GPDMA2_REQUEST_TIM1_CH1 58U /*!< GPDMA2 HW request is TIM1_CH1 */
  1109. #define LL_GPDMA2_REQUEST_TIM1_CH2 59U /*!< GPDMA2 HW request is TIM1_CH2 */
  1110. #define LL_GPDMA2_REQUEST_TIM1_CH3 60U /*!< GPDMA2 HW request is TIM1_CH3 */
  1111. #define LL_GPDMA2_REQUEST_TIM1_CH4 61U /*!< GPDMA2 HW request is TIM1_CH4 */
  1112. #define LL_GPDMA2_REQUEST_TIM1_UP 62U /*!< GPDMA2 HW request is TIM1_UP */
  1113. #define LL_GPDMA2_REQUEST_TIM1_TRIG 63U /*!< GPDMA2 HW request is TIM1_TRIG */
  1114. #define LL_GPDMA2_REQUEST_TIM1_COM 64U /*!< GPDMA2 HW request is TIM1_COM */
  1115. #if defined (TIM8)
  1116. #define LL_GPDMA2_REQUEST_TIM8_CH1 65U /*!< GPDMA2 HW request is TIM8_CH1 */
  1117. #define LL_GPDMA2_REQUEST_TIM8_CH2 66U /*!< GPDMA2 HW request is TIM8_CH2 */
  1118. #define LL_GPDMA2_REQUEST_TIM8_CH3 67U /*!< GPDMA2 HW request is TIM8_CH3 */
  1119. #define LL_GPDMA2_REQUEST_TIM8_CH4 68U /*!< GPDMA2 HW request is TIM8_CH4 */
  1120. #define LL_GPDMA2_REQUEST_TIM8_UP 69U /*!< GPDMA2 HW request is TIM8_UP */
  1121. #define LL_GPDMA2_REQUEST_TIM8_TRIG 70U /*!< GPDMA2 HW request is TIM8_TRIG */
  1122. #define LL_GPDMA2_REQUEST_TIM8_COM 71U /*!< GPDMA2 HW request is TIM8_COM */
  1123. #endif /* TIM8 */
  1124. #define LL_GPDMA2_REQUEST_TIM2_CH1 72U /*!< GPDMA2 HW request is TIM2_CH1 */
  1125. #define LL_GPDMA2_REQUEST_TIM2_CH2 73U /*!< GPDMA2 HW request is TIM2_CH2 */
  1126. #define LL_GPDMA2_REQUEST_TIM2_CH3 74U /*!< GPDMA2 HW request is TIM2_CH3 */
  1127. #define LL_GPDMA2_REQUEST_TIM2_CH4 75U /*!< GPDMA2 HW request is TIM2_CH4 */
  1128. #define LL_GPDMA2_REQUEST_TIM2_UP 76U /*!< GPDMA2 HW request is TIM2_UP */
  1129. #define LL_GPDMA2_REQUEST_TIM3_CH1 77U /*!< GPDMA2 HW request is TIM3_CH1 */
  1130. #define LL_GPDMA2_REQUEST_TIM3_CH2 78U /*!< GPDMA2 HW request is TIM3_CH2 */
  1131. #define LL_GPDMA2_REQUEST_TIM3_CH3 79U /*!< GPDMA2 HW request is TIM3_CH3 */
  1132. #define LL_GPDMA2_REQUEST_TIM3_CH4 80U /*!< GPDMA2 HW request is TIM3_CH4 */
  1133. #define LL_GPDMA2_REQUEST_TIM3_UP 81U /*!< GPDMA2 HW request is TIM3_UP */
  1134. #define LL_GPDMA2_REQUEST_TIM3_TRIG 82U /*!< GPDMA2 HW request is TIM3_TRIG */
  1135. #if defined (TIM4)
  1136. #define LL_GPDMA2_REQUEST_TIM4_CH1 83U /*!< GPDMA2 HW request is TIM4_CH1 */
  1137. #define LL_GPDMA2_REQUEST_TIM4_CH2 84U /*!< GPDMA2 HW request is TIM4_CH2 */
  1138. #define LL_GPDMA2_REQUEST_TIM4_CH3 85U /*!< GPDMA2 HW request is TIM4_CH3 */
  1139. #define LL_GPDMA2_REQUEST_TIM4_CH4 86U /*!< GPDMA2 HW request is TIM4_CH4 */
  1140. #define LL_GPDMA2_REQUEST_TIM4_UP 87U /*!< GPDMA2 HW request is TIM4_UP */
  1141. #endif /* TIM4 */
  1142. #if defined (TIM5)
  1143. #define LL_GPDMA2_REQUEST_TIM5_CH1 88U /*!< GPDMA2 HW request is TIM5_CH1 */
  1144. #define LL_GPDMA2_REQUEST_TIM5_CH2 89U /*!< GPDMA2 HW request is TIM5_CH2 */
  1145. #define LL_GPDMA2_REQUEST_TIM5_CH3 90U /*!< GPDMA2 HW request is TIM5_CH3 */
  1146. #define LL_GPDMA2_REQUEST_TIM5_CH4 91U /*!< GPDMA2 HW request is TIM5_CH4 */
  1147. #define LL_GPDMA2_REQUEST_TIM5_UP 92U /*!< GPDMA2 HW request is TIM5_UP */
  1148. #define LL_GPDMA2_REQUEST_TIM5_TRIG 93U /*!< GPDMA2 HW request is TIM5_TRIG */
  1149. #endif /* TIM5 */
  1150. #if defined (TIM15)
  1151. #define LL_GPDMA2_REQUEST_TIM15_CH1 94U /*!< GPDMA2 HW request is TIM15_CH1 */
  1152. #define LL_GPDMA2_REQUEST_TIM15_UP 95U /*!< GPDMA2 HW request is TIM15_UP */
  1153. #define LL_GPDMA2_REQUEST_TIM15_TRIG 96U /*!< GPDMA2 HW request is TIM15_TRIG */
  1154. #define LL_GPDMA2_REQUEST_TIM15_COM 97U /*!< GPDMA2 HW request is TIM15_COM */
  1155. #endif /* TIM15 */
  1156. #if defined (TIM16)
  1157. #define LL_GPDMA2_REQUEST_TIM16_CH1 98U /*!< GPDMA2 HW request is TIM16_CH1 */
  1158. #define LL_GPDMA2_REQUEST_TIM16_UP 99U /*!< GPDMA2 HW request is TIM16_UP */
  1159. #endif /* TIM16 */
  1160. #if defined (TIM17)
  1161. #define LL_GPDMA2_REQUEST_TIM17_CH1 100U /*!< GPDMA2 HW request is TIM17_CH1 */
  1162. #define LL_GPDMA2_REQUEST_TIM17_UP 101U /*!< GPDMA2 HW request is TIM17_UP */
  1163. #endif /* TIM17 */
  1164. #define LL_GPDMA2_REQUEST_LPTIM1_IC1 102U /*!< GPDMA2 HW request is LPTIM1_IC1 */
  1165. #define LL_GPDMA2_REQUEST_LPTIM1_IC2 103U /*!< GPDMA2 HW request is LPTIM1_IC2 */
  1166. #define LL_GPDMA2_REQUEST_LPTIM1_UE 104U /*!< GPDMA2 HW request is LPTIM1_UE */
  1167. #define LL_GPDMA2_REQUEST_LPTIM2_IC1 105U /*!< GPDMA2 HW request is LPTIM2_IC1 */
  1168. #define LL_GPDMA2_REQUEST_LPTIM2_IC2 106U /*!< GPDMA2 HW request is LPTIM2_IC2 */
  1169. #define LL_GPDMA2_REQUEST_LPTIM2_UE 107U /*!< GPDMA2 HW request is LPTIM2_UE */
  1170. #if defined (DCMI)
  1171. #define LL_GPDMA2_REQUEST_DCMI 108U /*!< GPDMA2 HW request is DCMI */
  1172. #endif /* DCMI */
  1173. #if defined (AES)
  1174. #define LL_GPDMA2_REQUEST_AES_OUT 109U /*!< GPDMA2 HW request is AES_OUT */
  1175. #define LL_GPDMA2_REQUEST_AES_IN 110U /*!< GPDMA2 HW request is AES_IN */
  1176. #endif /* AES */
  1177. #define LL_GPDMA2_REQUEST_HASH_IN 111U /*!< GPDMA2 HW request is HASH_IN */
  1178. #if defined (UCPD1)
  1179. #define LL_GPDMA2_REQUEST_UCPD1_RX 112U /*!< GPDMA2 HW request is UCPD1_RX */
  1180. #define LL_GPDMA2_REQUEST_UCPD1_TX 113U /*!< GPDMA2 HW request is UCPD1_TX */
  1181. #endif /* UCPD1 */
  1182. #if defined (CORDIC)
  1183. #define LL_GPDMA2_REQUEST_CORDIC_READ 114U /*!< GPDMA2 HW request is CORDIC_READ */
  1184. #define LL_GPDMA2_REQUEST_CORDIC_WRITE 115U /*!< GPDMA2 HW request is CORDIC_WRITE */
  1185. #endif /* CORDIC */
  1186. #if defined (FMAC)
  1187. #define LL_GPDMA2_REQUEST_FMAC_READ 116U /*!< GPDMA2 HW request is FMAC_READ */
  1188. #define LL_GPDMA2_REQUEST_FMAC_WRITE 117U /*!< GPDMA2 HW request is FMAC_WRITE */
  1189. #endif /* FMAC */
  1190. #if defined (SAES)
  1191. #define LL_GPDMA2_REQUEST_SAES_OUT 118U /*!< GPDMA2 HW request is SAES_OUT */
  1192. #define LL_GPDMA2_REQUEST_SAES_IN 119U /*!< GPDMA2 HW request is SAES_IN */
  1193. #endif /* SAES */
  1194. #define LL_GPDMA2_REQUEST_I3C1_RX 120U /*!< GPDMA2 HW request is I3C1_RX */
  1195. #define LL_GPDMA2_REQUEST_I3C1_TX 121U /*!< GPDMA2 HW request is I3C1_TX */
  1196. #define LL_GPDMA2_REQUEST_I3C1_TC 122U /*!< GPDMA2 HW request is I3C1_TC */
  1197. #define LL_GPDMA2_REQUEST_I3C1_RS 123U /*!< GPDMA2 HW request is I3C1_RS */
  1198. #if defined (I2C4)
  1199. #define LL_GPDMA2_REQUEST_I2C4_RX 124U /*!< GPDMA2 HW request is I2C4_RX */
  1200. #define LL_GPDMA2_REQUEST_I2C4_TX 125U /*!< GPDMA2 HW request is I2C4_TX */
  1201. #endif /* I2C4 */
  1202. #if defined (LPTIM3)
  1203. #define LL_GPDMA2_REQUEST_LPTIM3_IC1 127U /*!< GPDMA2 HW request is LPTIM3_IC1 */
  1204. #define LL_GPDMA2_REQUEST_LPTIM3_IC2 128U /*!< GPDMA2 HW request is LPTIM3_IC2 */
  1205. #define LL_GPDMA2_REQUEST_LPTIM3_UE 129U /*!< GPDMA2 HW request is LPTIM3_UE */
  1206. #endif /* LPTIM3 */
  1207. #if defined (LPTIM5)
  1208. #define LL_GPDMA2_REQUEST_LPTIM5_IC1 130U /*!< GPDMA2 HW request is LPTIM5_IC1 */
  1209. #define LL_GPDMA2_REQUEST_LPTIM5_IC2 131U /*!< GPDMA2 HW request is LPTIM5_IC2 */
  1210. #define LL_GPDMA2_REQUEST_LPTIM5_UE 132U /*!< GPDMA2 HW request is LPTIM5_UE */
  1211. #endif /* LPTIM5 */
  1212. #if defined (LPTIM6)
  1213. #define LL_GPDMA2_REQUEST_LPTIM6_IC1 133U /*!< GPDMA2 HW request is LPTIM6_IC1 */
  1214. #define LL_GPDMA2_REQUEST_LPTIM6_IC2 134U /*!< GPDMA2 HW request is LPTIM6_IC2 */
  1215. #define LL_GPDMA2_REQUEST_LPTIM6_UE 135U /*!< GPDMA2 HW request is LPTIM6_UE */
  1216. #endif /* LPTIM6 */
  1217. #if defined (I3C2)
  1218. #define LL_GPDMA2_REQUEST_I3C2_RX 136U /*!< GPDMA2 HW request is I3C2_RX */
  1219. #define LL_GPDMA2_REQUEST_I3C2_TX 137U /*!< GPDMA2 HW request is I3C2_TX */
  1220. #define LL_GPDMA2_REQUEST_I3C2_TC 138U /*!< GPDMA2 HW request is I3C2_TC */
  1221. #define LL_GPDMA2_REQUEST_I3C2_RS 139U /*!< GPDMA2 HW request is I3C2_RS */
  1222. #endif /* I3C2 */
  1223. /**
  1224. * @}
  1225. */
  1226. /** @defgroup DMA_LL_EC_TRIGGER_SELECTION Trigger Selection
  1227. * @{
  1228. */
  1229. /* GPDMA1 Hardware Triggers */
  1230. #define LL_GPDMA1_TRIGGER_EXTI_LINE0 0U /*!< GPDMA1 HW Trigger signal is EXTI_LINE0 */
  1231. #define LL_GPDMA1_TRIGGER_EXTI_LINE1 1U /*!< GPDMA1 HW Trigger signal is EXTI_LINE1 */
  1232. #define LL_GPDMA1_TRIGGER_EXTI_LINE2 2U /*!< GPDMA1 HW Trigger signal is EXTI_LINE2 */
  1233. #define LL_GPDMA1_TRIGGER_EXTI_LINE3 3U /*!< GPDMA1 HW Trigger signal is EXTI_LINE3 */
  1234. #define LL_GPDMA1_TRIGGER_EXTI_LINE4 4U /*!< GPDMA1 HW Trigger signal is EXTI_LINE4 */
  1235. #define LL_GPDMA1_TRIGGER_EXTI_LINE5 5U /*!< GPDMA1 HW Trigger signal is EXTI_LINE5 */
  1236. #define LL_GPDMA1_TRIGGER_EXTI_LINE6 6U /*!< GPDMA1 HW Trigger signal is EXTI_LINE6 */
  1237. #define LL_GPDMA1_TRIGGER_EXTI_LINE7 7U /*!< GPDMA1 HW Trigger signal is EXTI_LINE7 */
  1238. #define LL_GPDMA1_TRIGGER_TAMP_TRG1 8U /*!< GPDMA1 HW Trigger signal is TAMP_TRG1 */
  1239. #define LL_GPDMA1_TRIGGER_TAMP_TRG2 9U /*!< GPDMA1 HW Trigger signal is TAMP_TRG2 */
  1240. #if defined (TAMP_CR1_TAMP3E)
  1241. #define LL_GPDMA1_TRIGGER_TAMP_TRG3 10U /*!< GPDMA1 HW Trigger signal is TAMP_TRG3 */
  1242. #endif /* TAMP_CR1_TAMP3E */
  1243. #define LL_GPDMA1_TRIGGER_LPTIM1_CH1 11U /*!< GPDMA1 HW Trigger signal is LPTIM1_CH1 */
  1244. #define LL_GPDMA1_TRIGGER_LPTIM1_CH2 12U /*!< GPDMA1 HW Trigger signal is LPTIM1_CH2 */
  1245. #define LL_GPDMA1_TRIGGER_LPTIM2_CH1 13U /*!< GPDMA1 HW Trigger signal is LPTIM2_CH1 */
  1246. #define LL_GPDMA1_TRIGGER_LPTIM2_CH2 14U /*!< GPDMA1 HW Trigger signal is LPTIM2_CH2 */
  1247. #define LL_GPDMA1_TRIGGER_RTC_ALRA_TRG 15U /*!< GPDMA1 HW Trigger signal is RTC_ALRA_TRG */
  1248. #define LL_GPDMA1_TRIGGER_RTC_ALRB_TRG 16U /*!< GPDMA1 HW Trigger signal is RTC_ALRB_TRG */
  1249. #define LL_GPDMA1_TRIGGER_RTC_WUT_TRG 17U /*!< GPDMA1 HW Trigger signal is RTC_WUT_TRG */
  1250. #define LL_GPDMA1_TRIGGER_GPDMA1_CH0_TCF 18U /*!< GPDMA1 HW Trigger signal is GPDMA1_CH0_TCF */
  1251. #define LL_GPDMA1_TRIGGER_GPDMA1_CH1_TCF 19U /*!< GPDMA1 HW Trigger signal is GPDMA1_CH1_TCF */
  1252. #define LL_GPDMA1_TRIGGER_GPDMA1_CH2_TCF 20U /*!< GPDMA1 HW Trigger signal is GPDMA1_CH2_TCF */
  1253. #define LL_GPDMA1_TRIGGER_GPDMA1_CH3_TCF 21U /*!< GPDMA1 HW Trigger signal is GPDMA1_CH3_TCF */
  1254. #define LL_GPDMA1_TRIGGER_GPDMA1_CH4_TCF 22U /*!< GPDMA1 HW Trigger signal is GPDMA1_CH4_TCF */
  1255. #define LL_GPDMA1_TRIGGER_GPDMA1_CH5_TCF 23U /*!< GPDMA1 HW Trigger signal is GPDMA1_CH5_TCF */
  1256. #define LL_GPDMA1_TRIGGER_GPDMA1_CH6_TCF 24U /*!< GPDMA1 HW Trigger signal is GPDMA1_CH6_TCF */
  1257. #define LL_GPDMA1_TRIGGER_GPDMA1_CH7_TCF 25U /*!< GPDMA1 HW Trigger signal is GPDMA1_CH7_TCF */
  1258. #define LL_GPDMA1_TRIGGER_GPDMA2_CH0_TCF 26U /*!< GPDMA1 HW Trigger signal is GPDMA2_CH0_TCF */
  1259. #define LL_GPDMA1_TRIGGER_GPDMA2_CH1_TCF 27U /*!< GPDMA1 HW Trigger signal is GPDMA2_CH1_TCF */
  1260. #define LL_GPDMA1_TRIGGER_GPDMA2_CH2_TCF 28U /*!< GPDMA1 HW Trigger signal is GPDMA2_CH2_TCF */
  1261. #define LL_GPDMA1_TRIGGER_GPDMA2_CH3_TCF 29U /*!< GPDMA1 HW Trigger signal is GPDMA2_CH3_TCF */
  1262. #define LL_GPDMA1_TRIGGER_GPDMA2_CH4_TCF 30U /*!< GPDMA1 HW Trigger signal is GPDMA2_CH4_TCF */
  1263. #define LL_GPDMA1_TRIGGER_GPDMA2_CH5_TCF 31U /*!< GPDMA1 HW Trigger signal is GPDMA2_CH5_TCF */
  1264. #define LL_GPDMA1_TRIGGER_GPDMA2_CH6_TCF 32U /*!< GPDMA1 HW Trigger signal is GPDMA2_CH6_TCF */
  1265. #define LL_GPDMA1_TRIGGER_GPDMA2_CH7_TCF 33U /*!< GPDMA1 HW Trigger signal is GPDMA2_CH7_TCF */
  1266. #define LL_GPDMA1_TRIGGER_TIM2_TRGO 34U /*!< GPDMA1 HW Trigger signal is TIM2_TRGO */
  1267. #if defined (TIM15)
  1268. #define LL_GPDMA1_TRIGGER_TIM15_TRGO 35U /*!< GPDMA1 HW Trigger signal is TIM15_TRGO */
  1269. #endif /* TIM15 */
  1270. #if defined (TIM12)
  1271. #define LL_GPDMA1_TRIGGER_TIM12_TRGO 36U /*!< GPDMA1 HW Trigger signal is TIM12_TRGO */
  1272. #endif /* TIM12 */
  1273. #if defined (LPTIM3)
  1274. #define LL_GPDMA1_TRIGGER_LPTIM3_CH1 37U /*!< GPDMA1 HW Trigger signal is LPTIM3_CH1 */
  1275. #define LL_GPDMA1_TRIGGER_LPTIM3_CH2 38U /*!< GPDMA1 HW Trigger signal is LPTIM3_CH2 */
  1276. #endif /* LPTIM3 */
  1277. #if defined (LPTIM4)
  1278. #define LL_GPDMA1_TRIGGER_LPTIM4_AIT 39U /*!< GPDMA1 HW Trigger signal is LPTIM4_AIT */
  1279. #endif /* LPTIM4 */
  1280. #if defined (LPTIM5)
  1281. #define LL_GPDMA1_TRIGGER_LPTIM5_CH1 40U /*!< GPDMA1 HW Trigger signal is LPTIM5_CH1 */
  1282. #define LL_GPDMA1_TRIGGER_LPTIM5_CH2 41U /*!< GPDMA1 HW Trigger signal is LPTIM5_CH2 */
  1283. #endif /* LPTIM5 */
  1284. #if defined (LPTIM6)
  1285. #define LL_GPDMA1_TRIGGER_LPTIM6_CH1 42U /*!< GPDMA1 HW Trigger signal is LPTIM6_CH1 */
  1286. #define LL_GPDMA1_TRIGGER_LPTIM6_CH2 43U /*!< GPDMA1 HW Trigger signal is LPTIM6_CH2 */
  1287. #endif /* LPTIM6 */
  1288. #if defined (COMP1)
  1289. #define LL_GPDMA1_TRIGGER_COMP1_OUT 44U /*!< GPDMA1 HW Trigger signal is COMP1_OUT */
  1290. #endif /* COMP1 */
  1291. #if defined (STM32H503xx) || defined(STM32H523xx) || defined(STM32H533xx)
  1292. #define LL_GPDMA1_TRIGGER_EVENTOUT 45U /*!< GPDMA1 HW Trigger signal is EVENTOUT */
  1293. #endif /* STM32H503xx || STM32H523xx || STM32H533xx */
  1294. /* GPDMA2 Hardware Triggers */
  1295. #define LL_GPDMA2_TRIGGER_EXTI_LINE0 0U /*!< GPDMA2 HW Trigger signal is EXTI_LINE0 */
  1296. #define LL_GPDMA2_TRIGGER_EXTI_LINE1 1U /*!< GPDMA2 HW Trigger signal is EXTI_LINE1 */
  1297. #define LL_GPDMA2_TRIGGER_EXTI_LINE2 2U /*!< GPDMA2 HW Trigger signal is EXTI_LINE2 */
  1298. #define LL_GPDMA2_TRIGGER_EXTI_LINE3 3U /*!< GPDMA2 HW Trigger signal is EXTI_LINE3 */
  1299. #define LL_GPDMA2_TRIGGER_EXTI_LINE4 4U /*!< GPDMA2 HW Trigger signal is EXTI_LINE4 */
  1300. #define LL_GPDMA2_TRIGGER_EXTI_LINE5 5U /*!< GPDMA2 HW Trigger signal is EXTI_LINE5 */
  1301. #define LL_GPDMA2_TRIGGER_EXTI_LINE6 6U /*!< GPDMA2 HW Trigger signal is EXTI_LINE6 */
  1302. #define LL_GPDMA2_TRIGGER_EXTI_LINE7 7U /*!< GPDMA2 HW Trigger signal is EXTI_LINE7 */
  1303. #define LL_GPDMA2_TRIGGER_TAMP_TRG1 8U /*!< GPDMA2 HW Trigger signal is TAMP_TRG1 */
  1304. #define LL_GPDMA2_TRIGGER_TAMP_TRG2 9U /*!< GPDMA2 HW Trigger signal is TAMP_TRG2 */
  1305. #define LL_GPDMA2_TRIGGER_TAMP_TRG3 10U /*!< GPDMA2 HW Trigger signal is TAMP_TRG3 */
  1306. #define LL_GPDMA2_TRIGGER_LPTIM1_CH1 11U /*!< GPDMA2 HW Trigger signal is LPTIM1_CH1 */
  1307. #define LL_GPDMA2_TRIGGER_LPTIM1_CH2 12U /*!< GPDMA2 HW Trigger signal is LPTIM1_CH2 */
  1308. #define LL_GPDMA2_TRIGGER_LPTIM2_CH1 13U /*!< GPDMA2 HW Trigger signal is LPTIM2_CH1 */
  1309. #define LL_GPDMA2_TRIGGER_LPTIM2_CH2 14U /*!< GPDMA2 HW Trigger signal is LPTIM2_CH2 */
  1310. #define LL_GPDMA2_TRIGGER_RTC_ALRA_TRG 15U /*!< GPDMA2 HW Trigger signal is RTC_ALRA_TRG */
  1311. #define LL_GPDMA2_TRIGGER_RTC_ALRB_TRG 16U /*!< GPDMA2 HW Trigger signal is RTC_ALRB_TRG */
  1312. #define LL_GPDMA2_TRIGGER_RTC_WUT_TRG 17U /*!< GPDMA2 HW Trigger signal is RTC_WUT_TRG */
  1313. #define LL_GPDMA2_TRIGGER_GPDMA1_CH0_TCF 18U /*!< GPDMA2 HW Trigger signal is GPDMA1_CH0_TCF */
  1314. #define LL_GPDMA2_TRIGGER_GPDMA1_CH1_TCF 19U /*!< GPDMA2 HW Trigger signal is GPDMA1_CH1_TCF */
  1315. #define LL_GPDMA2_TRIGGER_GPDMA1_CH2_TCF 20U /*!< GPDMA2 HW Trigger signal is GPDMA1_CH2_TCF */
  1316. #define LL_GPDMA2_TRIGGER_GPDMA1_CH3_TCF 21U /*!< GPDMA2 HW Trigger signal is GPDMA1_CH3_TCF */
  1317. #define LL_GPDMA2_TRIGGER_GPDMA1_CH4_TCF 22U /*!< GPDMA2 HW Trigger signal is GPDMA1_CH4_TCF */
  1318. #define LL_GPDMA2_TRIGGER_GPDMA1_CH5_TCF 23U /*!< GPDMA2 HW Trigger signal is GPDMA1_CH5_TCF */
  1319. #define LL_GPDMA2_TRIGGER_GPDMA1_CH6_TCF 24U /*!< GPDMA2 HW Trigger signal is GPDMA1_CH6_TCF */
  1320. #define LL_GPDMA2_TRIGGER_GPDMA1_CH7_TCF 25U /*!< GPDMA2 HW Trigger signal is GPDMA1_CH7_TCF */
  1321. #define LL_GPDMA2_TRIGGER_GPDMA2_CH0_TCF 26U /*!< GPDMA2 HW Trigger signal is GPDMA2_CH0_TCF */
  1322. #define LL_GPDMA2_TRIGGER_GPDMA2_CH1_TCF 27U /*!< GPDMA2 HW Trigger signal is GPDMA2_CH1_TCF */
  1323. #define LL_GPDMA2_TRIGGER_GPDMA2_CH2_TCF 28U /*!< GPDMA2 HW Trigger signal is GPDMA2_CH2_TCF */
  1324. #define LL_GPDMA2_TRIGGER_GPDMA2_CH3_TCF 29U /*!< GPDMA2 HW Trigger signal is GPDMA2_CH3_TCF */
  1325. #define LL_GPDMA2_TRIGGER_GPDMA2_CH4_TCF 30U /*!< GPDMA2 HW Trigger signal is GPDMA2_CH4_TCF */
  1326. #define LL_GPDMA2_TRIGGER_GPDMA2_CH5_TCF 31U /*!< GPDMA2 HW Trigger signal is GPDMA2_CH5_TCF */
  1327. #define LL_GPDMA2_TRIGGER_GPDMA2_CH6_TCF 32U /*!< GPDMA2 HW Trigger signal is GPDMA2_CH6_TCF */
  1328. #define LL_GPDMA2_TRIGGER_GPDMA2_CH7_TCF 33U /*!< GPDMA2 HW Trigger signal is GPDMA2_CH7_TCF */
  1329. #define LL_GPDMA2_TRIGGER_TIM2_TRGO 34U /*!< GPDMA2 HW Trigger signal is TIM2_TRGO */
  1330. #if defined (TIM15)
  1331. #define LL_GPDMA2_TRIGGER_TIM15_TRGO 35U /*!< GPDMA2 HW Trigger signal is TIM15_TRGO */
  1332. #endif /* TIM15 */
  1333. #if defined (TIM12)
  1334. #define LL_GPDMA2_TRIGGER_TIM12_TRGO 36U /*!< GPDMA2 HW Trigger signal is TIM12_TRGO */
  1335. #endif /* TIM12 */
  1336. #if defined (LPTIM3)
  1337. #define LL_GPDMA2_TRIGGER_LPTIM3_CH1 37U /*!< GPDMA2 HW Trigger signal is LPTIM3_CH1 */
  1338. #define LL_GPDMA2_TRIGGER_LPTIM3_CH2 38U /*!< GPDMA2 HW Trigger signal is LPTIM3_CH2 */
  1339. #endif /* LPTIM3 */
  1340. #if defined (LPTIM4)
  1341. #define LL_GPDMA2_TRIGGER_LPTIM4_AIT 39U /*!< GPDMA2 HW Trigger signal is LPTIM4_AIT */
  1342. #endif /* LPTIM4 */
  1343. #if defined (LPTIM5)
  1344. #define LL_GPDMA2_TRIGGER_LPTIM5_CH1 40U /*!< GPDMA2 HW Trigger signal is LPTIM5_CH1 */
  1345. #define LL_GPDMA2_TRIGGER_LPTIM5_CH2 41U /*!< GPDMA2 HW Trigger signal is LPTIM5_CH2 */
  1346. #endif /* LPTIM5 */
  1347. #if defined (LPTIM6)
  1348. #define LL_GPDMA2_TRIGGER_LPTIM6_CH1 42U /*!< GPDMA2 HW Trigger signal is LPTIM6_CH1 */
  1349. #define LL_GPDMA2_TRIGGER_LPTIM6_CH2 43U /*!< GPDMA2 HW Trigger signal is LPTIM6_CH2 */
  1350. #endif /* LPTIM6 */
  1351. #if defined (COMP1)
  1352. #define LL_GPDMA2_TRIGGER_COMP1_OUT 44U /*!< GPDMA2 HW Trigger signal is COMP1_OUT */
  1353. #endif /* COMP1 */
  1354. #if defined (STM32H503xx) || defined(STM32H523xx) || defined(STM32H533xx)
  1355. #define LL_GPDMA2_TRIGGER_EVENTOUT 45U /*!< GPDMA2 HW Trigger signal is EVENTOUT */
  1356. #endif /* STM32H503xx || STM32H523xx || STM32H533xx */
  1357. /**
  1358. * @}
  1359. */
  1360. /**
  1361. * @}
  1362. */
  1363. /* Exported macro ------------------------------------------------------------*/
  1364. /** @defgroup DMA_LL_Exported_Macros DMA Exported Macros
  1365. * @{
  1366. */
  1367. /** @defgroup DMA_LL_EM_COMMON_WRITE_READ_REGISTERS Common Write and Read Registers macros
  1368. * @{
  1369. */
  1370. /**
  1371. * @brief Write a value in DMA register.
  1372. * @param __INSTANCE__ DMA Instance.
  1373. * @param __REG__ Register to be written.
  1374. * @param __VALUE__ Value to be written in the register.
  1375. * @retval None.
  1376. */
  1377. #define LL_DMA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG((__INSTANCE__)->__REG__, (__VALUE__))
  1378. /**
  1379. * @brief Read a value in DMA register.
  1380. * @param __INSTANCE__ DMA Instance.
  1381. * @param __REG__ Register to be read.
  1382. * @retval Register value.
  1383. */
  1384. #define LL_DMA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
  1385. /**
  1386. * @}
  1387. */
  1388. /** @defgroup DMA_LL_EM_CONVERT_DMAxCHANNELy Convert DMAxChannely
  1389. * @{
  1390. */
  1391. /**
  1392. * @brief Convert DMAx_Channely into DMAx.
  1393. * @param __CHANNEL_INSTANCE__ DMAx_Channely.
  1394. * @retval DMAx.
  1395. */
  1396. #define LL_DMA_GET_INSTANCE(__CHANNEL_INSTANCE__) \
  1397. (((uint32_t)(__CHANNEL_INSTANCE__) > ((uint32_t)GPDMA1_Channel7)) ? GPDMA2 : GPDMA1)
  1398. /**
  1399. * @brief Convert DMAx_Channely into LL_DMA_CHANNEL_y.
  1400. * @param __CHANNEL_INSTANCE__ DMAx_Channely.
  1401. * @retval LL_DMA_CHANNEL_y.
  1402. */
  1403. #define LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \
  1404. (((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel0)) ? LL_DMA_CHANNEL_0 : \
  1405. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA2_Channel0)) ? LL_DMA_CHANNEL_0 : \
  1406. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \
  1407. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA2_Channel1)) ? LL_DMA_CHANNEL_1 : \
  1408. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \
  1409. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA2_Channel2)) ? LL_DMA_CHANNEL_2 : \
  1410. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \
  1411. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA2_Channel3)) ? LL_DMA_CHANNEL_3 : \
  1412. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \
  1413. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA2_Channel4)) ? LL_DMA_CHANNEL_4 : \
  1414. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \
  1415. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA2_Channel5)) ? LL_DMA_CHANNEL_5 : \
  1416. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel6)) ? LL_DMA_CHANNEL_6 : \
  1417. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA2_Channel6)) ? LL_DMA_CHANNEL_6 : \
  1418. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel7)) ? LL_DMA_CHANNEL_7 : \
  1419. LL_DMA_CHANNEL_7)
  1420. /**
  1421. * @brief Convert DMA Instance DMAx and LL_DMA_CHANNEL_y into DMAx_Channely.
  1422. * @param __DMA_INSTANCE__ DMAx.
  1423. * @param __CHANNEL__ LL_DMA_CHANNEL_y.
  1424. * @retval DMAx_Channely.
  1425. */
  1426. #define LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \
  1427. ((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_0))) \
  1428. ? GPDMA1_Channel0 : \
  1429. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) \
  1430. ? GPDMA1_Channel1 : \
  1431. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) \
  1432. ? GPDMA1_Channel2 : \
  1433. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) \
  1434. ? GPDMA1_Channel3 : \
  1435. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) \
  1436. ? GPDMA1_Channel4 : \
  1437. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) \
  1438. ? GPDMA1_Channel5 : \
  1439. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) \
  1440. ? GPDMA1_Channel6 : \
  1441. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_7))) \
  1442. ? GPDMA1_Channel7 : \
  1443. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_0))) \
  1444. ? GPDMA2_Channel0 : \
  1445. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) \
  1446. ? GPDMA2_Channel1 : \
  1447. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2)))\
  1448. ? GPDMA2_Channel2 : \
  1449. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3)))\
  1450. ? GPDMA2_Channel3 : \
  1451. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4)))\
  1452. ? GPDMA2_Channel4 : \
  1453. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5)))\
  1454. ? GPDMA2_Channel5 : \
  1455. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6)))\
  1456. ? GPDMA2_Channel6 : GPDMA2_Channel7)
  1457. /**
  1458. * @}
  1459. */
  1460. /**
  1461. * @}
  1462. */
  1463. /* Exported functions --------------------------------------------------------*/
  1464. /** @defgroup DMA_LL_Exported_Functions DMA Exported Functions
  1465. * @{
  1466. */
  1467. /** @defgroup DMA_LL_EF_Configuration Configuration
  1468. * @{
  1469. */
  1470. /**
  1471. * @brief Enable channel.
  1472. * @note This API is used for all available DMA channels.
  1473. * @rmtoll CCR EN LL_DMA_EnableChannel
  1474. * @param DMAx DMAx Instance.
  1475. * @param Channel This parameter can be one of the following values:
  1476. * @arg @ref LL_DMA_CHANNEL_0
  1477. * @arg @ref LL_DMA_CHANNEL_1
  1478. * @arg @ref LL_DMA_CHANNEL_2
  1479. * @arg @ref LL_DMA_CHANNEL_3
  1480. * @arg @ref LL_DMA_CHANNEL_4
  1481. * @arg @ref LL_DMA_CHANNEL_5
  1482. * @arg @ref LL_DMA_CHANNEL_6
  1483. * @arg @ref LL_DMA_CHANNEL_7
  1484. * @retval None.
  1485. */
  1486. __STATIC_INLINE void LL_DMA_EnableChannel(const DMA_TypeDef *DMAx, uint32_t Channel)
  1487. {
  1488. uint32_t dma_base_addr = (uint32_t)DMAx;
  1489. SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_EN);
  1490. }
  1491. /**
  1492. * @brief Disable channel.
  1493. * @note This API is used for all available DMA channels.
  1494. * @rmtoll CCR EN LL_DMA_DisableChannel
  1495. * @param DMAx DMAx Instance.
  1496. * @param Channel This parameter can be one of the following values:
  1497. * @arg @ref LL_DMA_CHANNEL_0
  1498. * @arg @ref LL_DMA_CHANNEL_1
  1499. * @arg @ref LL_DMA_CHANNEL_2
  1500. * @arg @ref LL_DMA_CHANNEL_3
  1501. * @arg @ref LL_DMA_CHANNEL_4
  1502. * @arg @ref LL_DMA_CHANNEL_5
  1503. * @arg @ref LL_DMA_CHANNEL_6
  1504. * @arg @ref LL_DMA_CHANNEL_7
  1505. * @retval None.
  1506. */
  1507. __STATIC_INLINE void LL_DMA_DisableChannel(const DMA_TypeDef *DMAx, uint32_t Channel)
  1508. {
  1509. uint32_t dma_base_addr = (uint32_t)DMAx;
  1510. SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR,
  1511. (DMA_CCR_SUSP | DMA_CCR_RESET));
  1512. }
  1513. /**
  1514. * @brief Check if channel is enabled or disabled.
  1515. * @note This API is used for all available DMA channels.
  1516. * @rmtoll CCR EN LL_DMA_IsEnabledChannel
  1517. * @param DMAx DMAx Instance
  1518. * @param Channel This parameter can be one of the following values:
  1519. * @arg @ref LL_DMA_CHANNEL_0
  1520. * @arg @ref LL_DMA_CHANNEL_1
  1521. * @arg @ref LL_DMA_CHANNEL_2
  1522. * @arg @ref LL_DMA_CHANNEL_3
  1523. * @arg @ref LL_DMA_CHANNEL_4
  1524. * @arg @ref LL_DMA_CHANNEL_5
  1525. * @arg @ref LL_DMA_CHANNEL_6
  1526. * @arg @ref LL_DMA_CHANNEL_7
  1527. * @retval State of bit (1 or 0).
  1528. */
  1529. __STATIC_INLINE uint32_t LL_DMA_IsEnabledChannel(const DMA_TypeDef *DMAx, uint32_t Channel)
  1530. {
  1531. uint32_t dma_base_addr = (uint32_t)DMAx;
  1532. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_EN)
  1533. == (DMA_CCR_EN)) ? 1UL : 0UL);
  1534. }
  1535. /**
  1536. * @brief Reset channel.
  1537. * @note This API is used for all available DMA channels.
  1538. * @rmtoll CCR RESET LL_DMA_ResetChannel
  1539. * @param DMAx DMAx Instance
  1540. * @param Channel This parameter can be one of the following values:
  1541. * @arg @ref LL_DMA_CHANNEL_0
  1542. * @arg @ref LL_DMA_CHANNEL_1
  1543. * @arg @ref LL_DMA_CHANNEL_2
  1544. * @arg @ref LL_DMA_CHANNEL_3
  1545. * @arg @ref LL_DMA_CHANNEL_4
  1546. * @arg @ref LL_DMA_CHANNEL_5
  1547. * @arg @ref LL_DMA_CHANNEL_6
  1548. * @arg @ref LL_DMA_CHANNEL_7
  1549. * @retval None.
  1550. */
  1551. __STATIC_INLINE void LL_DMA_ResetChannel(const DMA_TypeDef *DMAx, uint32_t Channel)
  1552. {
  1553. uint32_t dma_base_addr = (uint32_t)DMAx;
  1554. SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_RESET);
  1555. }
  1556. /**
  1557. * @brief Suspend channel.
  1558. * @note This API is used for all available DMA channels.
  1559. * @rmtoll CCR SUSP LL_DMA_SuspendChannel
  1560. * @param DMAx DMAx Instance
  1561. * @param Channel This parameter can be one of the following values:
  1562. * @arg @ref LL_DMA_CHANNEL_0
  1563. * @arg @ref LL_DMA_CHANNEL_1
  1564. * @arg @ref LL_DMA_CHANNEL_2
  1565. * @arg @ref LL_DMA_CHANNEL_3
  1566. * @arg @ref LL_DMA_CHANNEL_4
  1567. * @arg @ref LL_DMA_CHANNEL_5
  1568. * @arg @ref LL_DMA_CHANNEL_6
  1569. * @arg @ref LL_DMA_CHANNEL_7
  1570. * @retval None.
  1571. */
  1572. __STATIC_INLINE void LL_DMA_SuspendChannel(const DMA_TypeDef *DMAx, uint32_t Channel)
  1573. {
  1574. uint32_t dma_base_addr = (uint32_t)DMAx;
  1575. SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_SUSP);
  1576. }
  1577. /**
  1578. * @brief Resume channel.
  1579. * @note This API is used for all available DMA channels.
  1580. * @rmtoll CCR SUSP LL_DMA_ResumeChannel
  1581. * @param DMAx DMAx Instance
  1582. * @param Channel This parameter can be one of the following values:
  1583. * @arg @ref LL_DMA_CHANNEL_0
  1584. * @arg @ref LL_DMA_CHANNEL_1
  1585. * @arg @ref LL_DMA_CHANNEL_2
  1586. * @arg @ref LL_DMA_CHANNEL_3
  1587. * @arg @ref LL_DMA_CHANNEL_4
  1588. * @arg @ref LL_DMA_CHANNEL_5
  1589. * @arg @ref LL_DMA_CHANNEL_6
  1590. * @arg @ref LL_DMA_CHANNEL_7
  1591. * @retval None.
  1592. */
  1593. __STATIC_INLINE void LL_DMA_ResumeChannel(const DMA_TypeDef *DMAx, uint32_t Channel)
  1594. {
  1595. uint32_t dma_base_addr = (uint32_t)DMAx;
  1596. CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_SUSP);
  1597. }
  1598. /**
  1599. * @brief Check if channel is suspended.
  1600. * @note This API is used for all available DMA channels.
  1601. * @rmtoll CCR SUSP LL_DMA_IsSuspendedChannel
  1602. * @param DMAx DMAx Instance
  1603. * @param Channel This parameter can be one of the following values:
  1604. * @arg @ref LL_DMA_CHANNEL_0
  1605. * @arg @ref LL_DMA_CHANNEL_1
  1606. * @arg @ref LL_DMA_CHANNEL_2
  1607. * @arg @ref LL_DMA_CHANNEL_3
  1608. * @arg @ref LL_DMA_CHANNEL_4
  1609. * @arg @ref LL_DMA_CHANNEL_5
  1610. * @arg @ref LL_DMA_CHANNEL_6
  1611. * @arg @ref LL_DMA_CHANNEL_7
  1612. * @retval State of bit (1 or 0).
  1613. */
  1614. __STATIC_INLINE uint32_t LL_DMA_IsSuspendedChannel(const DMA_TypeDef *DMAx, uint32_t Channel)
  1615. {
  1616. uint32_t dma_base_addr = (uint32_t)DMAx;
  1617. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_SUSP)
  1618. == (DMA_CCR_SUSP)) ? 1UL : 0UL);
  1619. }
  1620. /**
  1621. * @brief Set linked-list base address.
  1622. * @note This API is used for all available DMA channels.
  1623. * @rmtoll CLBAR LBA LL_DMA_SetLinkedListBaseAddr
  1624. * @param DMAx DMAx Instance
  1625. * @param Channel This parameter can be one of the following values:
  1626. * @arg @ref LL_DMA_CHANNEL_0
  1627. * @arg @ref LL_DMA_CHANNEL_1
  1628. * @arg @ref LL_DMA_CHANNEL_2
  1629. * @arg @ref LL_DMA_CHANNEL_3
  1630. * @arg @ref LL_DMA_CHANNEL_4
  1631. * @arg @ref LL_DMA_CHANNEL_5
  1632. * @arg @ref LL_DMA_CHANNEL_6
  1633. * @arg @ref LL_DMA_CHANNEL_7
  1634. * @param LinkedListBaseAddr Between 0 to 0xFFFF0000 (where the 4 LSB bytes
  1635. * are always 0)
  1636. * @retval None.
  1637. */
  1638. __STATIC_INLINE void LL_DMA_SetLinkedListBaseAddr(const DMA_TypeDef *DMAx, uint32_t Channel,
  1639. uint32_t LinkedListBaseAddr)
  1640. {
  1641. uint32_t dma_base_addr = (uint32_t)DMAx;
  1642. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLBAR, DMA_CLBAR_LBA,
  1643. (LinkedListBaseAddr & DMA_CLBAR_LBA));
  1644. }
  1645. /**
  1646. * @brief Get linked-list base address.
  1647. * @note This API is used for all available DMA channels.
  1648. * @rmtoll CLBAR LBA LL_DMA_GetLinkedListBaseAddr
  1649. * @param DMAx DMAx Instance
  1650. * @param Channel This parameter can be one of the following values:
  1651. * @arg @ref LL_DMA_CHANNEL_0
  1652. * @arg @ref LL_DMA_CHANNEL_1
  1653. * @arg @ref LL_DMA_CHANNEL_2
  1654. * @arg @ref LL_DMA_CHANNEL_3
  1655. * @arg @ref LL_DMA_CHANNEL_4
  1656. * @arg @ref LL_DMA_CHANNEL_5
  1657. * @arg @ref LL_DMA_CHANNEL_6
  1658. * @arg @ref LL_DMA_CHANNEL_7
  1659. * @retval Value between 0 to 0xFFFF0000 (where the 4 LSB bytes are always 0)
  1660. */
  1661. __STATIC_INLINE uint32_t LL_DMA_GetLinkedListBaseAddr(const DMA_TypeDef *DMAx, uint32_t Channel)
  1662. {
  1663. uint32_t dma_base_addr = (uint32_t)DMAx;
  1664. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLBAR, DMA_CLBAR_LBA));
  1665. }
  1666. /**
  1667. * @brief Configure all parameters linked to channel control.
  1668. * @note This API is used for all available DMA channels.
  1669. * @rmtoll CCR PRIO LL_DMA_ConfigControl\n
  1670. * CCR LAP LL_DMA_ConfigControl\n
  1671. * CCR LSM LL_DMA_ConfigControl
  1672. * @param DMAx DMAx Instance
  1673. * @param Channel This parameter can be one of the following values:
  1674. * @arg @ref LL_DMA_CHANNEL_0
  1675. * @arg @ref LL_DMA_CHANNEL_1
  1676. * @arg @ref LL_DMA_CHANNEL_2
  1677. * @arg @ref LL_DMA_CHANNEL_3
  1678. * @arg @ref LL_DMA_CHANNEL_4
  1679. * @arg @ref LL_DMA_CHANNEL_5
  1680. * @arg @ref LL_DMA_CHANNEL_6
  1681. * @arg @ref LL_DMA_CHANNEL_7
  1682. * @param Configuration This parameter must be a combination of all the following values:
  1683. * @arg @ref LL_DMA_LOW_PRIORITY_LOW_WEIGHT or @ref LL_DMA_LOW_PRIORITY_MID_WEIGHT or
  1684. * @ref LL_DMA_LOW_PRIORITY_HIGH_WEIGHT or @ref LL_DMA_HIGH_PRIORITY
  1685. * @arg @ref LL_DMA_LINK_ALLOCATED_PORT0 or @ref LL_DMA_LINK_ALLOCATED_PORT1
  1686. * @arg @ref LL_DMA_LSM_FULL_EXECUTION or @ref LL_DMA_LSM_1LINK_EXECUTION
  1687. *@retval None.
  1688. */
  1689. __STATIC_INLINE void LL_DMA_ConfigControl(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration)
  1690. {
  1691. uint32_t dma_base_addr = (uint32_t)DMAx;
  1692. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR,
  1693. (DMA_CCR_PRIO | DMA_CCR_LAP | DMA_CCR_LSM), Configuration);
  1694. }
  1695. /**
  1696. * @brief Set priority level.
  1697. * @note This API is used for all available DMA channels.
  1698. * @rmtoll CCR PRIO LL_DMA_SetChannelPriorityLevel
  1699. * @param DMAx DMAx Instance
  1700. * @param Channel This parameter can be one of the following values:
  1701. * @arg @ref LL_DMA_CHANNEL_0
  1702. * @arg @ref LL_DMA_CHANNEL_1
  1703. * @arg @ref LL_DMA_CHANNEL_2
  1704. * @arg @ref LL_DMA_CHANNEL_3
  1705. * @arg @ref LL_DMA_CHANNEL_4
  1706. * @arg @ref LL_DMA_CHANNEL_5
  1707. * @arg @ref LL_DMA_CHANNEL_6
  1708. * @arg @ref LL_DMA_CHANNEL_7
  1709. * @param Priority This parameter can be one of the following values:
  1710. * @arg @ref LL_DMA_LOW_PRIORITY_LOW_WEIGHT
  1711. * @arg @ref LL_DMA_LOW_PRIORITY_MID_WEIGHT
  1712. * @arg @ref LL_DMA_LOW_PRIORITY_HIGH_WEIGHT
  1713. * @arg @ref LL_DMA_HIGH_PRIORITY
  1714. * @retval None.
  1715. */
  1716. __STATIC_INLINE void LL_DMA_SetChannelPriorityLevel(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Priority)
  1717. {
  1718. uint32_t dma_base_addr = (uint32_t)DMAx;
  1719. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_PRIO, Priority);
  1720. }
  1721. /**
  1722. * @brief Get Channel priority level.
  1723. * @note This API is used for all available DMA channels.
  1724. * @rmtoll CCR PRIO LL_DMA_GetChannelPriorityLevel
  1725. * @param DMAx DMAx Instance
  1726. * @param Channel This parameter can be one of the following values:
  1727. * @arg @ref LL_DMA_CHANNEL_0
  1728. * @arg @ref LL_DMA_CHANNEL_1
  1729. * @arg @ref LL_DMA_CHANNEL_2
  1730. * @arg @ref LL_DMA_CHANNEL_3
  1731. * @arg @ref LL_DMA_CHANNEL_4
  1732. * @arg @ref LL_DMA_CHANNEL_5
  1733. * @arg @ref LL_DMA_CHANNEL_6
  1734. * @arg @ref LL_DMA_CHANNEL_7
  1735. * @retval Returned value can be one of the following values:
  1736. * @arg @ref LL_DMA_LOW_PRIORITY_LOW_WEIGHT
  1737. * @arg @ref LL_DMA_LOW_PRIORITY_MID_WEIGHT
  1738. * @arg @ref LL_DMA_LOW_PRIORITY_HIGH_WEIGHT
  1739. * @arg @ref LL_DMA_HIGH_PRIORITY
  1740. */
  1741. __STATIC_INLINE uint32_t LL_DMA_GetChannelPriorityLevel(const DMA_TypeDef *DMAx, uint32_t Channel)
  1742. {
  1743. uint32_t dma_base_addr = (uint32_t)DMAx;
  1744. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_PRIO));
  1745. }
  1746. /**
  1747. * @brief Set linked-list allocated port.
  1748. * @rmtoll CCR LAP LL_DMA_SetLinkAllocatedPort
  1749. * @param DMAx DMAx Instance
  1750. * @param Channel This parameter can be one of the following values:
  1751. * @arg @ref LL_DMA_CHANNEL_0
  1752. * @arg @ref LL_DMA_CHANNEL_1
  1753. * @arg @ref LL_DMA_CHANNEL_2
  1754. * @arg @ref LL_DMA_CHANNEL_3
  1755. * @arg @ref LL_DMA_CHANNEL_4
  1756. * @arg @ref LL_DMA_CHANNEL_5
  1757. * @arg @ref LL_DMA_CHANNEL_6
  1758. * @arg @ref LL_DMA_CHANNEL_7
  1759. * @param LinkAllocatedPort This parameter can be one of the following values:
  1760. * @arg @ref LL_DMA_LINK_ALLOCATED_PORT0
  1761. * @arg @ref LL_DMA_LINK_ALLOCATED_PORT1
  1762. * @retval None.
  1763. */
  1764. __STATIC_INLINE void LL_DMA_SetLinkAllocatedPort(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t LinkAllocatedPort)
  1765. {
  1766. uint32_t dma_base_addr = (uint32_t)DMAx;
  1767. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR,
  1768. DMA_CCR_LAP, LinkAllocatedPort);
  1769. }
  1770. /**
  1771. * @brief Get linked-list allocated port.
  1772. * @rmtoll CCR LAP LL_DMA_GetLinkAllocatedPort
  1773. * @param DMAx DMAx Instance
  1774. * @param Channel This parameter can be one of the following values:
  1775. * @arg @ref LL_DMA_CHANNEL_0
  1776. * @arg @ref LL_DMA_CHANNEL_1
  1777. * @arg @ref LL_DMA_CHANNEL_2
  1778. * @arg @ref LL_DMA_CHANNEL_3
  1779. * @arg @ref LL_DMA_CHANNEL_4
  1780. * @arg @ref LL_DMA_CHANNEL_5
  1781. * @arg @ref LL_DMA_CHANNEL_6
  1782. * @arg @ref LL_DMA_CHANNEL_7
  1783. * @retval Returned value can be one of the following values:
  1784. * @arg @ref LL_DMA_LINK_ALLOCATED_PORT0
  1785. * @arg @ref LL_DMA_LINK_ALLOCATED_PORT1
  1786. */
  1787. __STATIC_INLINE uint32_t LL_DMA_GetLinkAllocatedPort(const DMA_TypeDef *DMAx, uint32_t Channel)
  1788. {
  1789. uint32_t dma_base_addr = (uint32_t)DMAx;
  1790. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_LAP));
  1791. }
  1792. /**
  1793. * @brief Set link step mode.
  1794. * @note This API is used for all available DMA channels.
  1795. * @rmtoll CCR LSM LL_DMA_SetLinkStepMode
  1796. * @param DMAx DMAx Instance
  1797. * @param Channel This parameter can be one of the following values:
  1798. * @arg @ref LL_DMA_CHANNEL_0
  1799. * @arg @ref LL_DMA_CHANNEL_1
  1800. * @arg @ref LL_DMA_CHANNEL_2
  1801. * @arg @ref LL_DMA_CHANNEL_3
  1802. * @arg @ref LL_DMA_CHANNEL_4
  1803. * @arg @ref LL_DMA_CHANNEL_5
  1804. * @arg @ref LL_DMA_CHANNEL_6
  1805. * @arg @ref LL_DMA_CHANNEL_7
  1806. * @param LinkStepMode This parameter can be one of the following values:
  1807. * @arg @ref LL_DMA_LSM_FULL_EXECUTION
  1808. * @arg @ref LL_DMA_LSM_1LINK_EXECUTION
  1809. * @retval None.
  1810. */
  1811. __STATIC_INLINE void LL_DMA_SetLinkStepMode(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t LinkStepMode)
  1812. {
  1813. uint32_t dma_base_addr = (uint32_t)DMAx;
  1814. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_LSM, LinkStepMode);
  1815. }
  1816. /**
  1817. * @brief Get Link step mode.
  1818. * @note This API is used for all available DMA channels.
  1819. * @rmtoll CCR LSM LL_DMA_GetLinkStepMode
  1820. * @param DMAx DMAx Instance
  1821. * @param Channel This parameter can be one of the following values:
  1822. * @arg @ref LL_DMA_CHANNEL_0
  1823. * @arg @ref LL_DMA_CHANNEL_1
  1824. * @arg @ref LL_DMA_CHANNEL_2
  1825. * @arg @ref LL_DMA_CHANNEL_3
  1826. * @arg @ref LL_DMA_CHANNEL_4
  1827. * @arg @ref LL_DMA_CHANNEL_5
  1828. * @arg @ref LL_DMA_CHANNEL_6
  1829. * @arg @ref LL_DMA_CHANNEL_7
  1830. * @retval Returned value can be one of the following values:
  1831. * @arg @ref LL_DMA_LSM_FULL_EXECUTION
  1832. * @arg @ref LL_DMA_LSM_1LINK_EXECUTION
  1833. */
  1834. __STATIC_INLINE uint32_t LL_DMA_GetLinkStepMode(const DMA_TypeDef *DMAx, uint32_t Channel)
  1835. {
  1836. uint32_t dma_base_addr = (uint32_t)DMAx;
  1837. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_LSM));
  1838. }
  1839. /**
  1840. * @brief Configure data transfer.
  1841. * @note This API is used for all available DMA channels.
  1842. * @rmtoll CTR1 DAP LL_DMA_ConfigTransfer\n
  1843. * CTR1 DHX LL_DMA_ConfigTransfer\n
  1844. * CTR1 DBX LL_DMA_ConfigTransfer\n
  1845. * CTR1 DINC LL_DMA_ConfigTransfer\n
  1846. * CTR1 SAP LL_DMA_ConfigTransfer\n
  1847. * CTR1 SBX LL_DMA_ConfigTransfer\n
  1848. * CTR1 PAM LL_DMA_ConfigTransfer\n
  1849. * CTR1 SINC LL_DMA_ConfigTransfer
  1850. * @param DMAx DMAx Instance
  1851. * @param Channel This parameter can be one of the following values:
  1852. * @arg @ref LL_DMA_CHANNEL_0
  1853. * @arg @ref LL_DMA_CHANNEL_1
  1854. * @arg @ref LL_DMA_CHANNEL_2
  1855. * @arg @ref LL_DMA_CHANNEL_3
  1856. * @arg @ref LL_DMA_CHANNEL_4
  1857. * @arg @ref LL_DMA_CHANNEL_5
  1858. * @arg @ref LL_DMA_CHANNEL_6
  1859. * @arg @ref LL_DMA_CHANNEL_7
  1860. * @param Configuration This parameter must be a combination of all the following values:
  1861. * @arg @ref LL_DMA_DEST_ALLOCATED_PORT0 or @ref LL_DMA_DEST_ALLOCATED_PORT1
  1862. * @arg @ref LL_DMA_DEST_HALFWORD_PRESERVE or @ref LL_DMA_DEST_HALFWORD_EXCHANGE
  1863. * @arg @ref LL_DMA_DEST_BYTE_PRESERVE or @ref LL_DMA_DEST_BYTE_EXCHANGE
  1864. * @arg @ref LL_DMA_SRC_BYTE_PRESERVE or @ref LL_DMA_SRC_BYTE_EXCHANGE
  1865. * @arg @ref LL_DMA_DEST_FIXED or @ref LL_DMA_DEST_INCREMENT
  1866. * @arg @ref LL_DMA_DEST_DATAWIDTH_BYTE or @ref LL_DMA_DEST_DATAWIDTH_HALFWORD or
  1867. * @ref LL_DMA_DEST_DATAWIDTH_WORD
  1868. * @arg @ref LL_DMA_SRC_ALLOCATED_PORT0 or @ref LL_DMA_SRC_ALLOCATED_PORT1
  1869. * @arg @ref LL_DMA_DATA_ALIGN_ZEROPADD or @ref LL_DMA_DATA_ALIGN_SIGNEXTPADD or
  1870. * @ref LL_DMA_DATA_PACK_UNPACK
  1871. * @arg @ref LL_DMA_SRC_FIXED or @ref LL_DMA_SRC_INCREMENT
  1872. * @arg @ref LL_DMA_SRC_DATAWIDTH_BYTE or @ref LL_DMA_SRC_DATAWIDTH_HALFWORD or
  1873. * @ref LL_DMA_SRC_DATAWIDTH_WORD
  1874. *@retval None.
  1875. */
  1876. __STATIC_INLINE void LL_DMA_ConfigTransfer(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration)
  1877. {
  1878. uint32_t dma_base_addr = (uint32_t)DMAx;
  1879. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1,
  1880. DMA_CTR1_DAP | DMA_CTR1_DHX | DMA_CTR1_DBX | DMA_CTR1_SBX | DMA_CTR1_DINC | DMA_CTR1_SINC | \
  1881. DMA_CTR1_SAP | DMA_CTR1_PAM | DMA_CTR1_DDW_LOG2 | DMA_CTR1_SDW_LOG2, Configuration);
  1882. }
  1883. /**
  1884. * @brief Configure source and destination burst length.
  1885. * @rmtoll CTR1 DBL_1 LL_DMA_SetDestBurstLength\n
  1886. * @rmtoll CTR1 SBL_1 LL_DMA_SetDestBurstLength
  1887. * @param DMAx DMAx Instance
  1888. * @param Channel This parameter can be one of the following values:
  1889. * @arg @ref LL_DMA_CHANNEL_0
  1890. * @arg @ref LL_DMA_CHANNEL_1
  1891. * @arg @ref LL_DMA_CHANNEL_2
  1892. * @arg @ref LL_DMA_CHANNEL_3
  1893. * @arg @ref LL_DMA_CHANNEL_4
  1894. * @arg @ref LL_DMA_CHANNEL_5
  1895. * @arg @ref LL_DMA_CHANNEL_6
  1896. * @arg @ref LL_DMA_CHANNEL_7
  1897. * @param SrcBurstLength Between 1 to 64
  1898. * @param DestBurstLength Between 1 to 64
  1899. * @retval None.
  1900. */
  1901. __STATIC_INLINE void LL_DMA_ConfigBurstLength(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcBurstLength,
  1902. uint32_t DestBurstLength)
  1903. {
  1904. uint32_t dma_base_addr = (uint32_t)DMAx;
  1905. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1,
  1906. (DMA_CTR1_SBL_1 | DMA_CTR1_DBL_1), (((SrcBurstLength - 1U) << DMA_CTR1_SBL_1_Pos) & DMA_CTR1_SBL_1) | \
  1907. (((DestBurstLength - 1U) << DMA_CTR1_DBL_1_Pos) & DMA_CTR1_DBL_1));
  1908. }
  1909. #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
  1910. /**
  1911. * @brief Configure all secure parameters linked to DMA channel.
  1912. * @note This API is used for all available DMA channels.
  1913. * @rmtoll SECCFGR SEC LL_DMA_ConfigChannelSecure\n
  1914. * @rmtoll CTR1 SSEC LL_DMA_ConfigChannelSecure\n
  1915. * @rmtoll CTR1 DSEC LL_DMA_ConfigChannelSecure
  1916. * @param DMAx DMAx Instance
  1917. * @param Channel This parameter can be one of the following values:
  1918. * @arg @ref LL_DMA_CHANNEL_0
  1919. * @arg @ref LL_DMA_CHANNEL_1
  1920. * @arg @ref LL_DMA_CHANNEL_2
  1921. * @arg @ref LL_DMA_CHANNEL_3
  1922. * @arg @ref LL_DMA_CHANNEL_4
  1923. * @arg @ref LL_DMA_CHANNEL_5
  1924. * @arg @ref LL_DMA_CHANNEL_6
  1925. * @arg @ref LL_DMA_CHANNEL_7
  1926. * @param Configuration This parameter must be a combination of all the following values:
  1927. * @arg @ref LL_DMA_CHANNEL_NSEC or @ref LL_DMA_CHANNEL_SEC
  1928. * @arg @ref LL_DMA_CHANNEL_SRC_NSEC or @ref LL_DMA_CHANNEL_SRC_SEC
  1929. * @arg @ref LL_DMA_CHANNEL_DEST_NSEC or @ref LL_DMA_CHANNEL_DEST_SEC
  1930. * @retval None.
  1931. */
  1932. __STATIC_INLINE void LL_DMA_ConfigChannelSecure(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration)
  1933. {
  1934. uint32_t dma_base_addr = (uint32_t)DMAx;
  1935. MODIFY_REG(DMAx->SECCFGR, (DMA_SECCFGR_SEC0 << Channel), ((Configuration & LL_DMA_CHANNEL_SEC) << Channel));
  1936. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1,
  1937. (DMA_CTR1_SSEC | DMA_CTR1_DSEC), (Configuration & (~LL_DMA_CHANNEL_SEC)));
  1938. }
  1939. /**
  1940. * @brief Enable security attribute of the DMA transfer to the destination.
  1941. * @note This API is used for all available DMA channels.
  1942. * @rmtoll CTR1 DSEC LL_DMA_EnableChannelDestSecure
  1943. * @param DMAx DMAx Instance
  1944. * @param Channel This parameter can be one of the following values:
  1945. * @arg @ref LL_DMA_CHANNEL_0
  1946. * @arg @ref LL_DMA_CHANNEL_1
  1947. * @arg @ref LL_DMA_CHANNEL_2
  1948. * @arg @ref LL_DMA_CHANNEL_3
  1949. * @arg @ref LL_DMA_CHANNEL_4
  1950. * @arg @ref LL_DMA_CHANNEL_5
  1951. * @arg @ref LL_DMA_CHANNEL_6
  1952. * @arg @ref LL_DMA_CHANNEL_7
  1953. * @retval None.
  1954. */
  1955. __STATIC_INLINE void LL_DMA_EnableChannelDestSecure(const DMA_TypeDef *DMAx, uint32_t Channel)
  1956. {
  1957. uint32_t dma_base_addr = (uint32_t)DMAx;
  1958. SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DSEC);
  1959. }
  1960. /**
  1961. * @brief Disable security attribute of the DMA transfer to the destination.
  1962. * @note This API is used for all available DMA channels.
  1963. * @rmtoll CTR1 DSEC LL_DMA_DisableChannelDestSecure
  1964. * @param DMAx DMAx Instance
  1965. * @param Channel This parameter can be one of the following values:
  1966. * @arg @ref LL_DMA_CHANNEL_0
  1967. * @arg @ref LL_DMA_CHANNEL_1
  1968. * @arg @ref LL_DMA_CHANNEL_2
  1969. * @arg @ref LL_DMA_CHANNEL_3
  1970. * @arg @ref LL_DMA_CHANNEL_4
  1971. * @arg @ref LL_DMA_CHANNEL_5
  1972. * @arg @ref LL_DMA_CHANNEL_6
  1973. * @arg @ref LL_DMA_CHANNEL_7
  1974. * @retval None.
  1975. */
  1976. __STATIC_INLINE void LL_DMA_DisableChannelDestSecure(const DMA_TypeDef *DMAx, uint32_t Channel)
  1977. {
  1978. uint32_t dma_base_addr = (uint32_t)DMAx;
  1979. CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DSEC);
  1980. }
  1981. #endif /* (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
  1982. #if defined (DMA_SECCFGR_SEC0)
  1983. /**
  1984. * @brief Check security attribute of the DMA transfer to the destination.
  1985. * @note This API is used for all available DMA channels.
  1986. * @rmtoll CTR1 DSEC LL_DMA_IsEnabledChannelDestSecure
  1987. * @param DMAx DMAx Instance
  1988. * @param Channel This parameter can be one of the following values:
  1989. * @arg @ref LL_DMA_CHANNEL_0
  1990. * @arg @ref LL_DMA_CHANNEL_1
  1991. * @arg @ref LL_DMA_CHANNEL_2
  1992. * @arg @ref LL_DMA_CHANNEL_3
  1993. * @arg @ref LL_DMA_CHANNEL_4
  1994. * @arg @ref LL_DMA_CHANNEL_5
  1995. * @arg @ref LL_DMA_CHANNEL_6
  1996. * @arg @ref LL_DMA_CHANNEL_7
  1997. * @retval State of bit (1 or 0).
  1998. */
  1999. __STATIC_INLINE uint32_t LL_DMA_IsEnabledChannelDestSecure(const DMA_TypeDef *DMAx, uint32_t Channel)
  2000. {
  2001. uint32_t dma_base_addr = (uint32_t)DMAx;
  2002. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DSEC)
  2003. == (DMA_CTR1_DSEC)) ? 1UL : 0UL);
  2004. }
  2005. #endif /* DMA_SECCFGR_SEC0 */
  2006. #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
  2007. /**
  2008. * @brief Enable security attribute of the DMA transfer from the source.
  2009. * @note This API is used for all available DMA channels.
  2010. * @rmtoll CTR1 SSEC LL_DMA_EnableChannelSrcSecure
  2011. * @param DMAx DMAx Instance
  2012. * @param Channel This parameter can be one of the following values:
  2013. * @arg @ref LL_DMA_CHANNEL_0
  2014. * @arg @ref LL_DMA_CHANNEL_1
  2015. * @arg @ref LL_DMA_CHANNEL_2
  2016. * @arg @ref LL_DMA_CHANNEL_3
  2017. * @arg @ref LL_DMA_CHANNEL_4
  2018. * @arg @ref LL_DMA_CHANNEL_5
  2019. * @arg @ref LL_DMA_CHANNEL_6
  2020. * @arg @ref LL_DMA_CHANNEL_7
  2021. * @retval None.
  2022. */
  2023. __STATIC_INLINE void LL_DMA_EnableChannelSrcSecure(const DMA_TypeDef *DMAx, uint32_t Channel)
  2024. {
  2025. uint32_t dma_base_addr = (uint32_t)DMAx;
  2026. SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SSEC);
  2027. }
  2028. /**
  2029. * @brief Disable security attribute of the DMA transfer from the source.
  2030. * @note This API is used for all available DMA channels.
  2031. * @rmtoll CTR1 SSEC LL_DMA_DisableChannelSrcSecure
  2032. * @param DMAx DMAx Instance
  2033. * @param Channel This parameter can be one of the following values:
  2034. * @arg @ref LL_DMA_CHANNEL_0
  2035. * @arg @ref LL_DMA_CHANNEL_1
  2036. * @arg @ref LL_DMA_CHANNEL_2
  2037. * @arg @ref LL_DMA_CHANNEL_3
  2038. * @arg @ref LL_DMA_CHANNEL_4
  2039. * @arg @ref LL_DMA_CHANNEL_5
  2040. * @arg @ref LL_DMA_CHANNEL_6
  2041. * @arg @ref LL_DMA_CHANNEL_7
  2042. * @retval None.
  2043. */
  2044. __STATIC_INLINE void LL_DMA_DisableChannelSrcSecure(const DMA_TypeDef *DMAx, uint32_t Channel)
  2045. {
  2046. uint32_t dma_base_addr = (uint32_t)DMAx;
  2047. CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SSEC);
  2048. }
  2049. #endif /* (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
  2050. #if defined (DMA_SECCFGR_SEC0)
  2051. /**
  2052. * @brief Check security attribute of the DMA transfer from the source.
  2053. * @note This API is used for all available DMA channels.
  2054. * @rmtoll CTR1 SSEC LL_DMA_IsEnabledChannelSrcSecure
  2055. * @param DMAx DMAx Instance
  2056. * @param Channel This parameter can be one of the following values:
  2057. * @arg @ref LL_DMA_CHANNEL_0
  2058. * @arg @ref LL_DMA_CHANNEL_1
  2059. * @arg @ref LL_DMA_CHANNEL_2
  2060. * @arg @ref LL_DMA_CHANNEL_3
  2061. * @arg @ref LL_DMA_CHANNEL_4
  2062. * @arg @ref LL_DMA_CHANNEL_5
  2063. * @arg @ref LL_DMA_CHANNEL_6
  2064. * @arg @ref LL_DMA_CHANNEL_7
  2065. * @retval State of bit (1 or 0).
  2066. */
  2067. __STATIC_INLINE uint32_t LL_DMA_IsEnabledChannelSrcSecure(const DMA_TypeDef *DMAx, uint32_t Channel)
  2068. {
  2069. uint32_t dma_base_addr = (uint32_t)DMAx;
  2070. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SSEC)
  2071. == (DMA_CTR1_SSEC)) ? 1UL : 0UL);
  2072. }
  2073. #endif /* DMA_SECCFGR_SEC0 */
  2074. /**
  2075. * @brief Set destination allocated port.
  2076. * @rmtoll CTR1 DAP LL_DMA_SetDestAllocatedPort
  2077. * @param DMAx DMAx Instance
  2078. * @param Channel This parameter can be one of the following values:
  2079. * @arg @ref LL_DMA_CHANNEL_0
  2080. * @arg @ref LL_DMA_CHANNEL_1
  2081. * @arg @ref LL_DMA_CHANNEL_2
  2082. * @arg @ref LL_DMA_CHANNEL_3
  2083. * @arg @ref LL_DMA_CHANNEL_4
  2084. * @arg @ref LL_DMA_CHANNEL_5
  2085. * @arg @ref LL_DMA_CHANNEL_6
  2086. * @arg @ref LL_DMA_CHANNEL_7
  2087. * @param DestAllocatedPort This parameter can be one of the following values:
  2088. * @arg @ref LL_DMA_DEST_ALLOCATED_PORT0
  2089. * @arg @ref LL_DMA_DEST_ALLOCATED_PORT1
  2090. * @retval None.
  2091. */
  2092. __STATIC_INLINE void LL_DMA_SetDestAllocatedPort(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestAllocatedPort)
  2093. {
  2094. uint32_t dma_base_addr = (uint32_t)DMAx;
  2095. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DAP,
  2096. DestAllocatedPort);
  2097. }
  2098. /**
  2099. * @brief Get destination allocated port.
  2100. * @rmtoll CTR1 DAP LL_DMA_GetDestAllocatedPort
  2101. * @param DMAx DMAx Instance
  2102. * @param Channel This parameter can be one of the following values:
  2103. * @arg @ref LL_DMA_CHANNEL_0
  2104. * @arg @ref LL_DMA_CHANNEL_1
  2105. * @arg @ref LL_DMA_CHANNEL_2
  2106. * @arg @ref LL_DMA_CHANNEL_3
  2107. * @arg @ref LL_DMA_CHANNEL_4
  2108. * @arg @ref LL_DMA_CHANNEL_5
  2109. * @arg @ref LL_DMA_CHANNEL_6
  2110. * @arg @ref LL_DMA_CHANNEL_7
  2111. * @retval Returned value can be one of the following values:
  2112. * @arg @ref LL_DMA_DEST_ALLOCATED_PORT0
  2113. * @arg @ref LL_DMA_DEST_ALLOCATED_PORT1
  2114. */
  2115. __STATIC_INLINE uint32_t LL_DMA_GetDestAllocatedPort(const DMA_TypeDef *DMAx, uint32_t Channel)
  2116. {
  2117. uint32_t dma_base_addr = (uint32_t)DMAx;
  2118. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DAP));
  2119. }
  2120. /**
  2121. * @brief Set destination half-word exchange.
  2122. * @rmtoll CTR1 DHX LL_DMA_SetDestHWordExchange
  2123. * @param DMAx DMAx Instance
  2124. * @param Channel This parameter can be one of the following values:
  2125. * @arg @ref LL_DMA_CHANNEL_0
  2126. * @arg @ref LL_DMA_CHANNEL_1
  2127. * @arg @ref LL_DMA_CHANNEL_2
  2128. * @arg @ref LL_DMA_CHANNEL_3
  2129. * @arg @ref LL_DMA_CHANNEL_4
  2130. * @arg @ref LL_DMA_CHANNEL_5
  2131. * @arg @ref LL_DMA_CHANNEL_6
  2132. * @arg @ref LL_DMA_CHANNEL_7
  2133. * @param DestHWordExchange This parameter can be one of the following values:
  2134. * @arg @ref LL_DMA_DEST_HALFWORD_PRESERVE
  2135. * @arg @ref LL_DMA_DEST_HALFWORD_EXCHANGE
  2136. * @retval None.
  2137. */
  2138. __STATIC_INLINE void LL_DMA_SetDestHWordExchange(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestHWordExchange)
  2139. {
  2140. uint32_t dma_base_addr = (uint32_t)DMAx;
  2141. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DHX,
  2142. DestHWordExchange);
  2143. }
  2144. /**
  2145. * @brief Get destination half-word exchange.
  2146. * @rmtoll CTR1 DHX LL_DMA_GetDestHWordExchange
  2147. * @param DMAx DMAx Instance
  2148. * @param Channel This parameter can be one of the following values:
  2149. * @arg @ref LL_DMA_CHANNEL_0
  2150. * @arg @ref LL_DMA_CHANNEL_1
  2151. * @arg @ref LL_DMA_CHANNEL_2
  2152. * @arg @ref LL_DMA_CHANNEL_3
  2153. * @arg @ref LL_DMA_CHANNEL_4
  2154. * @arg @ref LL_DMA_CHANNEL_5
  2155. * @arg @ref LL_DMA_CHANNEL_6
  2156. * @arg @ref LL_DMA_CHANNEL_7
  2157. * @retval Returned value can be one of the following values:
  2158. * @arg @ref LL_DMA_DEST_HALFWORD_PRESERVE
  2159. * @arg @ref LL_DMA_DEST_HALFWORD_EXCHANGE
  2160. */
  2161. __STATIC_INLINE uint32_t LL_DMA_GetDestHWordExchange(const DMA_TypeDef *DMAx, uint32_t Channel)
  2162. {
  2163. uint32_t dma_base_addr = (uint32_t)DMAx;
  2164. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DHX));
  2165. }
  2166. /**
  2167. * @brief Set destination byte exchange.
  2168. * @rmtoll CTR1 DBX LL_DMA_SetDestByteExchange
  2169. * @param DMAx DMAx Instance
  2170. * @param Channel This parameter can be one of the following values:
  2171. * @arg @ref LL_DMA_CHANNEL_0
  2172. * @arg @ref LL_DMA_CHANNEL_1
  2173. * @arg @ref LL_DMA_CHANNEL_2
  2174. * @arg @ref LL_DMA_CHANNEL_3
  2175. * @arg @ref LL_DMA_CHANNEL_4
  2176. * @arg @ref LL_DMA_CHANNEL_5
  2177. * @arg @ref LL_DMA_CHANNEL_6
  2178. * @arg @ref LL_DMA_CHANNEL_7
  2179. * @param DestByteExchange This parameter can be one of the following values:
  2180. * @arg @ref LL_DMA_DEST_BYTE_PRESERVE
  2181. * @arg @ref LL_DMA_DEST_BYTE_EXCHANGE
  2182. * @retval None.
  2183. */
  2184. __STATIC_INLINE void LL_DMA_SetDestByteExchange(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestByteExchange)
  2185. {
  2186. uint32_t dma_base_addr = (uint32_t)DMAx;
  2187. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DBX,
  2188. DestByteExchange);
  2189. }
  2190. /**
  2191. * @brief Get destination byte exchange.
  2192. * @rmtoll CTR1 DBX LL_DMA_GetDestByteExchange
  2193. * @param DMAx DMAx Instance
  2194. * @param Channel This parameter can be one of the following values:
  2195. * @arg @ref LL_DMA_CHANNEL_0
  2196. * @arg @ref LL_DMA_CHANNEL_1
  2197. * @arg @ref LL_DMA_CHANNEL_2
  2198. * @arg @ref LL_DMA_CHANNEL_3
  2199. * @arg @ref LL_DMA_CHANNEL_4
  2200. * @arg @ref LL_DMA_CHANNEL_5
  2201. * @arg @ref LL_DMA_CHANNEL_6
  2202. * @arg @ref LL_DMA_CHANNEL_7
  2203. * @retval Returned value can be one of the following values:
  2204. * @arg @ref LL_DMA_DEST_BYTE_PRESERVE
  2205. * @arg @ref LL_DMA_DEST_BYTE_EXCHANGE
  2206. */
  2207. __STATIC_INLINE uint32_t LL_DMA_GetDestByteExchange(const DMA_TypeDef *DMAx, uint32_t Channel)
  2208. {
  2209. uint32_t dma_base_addr = (uint32_t)DMAx;
  2210. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DBX));
  2211. }
  2212. /**
  2213. * @brief Set source byte exchange.
  2214. * @rmtoll CTR1 SBX LL_DMA_SetSrcByteExchange
  2215. * @param DMAx DMAx Instance
  2216. * @param Channel This parameter can be one of the following values:
  2217. * @arg @ref LL_DMA_CHANNEL_0
  2218. * @arg @ref LL_DMA_CHANNEL_1
  2219. * @arg @ref LL_DMA_CHANNEL_2
  2220. * @arg @ref LL_DMA_CHANNEL_3
  2221. * @arg @ref LL_DMA_CHANNEL_4
  2222. * @arg @ref LL_DMA_CHANNEL_5
  2223. * @arg @ref LL_DMA_CHANNEL_6
  2224. * @arg @ref LL_DMA_CHANNEL_7
  2225. * @param SrcByteExchange This parameter can be one of the following values:
  2226. * @arg @ref LL_DMA_SRC_BYTE_PRESERVE
  2227. * @arg @ref LL_DMA_SRC_BYTE_EXCHANGE
  2228. * @retval None.
  2229. */
  2230. __STATIC_INLINE void LL_DMA_SetSrcByteExchange(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcByteExchange)
  2231. {
  2232. uint32_t dma_base_addr = (uint32_t)DMAx;
  2233. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SBX,
  2234. SrcByteExchange);
  2235. }
  2236. /**
  2237. * @brief Get source byte exchange.
  2238. * @rmtoll CTR1 SBX LL_DMA_GetSrcByteExchange
  2239. * @param DMAx DMAx Instance
  2240. * @param Channel This parameter can be one of the following values:
  2241. * @arg @ref LL_DMA_CHANNEL_0
  2242. * @arg @ref LL_DMA_CHANNEL_1
  2243. * @arg @ref LL_DMA_CHANNEL_2
  2244. * @arg @ref LL_DMA_CHANNEL_3
  2245. * @arg @ref LL_DMA_CHANNEL_4
  2246. * @arg @ref LL_DMA_CHANNEL_5
  2247. * @arg @ref LL_DMA_CHANNEL_6
  2248. * @arg @ref LL_DMA_CHANNEL_7
  2249. * @retval Returned value can be one of the following values:
  2250. * @arg @ref LL_DMA_SRC_BYTE_PRESERVE
  2251. * @arg @ref LL_DMA_SRC_BYTE_EXCHANGE
  2252. */
  2253. __STATIC_INLINE uint32_t LL_DMA_GetSrcByteExchange(const DMA_TypeDef *DMAx, uint32_t Channel)
  2254. {
  2255. uint32_t dma_base_addr = (uint32_t)DMAx;
  2256. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SBX));
  2257. }
  2258. /**
  2259. * @brief Set destination burst length.
  2260. * @rmtoll CTR1 DBL_1 LL_DMA_SetDestBurstLength
  2261. * @param DMAx DMAx Instance
  2262. * @param Channel This parameter can be one of the following values:
  2263. * @arg @ref LL_DMA_CHANNEL_0
  2264. * @arg @ref LL_DMA_CHANNEL_1
  2265. * @arg @ref LL_DMA_CHANNEL_2
  2266. * @arg @ref LL_DMA_CHANNEL_3
  2267. * @arg @ref LL_DMA_CHANNEL_4
  2268. * @arg @ref LL_DMA_CHANNEL_5
  2269. * @arg @ref LL_DMA_CHANNEL_6
  2270. * @arg @ref LL_DMA_CHANNEL_7
  2271. * @param DestBurstLength Between 1 to 64
  2272. * @retval None.
  2273. */
  2274. __STATIC_INLINE void LL_DMA_SetDestBurstLength(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestBurstLength)
  2275. {
  2276. uint32_t dma_base_addr = (uint32_t)DMAx;
  2277. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DBL_1,
  2278. ((DestBurstLength - 1U) << DMA_CTR1_DBL_1_Pos) & DMA_CTR1_DBL_1);
  2279. }
  2280. /**
  2281. * @brief Get destination burst length.
  2282. * @rmtoll CTR1 DBL_1 LL_DMA_GetDestBurstLength
  2283. * @param DMAx DMAx Instance
  2284. * @param Channel This parameter can be one of the following values:
  2285. * @arg @ref LL_DMA_CHANNEL_0
  2286. * @arg @ref LL_DMA_CHANNEL_1
  2287. * @arg @ref LL_DMA_CHANNEL_2
  2288. * @arg @ref LL_DMA_CHANNEL_3
  2289. * @arg @ref LL_DMA_CHANNEL_4
  2290. * @arg @ref LL_DMA_CHANNEL_5
  2291. * @arg @ref LL_DMA_CHANNEL_6
  2292. * @arg @ref LL_DMA_CHANNEL_7
  2293. * @retval Between 1 to 64.
  2294. */
  2295. __STATIC_INLINE uint32_t LL_DMA_GetDestBurstLength(const DMA_TypeDef *DMAx, uint32_t Channel)
  2296. {
  2297. uint32_t dma_base_addr = (uint32_t)DMAx;
  2298. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1,
  2299. DMA_CTR1_DBL_1) >> DMA_CTR1_DBL_1_Pos) + 1U);
  2300. }
  2301. /**
  2302. * @brief Set destination increment mode.
  2303. * @rmtoll CTR1 DINC LL_DMA_SetDestIncMode
  2304. * @param DMAx DMAx Instance
  2305. * @param Channel This parameter can be one of the following values:
  2306. * @arg @ref LL_DMA_CHANNEL_0
  2307. * @arg @ref LL_DMA_CHANNEL_1
  2308. * @arg @ref LL_DMA_CHANNEL_2
  2309. * @arg @ref LL_DMA_CHANNEL_3
  2310. * @arg @ref LL_DMA_CHANNEL_4
  2311. * @arg @ref LL_DMA_CHANNEL_5
  2312. * @arg @ref LL_DMA_CHANNEL_6
  2313. * @arg @ref LL_DMA_CHANNEL_7
  2314. * @param DestInc This parameter can be one of the following values:
  2315. * @arg @ref LL_DMA_DEST_FIXED
  2316. * @arg @ref LL_DMA_DEST_INCREMENT
  2317. * @retval None.
  2318. */
  2319. __STATIC_INLINE void LL_DMA_SetDestIncMode(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestInc)
  2320. {
  2321. uint32_t dma_base_addr = (uint32_t)DMAx;
  2322. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DINC, DestInc);
  2323. }
  2324. /**
  2325. * @brief Get destination increment mode.
  2326. * @note This API is used for all available DMA channels.
  2327. * @rmtoll CTR1 DINC LL_DMA_GetDestIncMode
  2328. * @param DMAx DMAx Instance
  2329. * @param Channel This parameter can be one of the following values:
  2330. * @arg @ref LL_DMA_CHANNEL_0
  2331. * @arg @ref LL_DMA_CHANNEL_1
  2332. * @arg @ref LL_DMA_CHANNEL_2
  2333. * @arg @ref LL_DMA_CHANNEL_3
  2334. * @arg @ref LL_DMA_CHANNEL_4
  2335. * @arg @ref LL_DMA_CHANNEL_5
  2336. * @arg @ref LL_DMA_CHANNEL_6
  2337. * @arg @ref LL_DMA_CHANNEL_7
  2338. * @retval Returned value can be one of the following values:
  2339. * @arg @ref LL_DMA_DEST_FIXED
  2340. * @arg @ref LL_DMA_DEST_INCREMENT
  2341. */
  2342. __STATIC_INLINE uint32_t LL_DMA_GetDestIncMode(const DMA_TypeDef *DMAx, uint32_t Channel)
  2343. {
  2344. uint32_t dma_base_addr = (uint32_t)DMAx;
  2345. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DINC));
  2346. }
  2347. /**
  2348. * @brief Set destination data width.
  2349. * @note This API is used for all available DMA channels.
  2350. * @rmtoll CTR1 DDW_LOG2 LL_DMA_SetDestDataWidth
  2351. * @param DMAx DMAx Instance
  2352. * @param Channel This parameter can be one of the following values:
  2353. * @arg @ref LL_DMA_CHANNEL_0
  2354. * @arg @ref LL_DMA_CHANNEL_1
  2355. * @arg @ref LL_DMA_CHANNEL_2
  2356. * @arg @ref LL_DMA_CHANNEL_3
  2357. * @arg @ref LL_DMA_CHANNEL_4
  2358. * @arg @ref LL_DMA_CHANNEL_5
  2359. * @arg @ref LL_DMA_CHANNEL_6
  2360. * @arg @ref LL_DMA_CHANNEL_7
  2361. * @param DestDataWidth This parameter can be one of the following values:
  2362. * @arg @ref LL_DMA_DEST_DATAWIDTH_BYTE
  2363. * @arg @ref LL_DMA_DEST_DATAWIDTH_HALFWORD
  2364. * @arg @ref LL_DMA_DEST_DATAWIDTH_WORD
  2365. * @retval None.
  2366. */
  2367. __STATIC_INLINE void LL_DMA_SetDestDataWidth(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestDataWidth)
  2368. {
  2369. uint32_t dma_base_addr = (uint32_t)DMAx;
  2370. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DDW_LOG2,
  2371. DestDataWidth);
  2372. }
  2373. /**
  2374. * @brief Get destination data width.
  2375. * @note This API is used for all available DMA channels.
  2376. * @rmtoll CTR1 DDW_LOG2 LL_DMA_GetDestDataWidth
  2377. * @param DMAx DMAx Instance
  2378. * @param Channel This parameter can be one of the following values:
  2379. * @arg @ref LL_DMA_CHANNEL_0
  2380. * @arg @ref LL_DMA_CHANNEL_1
  2381. * @arg @ref LL_DMA_CHANNEL_2
  2382. * @arg @ref LL_DMA_CHANNEL_3
  2383. * @arg @ref LL_DMA_CHANNEL_4
  2384. * @arg @ref LL_DMA_CHANNEL_5
  2385. * @arg @ref LL_DMA_CHANNEL_6
  2386. * @arg @ref LL_DMA_CHANNEL_7
  2387. * @retval Returned value can be one of the following values:
  2388. * @arg @ref LL_DMA_DEST_DATAWIDTH_BYTE
  2389. * @arg @ref LL_DMA_DEST_DATAWIDTH_HALFWORD
  2390. * @arg @ref LL_DMA_DEST_DATAWIDTH_WORD
  2391. */
  2392. __STATIC_INLINE uint32_t LL_DMA_GetDestDataWidth(const DMA_TypeDef *DMAx, uint32_t Channel)
  2393. {
  2394. uint32_t dma_base_addr = (uint32_t)DMAx;
  2395. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DDW_LOG2));
  2396. }
  2397. /**
  2398. * @brief Set source allocated port.
  2399. * @rmtoll CTR1 SAP LL_DMA_SetSrcAllocatedPort
  2400. * @param DMAx DMAx Instance
  2401. * @param Channel This parameter can be one of the following values:
  2402. * @arg @ref LL_DMA_CHANNEL_0
  2403. * @arg @ref LL_DMA_CHANNEL_1
  2404. * @arg @ref LL_DMA_CHANNEL_2
  2405. * @arg @ref LL_DMA_CHANNEL_3
  2406. * @arg @ref LL_DMA_CHANNEL_4
  2407. * @arg @ref LL_DMA_CHANNEL_5
  2408. * @arg @ref LL_DMA_CHANNEL_6
  2409. * @arg @ref LL_DMA_CHANNEL_7
  2410. * @param SrcAllocatedPort This parameter can be one of the following values:
  2411. * @arg @ref LL_DMA_SRC_ALLOCATED_PORT0
  2412. * @arg @ref LL_DMA_SRC_ALLOCATED_PORT1
  2413. * @retval None.
  2414. */
  2415. __STATIC_INLINE void LL_DMA_SetSrcAllocatedPort(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAllocatedPort)
  2416. {
  2417. uint32_t dma_base_addr = (uint32_t)DMAx;
  2418. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SAP,
  2419. SrcAllocatedPort);
  2420. }
  2421. /**
  2422. * @brief Get source allocated port.
  2423. * @rmtoll CTR1 SAP LL_DMA_GetSrcAllocatedPort
  2424. * @param DMAx DMAx Instance
  2425. * @param Channel This parameter can be one of the following values:
  2426. * @arg @ref LL_DMA_CHANNEL_0
  2427. * @arg @ref LL_DMA_CHANNEL_1
  2428. * @arg @ref LL_DMA_CHANNEL_2
  2429. * @arg @ref LL_DMA_CHANNEL_3
  2430. * @arg @ref LL_DMA_CHANNEL_4
  2431. * @arg @ref LL_DMA_CHANNEL_5
  2432. * @arg @ref LL_DMA_CHANNEL_6
  2433. * @arg @ref LL_DMA_CHANNEL_7
  2434. * @retval Returned value can be one of the following values:
  2435. * @arg @ref LL_DMA_SRC_ALLOCATED_PORT0
  2436. * @arg @ref LL_DMA_SRC_ALLOCATED_PORT1
  2437. */
  2438. __STATIC_INLINE uint32_t LL_DMA_GetSrcAllocatedPort(const DMA_TypeDef *DMAx, uint32_t Channel)
  2439. {
  2440. uint32_t dma_base_addr = (uint32_t)DMAx;
  2441. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SAP));
  2442. }
  2443. /**
  2444. * @brief Set data alignment mode.
  2445. * @note This API is used for all available DMA channels.
  2446. * @rmtoll CTR1 PAM LL_DMA_SetDataAlignment
  2447. * @param DMAx DMAx Instance
  2448. * @param Channel This parameter can be one of the following values:
  2449. * @arg @ref LL_DMA_CHANNEL_0
  2450. * @arg @ref LL_DMA_CHANNEL_1
  2451. * @arg @ref LL_DMA_CHANNEL_2
  2452. * @arg @ref LL_DMA_CHANNEL_3
  2453. * @arg @ref LL_DMA_CHANNEL_4
  2454. * @arg @ref LL_DMA_CHANNEL_5
  2455. * @arg @ref LL_DMA_CHANNEL_6
  2456. * @arg @ref LL_DMA_CHANNEL_7
  2457. * @param DataAlignment This parameter can be one of the following values:
  2458. * @arg @ref LL_DMA_DATA_ALIGN_ZEROPADD
  2459. * @arg @ref LL_DMA_DATA_ALIGN_SIGNEXTPADD
  2460. * @arg @ref LL_DMA_DATA_PACK_UNPACK
  2461. * @retval None.
  2462. */
  2463. __STATIC_INLINE void LL_DMA_SetDataAlignment(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DataAlignment)
  2464. {
  2465. uint32_t dma_base_addr = (uint32_t)DMAx;
  2466. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_PAM,
  2467. DataAlignment);
  2468. }
  2469. /**
  2470. * @brief Get data alignment mode.
  2471. * @note This API is used for all available DMA channels.
  2472. * @rmtoll CTR1 PAM LL_DMA_GetDataAlignment
  2473. * @param DMAx DMAx Instance
  2474. * @param Channel This parameter can be one of the following values:
  2475. * @arg @ref LL_DMA_CHANNEL_0
  2476. * @arg @ref LL_DMA_CHANNEL_1
  2477. * @arg @ref LL_DMA_CHANNEL_2
  2478. * @arg @ref LL_DMA_CHANNEL_3
  2479. * @arg @ref LL_DMA_CHANNEL_4
  2480. * @arg @ref LL_DMA_CHANNEL_5
  2481. * @arg @ref LL_DMA_CHANNEL_6
  2482. * @arg @ref LL_DMA_CHANNEL_7
  2483. * @retval Returned value can be one of the following values:
  2484. * @arg @ref LL_DMA_DATA_ALIGN_ZEROPADD
  2485. * @arg @ref LL_DMA_DATA_ALIGN_SIGNEXTPADD
  2486. * @arg @ref LL_DMA_DATA_PACK_UNPACK
  2487. */
  2488. __STATIC_INLINE uint32_t LL_DMA_GetDataAlignment(const DMA_TypeDef *DMAx, uint32_t Channel)
  2489. {
  2490. uint32_t dma_base_addr = (uint32_t)DMAx;
  2491. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_PAM));
  2492. }
  2493. /**
  2494. * @brief Set source burst length.
  2495. * @rmtoll CTR1 SBL_1 LL_DMA_SetSrcBurstLength
  2496. * @param DMAx DMAx Instance
  2497. * @param Channel This parameter can be one of the following values:
  2498. * @arg @ref LL_DMA_CHANNEL_0
  2499. * @arg @ref LL_DMA_CHANNEL_1
  2500. * @arg @ref LL_DMA_CHANNEL_2
  2501. * @arg @ref LL_DMA_CHANNEL_3
  2502. * @arg @ref LL_DMA_CHANNEL_4
  2503. * @arg @ref LL_DMA_CHANNEL_5
  2504. * @arg @ref LL_DMA_CHANNEL_6
  2505. * @arg @ref LL_DMA_CHANNEL_7
  2506. * @param SrcBurstLength Between 1 to 64
  2507. * @retval None.
  2508. */
  2509. __STATIC_INLINE void LL_DMA_SetSrcBurstLength(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcBurstLength)
  2510. {
  2511. uint32_t dma_base_addr = (uint32_t)DMAx;
  2512. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SBL_1,
  2513. ((SrcBurstLength - 1U) << DMA_CTR1_SBL_1_Pos) & DMA_CTR1_SBL_1);
  2514. }
  2515. /**
  2516. * @brief Get source burst length.
  2517. * @rmtoll CTR1 SBL_1 LL_DMA_GetSrcBurstLength
  2518. * @param DMAx DMAx Instance
  2519. * @param Channel This parameter can be one of the following values:
  2520. * @arg @ref LL_DMA_CHANNEL_0
  2521. * @arg @ref LL_DMA_CHANNEL_1
  2522. * @arg @ref LL_DMA_CHANNEL_2
  2523. * @arg @ref LL_DMA_CHANNEL_3
  2524. * @arg @ref LL_DMA_CHANNEL_4
  2525. * @arg @ref LL_DMA_CHANNEL_5
  2526. * @arg @ref LL_DMA_CHANNEL_6
  2527. * @arg @ref LL_DMA_CHANNEL_7
  2528. * @retval Between 1 to 64
  2529. * @retval None.
  2530. */
  2531. __STATIC_INLINE uint32_t LL_DMA_GetSrcBurstLength(const DMA_TypeDef *DMAx, uint32_t Channel)
  2532. {
  2533. uint32_t dma_base_addr = (uint32_t)DMAx;
  2534. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1,
  2535. DMA_CTR1_SBL_1) >> DMA_CTR1_SBL_1_Pos) + 1U);
  2536. }
  2537. /**
  2538. * @brief Set source increment mode.
  2539. * @note This API is used for all available DMA channels.
  2540. * @rmtoll CTR1 SINC LL_DMA_SetSrcIncMode
  2541. * @param DMAx DMAx Instance
  2542. * @param Channel This parameter can be one of the following values:
  2543. * @arg @ref LL_DMA_CHANNEL_0
  2544. * @arg @ref LL_DMA_CHANNEL_1
  2545. * @arg @ref LL_DMA_CHANNEL_2
  2546. * @arg @ref LL_DMA_CHANNEL_3
  2547. * @arg @ref LL_DMA_CHANNEL_4
  2548. * @arg @ref LL_DMA_CHANNEL_5
  2549. * @arg @ref LL_DMA_CHANNEL_6
  2550. * @arg @ref LL_DMA_CHANNEL_7
  2551. * @param SrcInc This parameter can be one of the following values:
  2552. * @arg @ref LL_DMA_SRC_FIXED
  2553. * @arg @ref LL_DMA_SRC_INCREMENT
  2554. * @retval None.
  2555. */
  2556. __STATIC_INLINE void LL_DMA_SetSrcIncMode(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcInc)
  2557. {
  2558. uint32_t dma_base_addr = (uint32_t)DMAx;
  2559. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SINC, SrcInc);
  2560. }
  2561. /**
  2562. * @brief Get source increment mode.
  2563. * @note This API is used for all available DMA channels.
  2564. * @rmtoll CTR1 SINC LL_DMA_GetSrcIncMode
  2565. * @param DMAx DMAx Instance
  2566. * @param Channel This parameter can be one of the following values:
  2567. * @arg @ref LL_DMA_CHANNEL_0
  2568. * @arg @ref LL_DMA_CHANNEL_1
  2569. * @arg @ref LL_DMA_CHANNEL_2
  2570. * @arg @ref LL_DMA_CHANNEL_3
  2571. * @arg @ref LL_DMA_CHANNEL_4
  2572. * @arg @ref LL_DMA_CHANNEL_5
  2573. * @arg @ref LL_DMA_CHANNEL_6
  2574. * @arg @ref LL_DMA_CHANNEL_7
  2575. * @retval Returned value can be one of the following values:
  2576. * @arg @ref LL_DMA_SRC_FIXED
  2577. * @arg @ref LL_DMA_SRC_INCREMENT
  2578. */
  2579. __STATIC_INLINE uint32_t LL_DMA_GetSrcIncMode(const DMA_TypeDef *DMAx, uint32_t Channel)
  2580. {
  2581. uint32_t dma_base_addr = (uint32_t)DMAx;
  2582. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SINC));
  2583. }
  2584. /**
  2585. * @brief Set source data width.
  2586. * @note This API is used for all available DMA channels.
  2587. * @rmtoll CTR1 SDW_LOG2 LL_DMA_SetSrcDataWidth
  2588. * @param DMAx DMAx Instance
  2589. * @param Channel This parameter can be one of the following values:
  2590. * @arg @ref LL_DMA_CHANNEL_0
  2591. * @arg @ref LL_DMA_CHANNEL_1
  2592. * @arg @ref LL_DMA_CHANNEL_2
  2593. * @arg @ref LL_DMA_CHANNEL_3
  2594. * @arg @ref LL_DMA_CHANNEL_4
  2595. * @arg @ref LL_DMA_CHANNEL_5
  2596. * @arg @ref LL_DMA_CHANNEL_6
  2597. * @arg @ref LL_DMA_CHANNEL_7
  2598. * @param SrcDataWidth This parameter can be one of the following values:
  2599. * @arg @ref LL_DMA_SRC_DATAWIDTH_BYTE
  2600. * @arg @ref LL_DMA_SRC_DATAWIDTH_HALFWORD
  2601. * @arg @ref LL_DMA_SRC_DATAWIDTH_WORD
  2602. * @retval None.
  2603. */
  2604. __STATIC_INLINE void LL_DMA_SetSrcDataWidth(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcDataWidth)
  2605. {
  2606. uint32_t dma_base_addr = (uint32_t)DMAx;
  2607. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SDW_LOG2,
  2608. SrcDataWidth);
  2609. }
  2610. /**
  2611. * @brief Get Source Data width.
  2612. * @note This API is used for all available DMA channels.
  2613. * @rmtoll CTR1 SDW_LOG2 LL_DMA_GetSrcDataWidth
  2614. * @param DMAx DMAx Instance
  2615. * @param Channel This parameter can be one of the following values:
  2616. * @arg @ref LL_DMA_CHANNEL_0
  2617. * @arg @ref LL_DMA_CHANNEL_1
  2618. * @arg @ref LL_DMA_CHANNEL_2
  2619. * @arg @ref LL_DMA_CHANNEL_3
  2620. * @arg @ref LL_DMA_CHANNEL_4
  2621. * @arg @ref LL_DMA_CHANNEL_5
  2622. * @arg @ref LL_DMA_CHANNEL_6
  2623. * @arg @ref LL_DMA_CHANNEL_7
  2624. * @retval Returned value can be one of the following values:
  2625. * @arg @ref LL_DMA_SRC_DATAWIDTH_BYTE
  2626. * @arg @ref LL_DMA_SRC_DATAWIDTH_HALFWORD
  2627. * @arg @ref LL_DMA_SRC_DATAWIDTH_WORD
  2628. */
  2629. __STATIC_INLINE uint32_t LL_DMA_GetSrcDataWidth(const DMA_TypeDef *DMAx, uint32_t Channel)
  2630. {
  2631. uint32_t dma_base_addr = (uint32_t)DMAx;
  2632. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SDW_LOG2));
  2633. }
  2634. /**
  2635. * @brief Configure channel transfer.
  2636. * @note This API is used for all available DMA channels.
  2637. * @rmtoll CTR2 TCEM LL_DMA_ConfigChannelTransfer\n
  2638. * CTR2 TRIGPOL LL_DMA_ConfigChannelTransfer\n
  2639. * CTR2 TRIGM LL_DMA_ConfigChannelTransfer\n
  2640. * CTR2 BREQ LL_DMA_ConfigChannelTransfer\n
  2641. * CTR2 DREQ LL_DMA_ConfigChannelTransfer\n
  2642. * CTR2 SWREQ LL_DMA_ConfigChannelTransfer\n
  2643. * CTR2 PFREQ LL_DMA_ConfigChannelTransfer
  2644. * @param DMAx DMAx Instance
  2645. * @param Channel This parameter can be one of the following values:
  2646. * @arg @ref LL_DMA_CHANNEL_0
  2647. * @arg @ref LL_DMA_CHANNEL_1
  2648. * @arg @ref LL_DMA_CHANNEL_2
  2649. * @arg @ref LL_DMA_CHANNEL_3
  2650. * @arg @ref LL_DMA_CHANNEL_4
  2651. * @arg @ref LL_DMA_CHANNEL_5
  2652. * @arg @ref LL_DMA_CHANNEL_6
  2653. * @arg @ref LL_DMA_CHANNEL_7
  2654. * @param Configuration This parameter must be a combination of all the following values:
  2655. * @arg @ref LL_DMA_TCEM_BLK_TRANSFER or @ref LL_DMA_TCEM_RPT_BLK_TRANSFER or
  2656. * @ref LL_DMA_TCEM_EACH_LLITEM_TRANSFER or @ref LL_DMA_TCEM_LAST_LLITEM_TRANSFER
  2657. * @arg @ref LL_DMA_HWREQUEST_SINGLEBURST or @ref LL_DMA_HWREQUEST_BLK
  2658. * @arg @ref LL_DMA_TRIG_POLARITY_MASKED or @ref LL_DMA_TRIG_POLARITY_RISING or
  2659. * @ref LL_DMA_TRIG_POLARITY_FALLING
  2660. * @arg @ref LL_DMA_TRIGM_BLK_TRANSFER or @ref LL_DMA_TRIGM_RPT_BLK_TRANSFER or
  2661. * @ref LL_DMA_TRIGM_LLI_LINK_TRANSFER or @ref LL_DMA_TRIGM_SINGLBURST_TRANSFER
  2662. * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY or @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH or
  2663. * @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
  2664. * @arg @ref LL_DMA_NORMAL or @ref LL_DMA_PFCTRL
  2665. *@retval None.
  2666. */
  2667. __STATIC_INLINE void LL_DMA_ConfigChannelTransfer(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration)
  2668. {
  2669. uint32_t dma_base_addr = (uint32_t)DMAx;
  2670. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2,
  2671. (DMA_CTR2_TCEM | DMA_CTR2_TRIGPOL | DMA_CTR2_TRIGM | DMA_CTR2_DREQ | DMA_CTR2_SWREQ | DMA_CTR2_BREQ |
  2672. DMA_CTR2_PFREQ), Configuration);
  2673. }
  2674. /**
  2675. * @brief Set transfer event mode.
  2676. * @note This API is used for all available DMA channels.
  2677. * @rmtoll CTR2 TCEM LL_DMA_SetTransferEventMode
  2678. * @param DMAx DMAx Instance
  2679. * @param Channel This parameter can be one of the following values:
  2680. * @arg @ref LL_DMA_CHANNEL_0
  2681. * @arg @ref LL_DMA_CHANNEL_1
  2682. * @arg @ref LL_DMA_CHANNEL_2
  2683. * @arg @ref LL_DMA_CHANNEL_3
  2684. * @arg @ref LL_DMA_CHANNEL_4
  2685. * @arg @ref LL_DMA_CHANNEL_5
  2686. * @arg @ref LL_DMA_CHANNEL_6
  2687. * @arg @ref LL_DMA_CHANNEL_7
  2688. * @param TransferEventMode This parameter can be one of the following values:
  2689. * @arg @ref LL_DMA_TCEM_BLK_TRANSFER
  2690. * @arg @ref LL_DMA_TCEM_RPT_BLK_TRANSFER
  2691. * @arg @ref LL_DMA_TCEM_EACH_LLITEM_TRANSFER
  2692. * @arg @ref LL_DMA_TCEM_LAST_LLITEM_TRANSFER
  2693. * @retval None.
  2694. */
  2695. __STATIC_INLINE void LL_DMA_SetTransferEventMode(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t TransferEventMode)
  2696. {
  2697. uint32_t dma_base_addr = (uint32_t)DMAx;
  2698. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_TCEM,
  2699. TransferEventMode);
  2700. }
  2701. /**
  2702. * @brief Get transfer event mode.
  2703. * @note This API is used for all available DMA channels.
  2704. * @rmtoll CTR2 TCEM LL_DMA_GetTransferEventMode
  2705. * @param DMAx DMAx Instance
  2706. * @param Channel This parameter can be one of the following values:
  2707. * @arg @ref LL_DMA_CHANNEL_0
  2708. * @arg @ref LL_DMA_CHANNEL_1
  2709. * @arg @ref LL_DMA_CHANNEL_2
  2710. * @arg @ref LL_DMA_CHANNEL_3
  2711. * @arg @ref LL_DMA_CHANNEL_4
  2712. * @arg @ref LL_DMA_CHANNEL_5
  2713. * @arg @ref LL_DMA_CHANNEL_6
  2714. * @arg @ref LL_DMA_CHANNEL_7
  2715. * @retval Returned value can be one of the following values:
  2716. * @arg @ref LL_DMA_TCEM_BLK_TRANSFER
  2717. * @arg @ref LL_DMA_TCEM_RPT_BLK_TRANSFER
  2718. * @arg @ref LL_DMA_TCEM_EACH_LLITEM_TRANSFER
  2719. * @arg @ref LL_DMA_TCEM_LAST_LLITEM_TRANSFER
  2720. */
  2721. __STATIC_INLINE uint32_t LL_DMA_GetTransferEventMode(const DMA_TypeDef *DMAx, uint32_t Channel)
  2722. {
  2723. uint32_t dma_base_addr = (uint32_t)DMAx;
  2724. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_TCEM));
  2725. }
  2726. /**
  2727. * @brief Set trigger polarity.
  2728. * @note This API is used for all available DMA channels.
  2729. * @rmtoll CTR2 TRIGPOL LL_DMA_SetTriggerPolarity
  2730. * @param DMAx DMAx Instance
  2731. * @param Channel This parameter can be one of the following values:
  2732. * @arg @ref LL_DMA_CHANNEL_0
  2733. * @arg @ref LL_DMA_CHANNEL_1
  2734. * @arg @ref LL_DMA_CHANNEL_2
  2735. * @arg @ref LL_DMA_CHANNEL_3
  2736. * @arg @ref LL_DMA_CHANNEL_4
  2737. * @arg @ref LL_DMA_CHANNEL_5
  2738. * @arg @ref LL_DMA_CHANNEL_6
  2739. * @arg @ref LL_DMA_CHANNEL_7
  2740. * @param TriggerPolarity This parameter can be one of the following values:
  2741. * @arg @ref LL_DMA_TRIG_POLARITY_MASKED
  2742. * @arg @ref LL_DMA_TRIG_POLARITY_RISING
  2743. * @arg @ref LL_DMA_TRIG_POLARITY_FALLING
  2744. * @retval None.
  2745. */
  2746. __STATIC_INLINE void LL_DMA_SetTriggerPolarity(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t TriggerPolarity)
  2747. {
  2748. uint32_t dma_base_addr = (uint32_t)DMAx;
  2749. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_TRIGPOL,
  2750. TriggerPolarity);
  2751. }
  2752. /**
  2753. * @brief Get trigger polarity.
  2754. * @note This API is used for all available DMA channels.
  2755. * @rmtoll CTR2 TRIGPOL LL_DMA_GetTriggerPolarity
  2756. * @param DMAx DMAx Instance
  2757. * @param Channel This parameter can be one of the following values:
  2758. * @arg @ref LL_DMA_CHANNEL_0
  2759. * @arg @ref LL_DMA_CHANNEL_1
  2760. * @arg @ref LL_DMA_CHANNEL_2
  2761. * @arg @ref LL_DMA_CHANNEL_3
  2762. * @arg @ref LL_DMA_CHANNEL_4
  2763. * @arg @ref LL_DMA_CHANNEL_5
  2764. * @arg @ref LL_DMA_CHANNEL_6
  2765. * @arg @ref LL_DMA_CHANNEL_7
  2766. * @retval Returned value can be one of the following values:
  2767. * @arg @ref LL_DMA_TRIG_POLARITY_MASKED
  2768. * @arg @ref LL_DMA_TRIG_POLARITY_RISING
  2769. * @arg @ref LL_DMA_TRIG_POLARITY_FALLING
  2770. */
  2771. __STATIC_INLINE uint32_t LL_DMA_GetTriggerPolarity(const DMA_TypeDef *DMAx, uint32_t Channel)
  2772. {
  2773. uint32_t dma_base_addr = (uint32_t)DMAx;
  2774. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_TRIGPOL));
  2775. }
  2776. /**
  2777. * @brief Set trigger Mode.
  2778. * @note This API is used for all available DMA channels.
  2779. * @rmtoll CTR2 TRIGM LL_DMA_SetTriggerMode
  2780. * @param DMAx DMAx Instance
  2781. * @param Channel This parameter can be one of the following values:
  2782. * @arg @ref LL_DMA_CHANNEL_0
  2783. * @arg @ref LL_DMA_CHANNEL_1
  2784. * @arg @ref LL_DMA_CHANNEL_2
  2785. * @arg @ref LL_DMA_CHANNEL_3
  2786. * @arg @ref LL_DMA_CHANNEL_4
  2787. * @arg @ref LL_DMA_CHANNEL_5
  2788. * @arg @ref LL_DMA_CHANNEL_6
  2789. * @arg @ref LL_DMA_CHANNEL_7
  2790. * @param TriggerMode This parameter can be one of the following values:
  2791. * @arg @ref LL_DMA_TRIGM_BLK_TRANSFER
  2792. * @arg @ref LL_DMA_TRIGM_RPT_BLK_TRANSFER (This value is allowed only for 2D addressing channels)
  2793. * @arg @ref LL_DMA_TRIGM_LLI_LINK_TRANSFER
  2794. * @arg @ref LL_DMA_TRIGM_SINGLBURST_TRANSFER
  2795. * @retval None.
  2796. */
  2797. __STATIC_INLINE void LL_DMA_SetTriggerMode(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t TriggerMode)
  2798. {
  2799. uint32_t dma_base_addr = (uint32_t)DMAx;
  2800. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_TRIGM,
  2801. TriggerMode);
  2802. }
  2803. /**
  2804. * @brief Get trigger Mode.
  2805. * @note This API is used for all available DMA channels.
  2806. * @rmtoll CTR2 TRIGM LL_DMA_GetTriggerMode
  2807. * @param DMAx DMAx Instance
  2808. * @param Channel This parameter can be one of the following values:
  2809. * @arg @ref LL_DMA_CHANNEL_0
  2810. * @arg @ref LL_DMA_CHANNEL_1
  2811. * @arg @ref LL_DMA_CHANNEL_2
  2812. * @arg @ref LL_DMA_CHANNEL_3
  2813. * @arg @ref LL_DMA_CHANNEL_4
  2814. * @arg @ref LL_DMA_CHANNEL_5
  2815. * @arg @ref LL_DMA_CHANNEL_6
  2816. * @arg @ref LL_DMA_CHANNEL_7
  2817. * @retval Returned value can be one of the following values:
  2818. * @arg @ref LL_DMA_TRIGM_BLK_TRANSFER
  2819. * @arg @ref LL_DMA_TRIGM_RPT_BLK_TRANSFER (This value is allowed only for 2D addressing channels)
  2820. * @arg @ref LL_DMA_TRIGM_LLI_LINK_TRANSFER
  2821. * @arg @ref LL_DMA_TRIGM_SINGLBURST_TRANSFER
  2822. */
  2823. __STATIC_INLINE uint32_t LL_DMA_GetTriggerMode(const DMA_TypeDef *DMAx, uint32_t Channel)
  2824. {
  2825. uint32_t dma_base_addr = (uint32_t)DMAx;
  2826. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_TRIGM));
  2827. }
  2828. /**
  2829. * @brief Set destination hardware and software transfer request.
  2830. * @note This API is used for all available DMA channels.
  2831. * @rmtoll CTR2 DREQ LL_DMA_SetDataTransferDirection\n
  2832. * @rmtoll CTR2 SWREQ LL_DMA_SetDataTransferDirection
  2833. * @param DMAx DMAx Instance
  2834. * @param Channel This parameter can be one of the following values:
  2835. * @arg @ref LL_DMA_CHANNEL_0
  2836. * @arg @ref LL_DMA_CHANNEL_1
  2837. * @arg @ref LL_DMA_CHANNEL_2
  2838. * @arg @ref LL_DMA_CHANNEL_3
  2839. * @arg @ref LL_DMA_CHANNEL_4
  2840. * @arg @ref LL_DMA_CHANNEL_5
  2841. * @arg @ref LL_DMA_CHANNEL_6
  2842. * @arg @ref LL_DMA_CHANNEL_7
  2843. * @param Direction This parameter can be one of the following values:
  2844. * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY
  2845. * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH
  2846. * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
  2847. * @retval None.
  2848. */
  2849. __STATIC_INLINE void LL_DMA_SetDataTransferDirection(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Direction)
  2850. {
  2851. uint32_t dma_base_addr = (uint32_t)DMAx;
  2852. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2,
  2853. DMA_CTR2_DREQ | DMA_CTR2_SWREQ, Direction);
  2854. }
  2855. /**
  2856. * @brief Get destination hardware and software transfer request.
  2857. * @note This API is used for all available DMA channels.
  2858. * @rmtoll CTR2 DREQ LL_DMA_GetDataTransferDirection\n
  2859. * @rmtoll CTR2 SWREQ LL_DMA_GetDataTransferDirection
  2860. * @param DMAx DMAx Instance
  2861. * @param Channel This parameter can be one of the following values:
  2862. * @arg @ref LL_DMA_CHANNEL_0
  2863. * @arg @ref LL_DMA_CHANNEL_1
  2864. * @arg @ref LL_DMA_CHANNEL_2
  2865. * @arg @ref LL_DMA_CHANNEL_3
  2866. * @arg @ref LL_DMA_CHANNEL_4
  2867. * @arg @ref LL_DMA_CHANNEL_5
  2868. * @arg @ref LL_DMA_CHANNEL_6
  2869. * @arg @ref LL_DMA_CHANNEL_7
  2870. * @retval Returned value can be one of the following values:
  2871. * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY
  2872. * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH
  2873. * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
  2874. */
  2875. __STATIC_INLINE uint32_t LL_DMA_GetDataTransferDirection(const DMA_TypeDef *DMAx, uint32_t Channel)
  2876. {
  2877. uint32_t dma_base_addr = (uint32_t)DMAx;
  2878. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2,
  2879. DMA_CTR2_DREQ | DMA_CTR2_SWREQ));
  2880. }
  2881. /**
  2882. * @brief Set block hardware request.
  2883. * @note This API is used for all available DMA channels.
  2884. * @rmtoll CTR2 BREQ LL_DMA_SetBlkHWRequest\n
  2885. * @param DMAx DMAx Instance
  2886. * @param Channel This parameter can be one of the following values:
  2887. * @arg @ref LL_DMA_CHANNEL_0
  2888. * @arg @ref LL_DMA_CHANNEL_1
  2889. * @arg @ref LL_DMA_CHANNEL_2
  2890. * @arg @ref LL_DMA_CHANNEL_3
  2891. * @arg @ref LL_DMA_CHANNEL_4
  2892. * @arg @ref LL_DMA_CHANNEL_5
  2893. * @arg @ref LL_DMA_CHANNEL_6
  2894. * @arg @ref LL_DMA_CHANNEL_7
  2895. * @param BlkHWRequest This parameter can be one of the following values:
  2896. * @arg @ref LL_DMA_HWREQUEST_SINGLEBURST
  2897. * @arg @ref LL_DMA_HWREQUEST_BLK
  2898. * @retval None.
  2899. */
  2900. __STATIC_INLINE void LL_DMA_SetBlkHWRequest(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t BlkHWRequest)
  2901. {
  2902. uint32_t dma_base_addr = (uint32_t)DMAx;
  2903. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_BREQ,
  2904. BlkHWRequest);
  2905. }
  2906. /**
  2907. * @brief Get block hardware request.
  2908. * @note This API is used for all available DMA channels.
  2909. * @rmtoll CTR2 BREQ LL_DMA_GetBlkHWRequest\n
  2910. * @param DMAx DMAx Instance
  2911. * @param Channel This parameter can be one of the following values:
  2912. * @arg @ref LL_DMA_CHANNEL_0
  2913. * @arg @ref LL_DMA_CHANNEL_1
  2914. * @arg @ref LL_DMA_CHANNEL_2
  2915. * @arg @ref LL_DMA_CHANNEL_3
  2916. * @arg @ref LL_DMA_CHANNEL_4
  2917. * @arg @ref LL_DMA_CHANNEL_5
  2918. * @arg @ref LL_DMA_CHANNEL_6
  2919. * @arg @ref LL_DMA_CHANNEL_7
  2920. * @retval Returned value can be one of the following values:
  2921. * @arg @ref LL_DMA_HWREQUEST_SINGLEBURST
  2922. * @arg @ref LL_DMA_HWREQUEST_BLK
  2923. */
  2924. __STATIC_INLINE uint32_t LL_DMA_GetBlkHWRequest(const DMA_TypeDef *DMAx, uint32_t Channel)
  2925. {
  2926. uint32_t dma_base_addr = (uint32_t)DMAx;
  2927. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_BREQ));
  2928. }
  2929. /**
  2930. * @brief Set hardware request.
  2931. * @note This API is used for all available DMA channels.
  2932. * @rmtoll CTR2 REQSEL LL_DMA_SetPeriphRequest
  2933. * @param DMAx DMAx Instance
  2934. * @param Channel This parameter can be one of the following values:
  2935. * @arg @ref LL_DMA_CHANNEL_0
  2936. * @arg @ref LL_DMA_CHANNEL_1
  2937. * @arg @ref LL_DMA_CHANNEL_2
  2938. * @arg @ref LL_DMA_CHANNEL_3
  2939. * @arg @ref LL_DMA_CHANNEL_4
  2940. * @arg @ref LL_DMA_CHANNEL_5
  2941. * @arg @ref LL_DMA_CHANNEL_6
  2942. * @arg @ref LL_DMA_CHANNEL_7
  2943. * @param Request This parameter can be one of the following values:
  2944. * @arg @ref LL_GPDMA1_REQUEST_ADC1
  2945. * @arg @ref LL_GPDMA1_REQUEST_ADC2 (*)
  2946. * @arg @ref LL_GPDMA1_REQUEST_DAC1_CH1
  2947. * @arg @ref LL_GPDMA1_REQUEST_DAC1_CH2
  2948. * @arg @ref LL_GPDMA1_REQUEST_TIM6_UP
  2949. * @arg @ref LL_GPDMA1_REQUEST_TIM7_UP
  2950. * @arg @ref LL_GPDMA1_REQUEST_SPI1_RX
  2951. * @arg @ref LL_GPDMA1_REQUEST_SPI1_TX
  2952. * @arg @ref LL_GPDMA1_REQUEST_SPI2_RX
  2953. * @arg @ref LL_GPDMA1_REQUEST_SPI2_TX
  2954. * @arg @ref LL_GPDMA1_REQUEST_SPI3_RX
  2955. * @arg @ref LL_GPDMA1_REQUEST_SPI3_TX
  2956. * @arg @ref LL_GPDMA1_REQUEST_I2C1_RX
  2957. * @arg @ref LL_GPDMA1_REQUEST_I2C1_TX
  2958. * @arg @ref LL_GPDMA1_REQUEST_I2C2_RX
  2959. * @arg @ref LL_GPDMA1_REQUEST_I2C2_TX
  2960. * @arg @ref LL_GPDMA1_REQUEST_I2C3_RX (*)
  2961. * @arg @ref LL_GPDMA1_REQUEST_I2C3_TX (*)
  2962. * @arg @ref LL_GPDMA1_REQUEST_USART1_RX
  2963. * @arg @ref LL_GPDMA1_REQUEST_USART1_TX
  2964. * @arg @ref LL_GPDMA1_REQUEST_USART2_RX
  2965. * @arg @ref LL_GPDMA1_REQUEST_USART2_TX
  2966. * @arg @ref LL_GPDMA1_REQUEST_USART3_RX
  2967. * @arg @ref LL_GPDMA1_REQUEST_USART3_TX
  2968. * @arg @ref LL_GPDMA1_REQUEST_UART4_RX (*)
  2969. * @arg @ref LL_GPDMA1_REQUEST_UART4_TX (*)
  2970. * @arg @ref LL_GPDMA1_REQUEST_UART5_RX (*)
  2971. * @arg @ref LL_GPDMA1_REQUEST_UART5_TX (*)
  2972. * @arg @ref LL_GPDMA1_REQUEST_USART6_RX (*)
  2973. * @arg @ref LL_GPDMA1_REQUEST_USART6_TX (*)
  2974. * @arg @ref LL_GPDMA1_REQUEST_UART7_RX (*)
  2975. * @arg @ref LL_GPDMA1_REQUEST_UART7_TX (*)
  2976. * @arg @ref LL_GPDMA1_REQUEST_UART8_RX (*)
  2977. * @arg @ref LL_GPDMA1_REQUEST_UART8_TX (*)
  2978. * @arg @ref LL_GPDMA1_REQUEST_UART9_RX (*)
  2979. * @arg @ref LL_GPDMA1_REQUEST_UART9_TX (*)
  2980. * @arg @ref LL_GPDMA1_REQUEST_USART10_RX (*)
  2981. * @arg @ref LL_GPDMA1_REQUEST_USART10_TX (*)
  2982. * @arg @ref LL_GPDMA1_REQUEST_USART11_RX (*)
  2983. * @arg @ref LL_GPDMA1_REQUEST_USART11_TX (*)
  2984. * @arg @ref LL_GPDMA1_REQUEST_UART12_RX (*)
  2985. * @arg @ref LL_GPDMA1_REQUEST_UART12_TX (*)
  2986. * @arg @ref LL_GPDMA1_REQUEST_LPUART1_RX
  2987. * @arg @ref LL_GPDMA1_REQUEST_LPUART1_TX
  2988. * @arg @ref LL_GPDMA1_REQUEST_SPI4_RX (*)
  2989. * @arg @ref LL_GPDMA1_REQUEST_SPI4_TX (*)
  2990. * @arg @ref LL_GPDMA1_REQUEST_SPI5_RX (*)
  2991. * @arg @ref LL_GPDMA1_REQUEST_SPI5_TX (*)
  2992. * @arg @ref LL_GPDMA1_REQUEST_SPI6_RX (*)
  2993. * @arg @ref LL_GPDMA1_REQUEST_SPI6_TX (*)
  2994. * @arg @ref LL_GPDMA1_REQUEST_SAI1_A (*)
  2995. * @arg @ref LL_GPDMA1_REQUEST_SAI1_B (*)
  2996. * @arg @ref LL_GPDMA1_REQUEST_SAI2_A (*)
  2997. * @arg @ref LL_GPDMA1_REQUEST_SAI2_B (*)
  2998. * @arg @ref LL_GPDMA1_REQUEST_OCTOSPI1 (*)
  2999. * @arg @ref LL_GPDMA1_REQUEST_TIM1_CH1
  3000. * @arg @ref LL_GPDMA1_REQUEST_TIM1_CH2
  3001. * @arg @ref LL_GPDMA1_REQUEST_TIM1_CH3
  3002. * @arg @ref LL_GPDMA1_REQUEST_TIM1_CH4
  3003. * @arg @ref LL_GPDMA1_REQUEST_TIM1_UP
  3004. * @arg @ref LL_GPDMA1_REQUEST_TIM1_TRIG
  3005. * @arg @ref LL_GPDMA1_REQUEST_TIM1_COM
  3006. * @arg @ref LL_GPDMA1_REQUEST_TIM8_CH1 (*)
  3007. * @arg @ref LL_GPDMA1_REQUEST_TIM8_CH2 (*)
  3008. * @arg @ref LL_GPDMA1_REQUEST_TIM8_CH3 (*)
  3009. * @arg @ref LL_GPDMA1_REQUEST_TIM8_CH4 (*)
  3010. * @arg @ref LL_GPDMA1_REQUEST_TIM8_UP (*)
  3011. * @arg @ref LL_GPDMA1_REQUEST_TIM8_TRIG (*)
  3012. * @arg @ref LL_GPDMA1_REQUEST_TIM8_COM (*)
  3013. * @arg @ref LL_GPDMA1_REQUEST_TIM2_CH1
  3014. * @arg @ref LL_GPDMA1_REQUEST_TIM2_CH2
  3015. * @arg @ref LL_GPDMA1_REQUEST_TIM2_CH3
  3016. * @arg @ref LL_GPDMA1_REQUEST_TIM2_CH4
  3017. * @arg @ref LL_GPDMA1_REQUEST_TIM2_UP
  3018. * @arg @ref LL_GPDMA1_REQUEST_TIM3_CH1
  3019. * @arg @ref LL_GPDMA1_REQUEST_TIM3_CH2
  3020. * @arg @ref LL_GPDMA1_REQUEST_TIM3_CH3
  3021. * @arg @ref LL_GPDMA1_REQUEST_TIM3_CH4
  3022. * @arg @ref LL_GPDMA1_REQUEST_TIM3_UP
  3023. * @arg @ref LL_GPDMA1_REQUEST_TIM3_TRIG
  3024. * @arg @ref LL_GPDMA1_REQUEST_TIM4_CH1 (*)
  3025. * @arg @ref LL_GPDMA1_REQUEST_TIM4_CH2 (*)
  3026. * @arg @ref LL_GPDMA1_REQUEST_TIM4_CH3 (*)
  3027. * @arg @ref LL_GPDMA1_REQUEST_TIM4_CH4 (*)
  3028. * @arg @ref LL_GPDMA1_REQUEST_TIM4_UP (*)
  3029. * @arg @ref LL_GPDMA1_REQUEST_TIM5_CH1 (*)
  3030. * @arg @ref LL_GPDMA1_REQUEST_TIM5_CH2 (*)
  3031. * @arg @ref LL_GPDMA1_REQUEST_TIM5_CH3 (*)
  3032. * @arg @ref LL_GPDMA1_REQUEST_TIM5_CH4 (*)
  3033. * @arg @ref LL_GPDMA1_REQUEST_TIM5_UP (*)
  3034. * @arg @ref LL_GPDMA1_REQUEST_TIM5_TRIG (*)
  3035. * @arg @ref LL_GPDMA1_REQUEST_TIM15_CH1 (*)
  3036. * @arg @ref LL_GPDMA1_REQUEST_TIM15_UP (*)
  3037. * @arg @ref LL_GPDMA1_REQUEST_TIM15_TRIG (*)
  3038. * @arg @ref LL_GPDMA1_REQUEST_TIM15_COM (*)
  3039. * @arg @ref LL_GPDMA1_REQUEST_TIM16_CH1 (*)
  3040. * @arg @ref LL_GPDMA1_REQUEST_TIM16_UP (*)
  3041. * @arg @ref LL_GPDMA1_REQUEST_TIM17_CH1 (*)
  3042. * @arg @ref LL_GPDMA1_REQUEST_TIM17_UP (*)
  3043. * @arg @ref LL_GPDMA1_REQUEST_LPTIM1_IC1
  3044. * @arg @ref LL_GPDMA1_REQUEST_LPTIM1_IC2
  3045. * @arg @ref LL_GPDMA1_REQUEST_LPTIM1_UE
  3046. * @arg @ref LL_GPDMA1_REQUEST_LPTIM2_IC1
  3047. * @arg @ref LL_GPDMA1_REQUEST_LPTIM2_IC2
  3048. * @arg @ref LL_GPDMA1_REQUEST_LPTIM2_UE
  3049. * @arg @ref LL_GPDMA1_REQUEST_DCMI (*)
  3050. * @arg @ref LL_GPDMA1_REQUEST_AES_OUT (*)
  3051. * @arg @ref LL_GPDMA1_REQUEST_AES_IN (*)
  3052. * @arg @ref LL_GPDMA1_REQUEST_HASH_IN
  3053. * @arg @ref LL_GPDMA1_REQUEST_UCPD1_RX (*)
  3054. * @arg @ref LL_GPDMA1_REQUEST_UCPD1_TX (*)
  3055. * @arg @ref LL_GPDMA1_REQUEST_CORDIC_READ (*)
  3056. * @arg @ref LL_GPDMA1_REQUEST_CORDIC_WRITE (*)
  3057. * @arg @ref LL_GPDMA1_REQUEST_FMAC_READ (*)
  3058. * @arg @ref LL_GPDMA1_REQUEST_FMAC_WRITE (*)
  3059. * @arg @ref LL_GPDMA1_REQUEST_SAES_OUT (*)
  3060. * @arg @ref LL_GPDMA1_REQUEST_SAES_IN (*)
  3061. * @arg @ref LL_GPDMA1_REQUEST_I3C1_RX
  3062. * @arg @ref LL_GPDMA1_REQUEST_I3C1_TX
  3063. * @arg @ref LL_GPDMA1_REQUEST_I3C1_TC
  3064. * @arg @ref LL_GPDMA1_REQUEST_I3C1_RS
  3065. * @arg @ref LL_GPDMA1_REQUEST_I2C4_RX (*)
  3066. * @arg @ref LL_GPDMA1_REQUEST_I2C4_TX (*)
  3067. * @arg @ref LL_GPDMA1_REQUEST_LPTIM3_IC1 (*)
  3068. * @arg @ref LL_GPDMA1_REQUEST_LPTIM3_IC2 (*)
  3069. * @arg @ref LL_GPDMA1_REQUEST_LPTIM3_UE (*)
  3070. * @arg @ref LL_GPDMA1_REQUEST_LPTIM5_IC1 (*)
  3071. * @arg @ref LL_GPDMA1_REQUEST_LPTIM5_IC2 (*)
  3072. * @arg @ref LL_GPDMA1_REQUEST_LPTIM5_UE (*)
  3073. * @arg @ref LL_GPDMA1_REQUEST_LPTIM6_IC1 (*)
  3074. * @arg @ref LL_GPDMA1_REQUEST_LPTIM6_IC2 (*)
  3075. * @arg @ref LL_GPDMA1_REQUEST_LPTIM6_UE (*)
  3076. * @arg @ref LL_GPDMA1_REQUEST_I3C2_RX (*)
  3077. * @arg @ref LL_GPDMA1_REQUEST_I3C2_TX (*)
  3078. * @arg @ref LL_GPDMA1_REQUEST_I3C2_TC (*)
  3079. * @arg @ref LL_GPDMA1_REQUEST_I3C2_RS (*)
  3080. *
  3081. * @arg @ref LL_GPDMA2_REQUEST_ADC1
  3082. * @arg @ref LL_GPDMA2_REQUEST_ADC2 (*)
  3083. * @arg @ref LL_GPDMA2_REQUEST_DAC1_CH1
  3084. * @arg @ref LL_GPDMA2_REQUEST_DAC1_CH2
  3085. * @arg @ref LL_GPDMA2_REQUEST_TIM6_UP
  3086. * @arg @ref LL_GPDMA2_REQUEST_TIM7_UP
  3087. * @arg @ref LL_GPDMA2_REQUEST_SPI1_RX
  3088. * @arg @ref LL_GPDMA2_REQUEST_SPI1_TX
  3089. * @arg @ref LL_GPDMA2_REQUEST_SPI2_RX
  3090. * @arg @ref LL_GPDMA2_REQUEST_SPI2_TX
  3091. * @arg @ref LL_GPDMA2_REQUEST_SPI3_RX
  3092. * @arg @ref LL_GPDMA2_REQUEST_SPI3_TX
  3093. * @arg @ref LL_GPDMA2_REQUEST_I2C1_RX
  3094. * @arg @ref LL_GPDMA2_REQUEST_I2C1_TX
  3095. * @arg @ref LL_GPDMA2_REQUEST_I2C2_RX
  3096. * @arg @ref LL_GPDMA2_REQUEST_I2C2_TX
  3097. * @arg @ref LL_GPDMA2_REQUEST_I2C3_RX (*)
  3098. * @arg @ref LL_GPDMA2_REQUEST_I2C3_TX (*)
  3099. * @arg @ref LL_GPDMA2_REQUEST_USART1_RX
  3100. * @arg @ref LL_GPDMA2_REQUEST_USART1_TX
  3101. * @arg @ref LL_GPDMA2_REQUEST_USART2_RX
  3102. * @arg @ref LL_GPDMA2_REQUEST_USART2_TX
  3103. * @arg @ref LL_GPDMA2_REQUEST_USART3_RX
  3104. * @arg @ref LL_GPDMA2_REQUEST_USART3_TX
  3105. * @arg @ref LL_GPDMA2_REQUEST_UART4_RX (*)
  3106. * @arg @ref LL_GPDMA2_REQUEST_UART4_TX (*)
  3107. * @arg @ref LL_GPDMA2_REQUEST_UART5_RX (*)
  3108. * @arg @ref LL_GPDMA2_REQUEST_UART5_TX (*)
  3109. * @arg @ref LL_GPDMA2_REQUEST_USART6_RX (*)
  3110. * @arg @ref LL_GPDMA2_REQUEST_USART6_TX (*)
  3111. * @arg @ref LL_GPDMA2_REQUEST_UART7_RX (*)
  3112. * @arg @ref LL_GPDMA2_REQUEST_UART7_TX (*)
  3113. * @arg @ref LL_GPDMA2_REQUEST_UART8_RX (*)
  3114. * @arg @ref LL_GPDMA2_REQUEST_UART8_TX (*)
  3115. * @arg @ref LL_GPDMA2_REQUEST_UART9_RX (*)
  3116. * @arg @ref LL_GPDMA2_REQUEST_UART9_TX (*)
  3117. * @arg @ref LL_GPDMA2_REQUEST_USART10_RX (*)
  3118. * @arg @ref LL_GPDMA2_REQUEST_USART10_TX (*)
  3119. * @arg @ref LL_GPDMA2_REQUEST_USART11_RX (*)
  3120. * @arg @ref LL_GPDMA2_REQUEST_USART11_TX (*)
  3121. * @arg @ref LL_GPDMA2_REQUEST_UART12_RX (*)
  3122. * @arg @ref LL_GPDMA2_REQUEST_UART12_TX (*)
  3123. * @arg @ref LL_GPDMA2_REQUEST_LPUART1_RX
  3124. * @arg @ref LL_GPDMA2_REQUEST_LPUART1_TX
  3125. * @arg @ref LL_GPDMA2_REQUEST_SPI4_RX (*)
  3126. * @arg @ref LL_GPDMA2_REQUEST_SPI4_TX (*)
  3127. * @arg @ref LL_GPDMA2_REQUEST_SPI5_RX (*)
  3128. * @arg @ref LL_GPDMA2_REQUEST_SPI5_TX (*)
  3129. * @arg @ref LL_GPDMA2_REQUEST_SPI6_RX (*)
  3130. * @arg @ref LL_GPDMA2_REQUEST_SPI6_TX (*)
  3131. * @arg @ref LL_GPDMA2_REQUEST_SAI1_A (*)
  3132. * @arg @ref LL_GPDMA2_REQUEST_SAI1_B (*)
  3133. * @arg @ref LL_GPDMA2_REQUEST_SAI2_A (*)
  3134. * @arg @ref LL_GPDMA2_REQUEST_SAI2_B (*)
  3135. * @arg @ref LL_GPDMA2_REQUEST_OCTOSPI1 (*)
  3136. * @arg @ref LL_GPDMA2_REQUEST_TIM1_CH1
  3137. * @arg @ref LL_GPDMA2_REQUEST_TIM1_CH2
  3138. * @arg @ref LL_GPDMA2_REQUEST_TIM1_CH3
  3139. * @arg @ref LL_GPDMA2_REQUEST_TIM1_CH4
  3140. * @arg @ref LL_GPDMA2_REQUEST_TIM1_UP
  3141. * @arg @ref LL_GPDMA2_REQUEST_TIM1_TRIG
  3142. * @arg @ref LL_GPDMA2_REQUEST_TIM1_COM
  3143. * @arg @ref LL_GPDMA2_REQUEST_TIM8_CH1 (*)
  3144. * @arg @ref LL_GPDMA2_REQUEST_TIM8_CH2 (*)
  3145. * @arg @ref LL_GPDMA2_REQUEST_TIM8_CH3 (*)
  3146. * @arg @ref LL_GPDMA2_REQUEST_TIM8_CH4 (*)
  3147. * @arg @ref LL_GPDMA2_REQUEST_TIM8_UP (*)
  3148. * @arg @ref LL_GPDMA2_REQUEST_TIM8_TRIG (*)
  3149. * @arg @ref LL_GPDMA2_REQUEST_TIM8_COM (*)
  3150. * @arg @ref LL_GPDMA2_REQUEST_TIM2_CH1
  3151. * @arg @ref LL_GPDMA2_REQUEST_TIM2_CH2
  3152. * @arg @ref LL_GPDMA2_REQUEST_TIM2_CH3
  3153. * @arg @ref LL_GPDMA2_REQUEST_TIM2_CH4
  3154. * @arg @ref LL_GPDMA2_REQUEST_TIM2_UP
  3155. * @arg @ref LL_GPDMA2_REQUEST_TIM3_CH1
  3156. * @arg @ref LL_GPDMA2_REQUEST_TIM3_CH2
  3157. * @arg @ref LL_GPDMA2_REQUEST_TIM3_CH3
  3158. * @arg @ref LL_GPDMA2_REQUEST_TIM3_CH4
  3159. * @arg @ref LL_GPDMA2_REQUEST_TIM3_UP
  3160. * @arg @ref LL_GPDMA2_REQUEST_TIM3_TRIG
  3161. * @arg @ref LL_GPDMA2_REQUEST_TIM4_CH1 (*)
  3162. * @arg @ref LL_GPDMA2_REQUEST_TIM4_CH2 (*)
  3163. * @arg @ref LL_GPDMA2_REQUEST_TIM4_CH3 (*)
  3164. * @arg @ref LL_GPDMA2_REQUEST_TIM4_CH4 (*)
  3165. * @arg @ref LL_GPDMA2_REQUEST_TIM4_UP (*)
  3166. * @arg @ref LL_GPDMA2_REQUEST_TIM5_CH1 (*)
  3167. * @arg @ref LL_GPDMA2_REQUEST_TIM5_CH2 (*)
  3168. * @arg @ref LL_GPDMA2_REQUEST_TIM5_CH3 (*)
  3169. * @arg @ref LL_GPDMA2_REQUEST_TIM5_CH4 (*)
  3170. * @arg @ref LL_GPDMA2_REQUEST_TIM5_UP (*)
  3171. * @arg @ref LL_GPDMA2_REQUEST_TIM5_TRIG (*)
  3172. * @arg @ref LL_GPDMA2_REQUEST_TIM15_CH1 (*)
  3173. * @arg @ref LL_GPDMA2_REQUEST_TIM15_UP (*)
  3174. * @arg @ref LL_GPDMA2_REQUEST_TIM15_TRIG (*)
  3175. * @arg @ref LL_GPDMA2_REQUEST_TIM15_COM (*)
  3176. * @arg @ref LL_GPDMA2_REQUEST_TIM16_CH1 (*)
  3177. * @arg @ref LL_GPDMA2_REQUEST_TIM16_UP (*)
  3178. * @arg @ref LL_GPDMA2_REQUEST_TIM17_CH1 (*)
  3179. * @arg @ref LL_GPDMA2_REQUEST_TIM17_UP (*)
  3180. * @arg @ref LL_GPDMA2_REQUEST_LPTIM1_IC1
  3181. * @arg @ref LL_GPDMA2_REQUEST_LPTIM1_IC2
  3182. * @arg @ref LL_GPDMA2_REQUEST_LPTIM1_UE
  3183. * @arg @ref LL_GPDMA2_REQUEST_LPTIM2_IC1
  3184. * @arg @ref LL_GPDMA2_REQUEST_LPTIM2_IC2
  3185. * @arg @ref LL_GPDMA2_REQUEST_LPTIM2_UE
  3186. * @arg @ref LL_GPDMA2_REQUEST_DCMI (*)
  3187. * @arg @ref LL_GPDMA2_REQUEST_AES_OUT (*)
  3188. * @arg @ref LL_GPDMA2_REQUEST_AES_IN (*)
  3189. * @arg @ref LL_GPDMA2_REQUEST_HASH_IN
  3190. * @arg @ref LL_GPDMA2_REQUEST_UCPD1_RX (*)
  3191. * @arg @ref LL_GPDMA2_REQUEST_UCPD1_TX (*)
  3192. * @arg @ref LL_GPDMA2_REQUEST_CORDIC_READ (*)
  3193. * @arg @ref LL_GPDMA2_REQUEST_CORDIC_WRITE (*)
  3194. * @arg @ref LL_GPDMA2_REQUEST_FMAC_READ (*)
  3195. * @arg @ref LL_GPDMA2_REQUEST_FMAC_WRITE (*)
  3196. * @arg @ref LL_GPDMA2_REQUEST_SAES_OUT (*)
  3197. * @arg @ref LL_GPDMA2_REQUEST_SAES_IN (*)
  3198. * @arg @ref LL_GPDMA2_REQUEST_I3C1_RX
  3199. * @arg @ref LL_GPDMA2_REQUEST_I3C1_TX
  3200. * @arg @ref LL_GPDMA2_REQUEST_I3C1_TC
  3201. * @arg @ref LL_GPDMA2_REQUEST_I3C1_RS
  3202. * @arg @ref LL_GPDMA2_REQUEST_I2C4_RX (*)
  3203. * @arg @ref LL_GPDMA2_REQUEST_I2C4_TX (*)
  3204. * @arg @ref LL_GPDMA2_REQUEST_LPTIM3_IC1 (*)
  3205. * @arg @ref LL_GPDMA2_REQUEST_LPTIM3_IC2 (*)
  3206. * @arg @ref LL_GPDMA2_REQUEST_LPTIM3_UE (*)
  3207. * @arg @ref LL_GPDMA2_REQUEST_LPTIM5_IC1 (*)
  3208. * @arg @ref LL_GPDMA2_REQUEST_LPTIM5_IC2 (*)
  3209. * @arg @ref LL_GPDMA2_REQUEST_LPTIM5_UE (*)
  3210. * @arg @ref LL_GPDMA2_REQUEST_LPTIM6_IC1 (*)
  3211. * @arg @ref LL_GPDMA2_REQUEST_LPTIM6_IC2 (*)
  3212. * @arg @ref LL_GPDMA2_REQUEST_LPTIM6_UE (*)
  3213. * @arg @ref LL_GPDMA2_REQUEST_I3C2_RX (*)
  3214. * @arg @ref LL_GPDMA2_REQUEST_I3C2_TX (*)
  3215. * @arg @ref LL_GPDMA2_REQUEST_I3C2_TC (*)
  3216. * @arg @ref LL_GPDMA2_REQUEST_I3C2_RS (*)
  3217. *
  3218. * @note (*) Availability depends on devices.
  3219. * @retval None.
  3220. */
  3221. __STATIC_INLINE void LL_DMA_SetPeriphRequest(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Request)
  3222. {
  3223. uint32_t dma_base_addr = (uint32_t)DMAx;
  3224. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_REQSEL, Request);
  3225. }
  3226. /**
  3227. * @brief Get hardware request.
  3228. * @note This API is used for all available DMA channels.
  3229. * @rmtoll CTR2 REQSEL LL_DMA_GetPeriphRequest
  3230. * @param DMAx DMAx Instance
  3231. * @param Channel This parameter can be one of the following values:
  3232. * @arg @ref LL_DMA_CHANNEL_0
  3233. * @arg @ref LL_DMA_CHANNEL_1
  3234. * @arg @ref LL_DMA_CHANNEL_2
  3235. * @arg @ref LL_DMA_CHANNEL_3
  3236. * @arg @ref LL_DMA_CHANNEL_4
  3237. * @arg @ref LL_DMA_CHANNEL_5
  3238. * @arg @ref LL_DMA_CHANNEL_6
  3239. * @arg @ref LL_DMA_CHANNEL_7
  3240. * @retval Returned value can be one of the following values:
  3241. * @arg @ref LL_GPDMA1_REQUEST_ADC1
  3242. * @arg @ref LL_GPDMA1_REQUEST_ADC2 (*)
  3243. * @arg @ref LL_GPDMA1_REQUEST_DAC1_CH1
  3244. * @arg @ref LL_GPDMA1_REQUEST_DAC1_CH2
  3245. * @arg @ref LL_GPDMA1_REQUEST_TIM6_UP
  3246. * @arg @ref LL_GPDMA1_REQUEST_TIM7_UP
  3247. * @arg @ref LL_GPDMA1_REQUEST_SPI1_RX
  3248. * @arg @ref LL_GPDMA1_REQUEST_SPI1_TX
  3249. * @arg @ref LL_GPDMA1_REQUEST_SPI2_RX
  3250. * @arg @ref LL_GPDMA1_REQUEST_SPI2_TX
  3251. * @arg @ref LL_GPDMA1_REQUEST_SPI3_RX
  3252. * @arg @ref LL_GPDMA1_REQUEST_SPI3_TX
  3253. * @arg @ref LL_GPDMA1_REQUEST_I2C1_RX
  3254. * @arg @ref LL_GPDMA1_REQUEST_I2C1_TX
  3255. * @arg @ref LL_GPDMA1_REQUEST_I2C2_RX
  3256. * @arg @ref LL_GPDMA1_REQUEST_I2C2_TX
  3257. * @arg @ref LL_GPDMA1_REQUEST_I2C3_RX (*)
  3258. * @arg @ref LL_GPDMA1_REQUEST_I2C3_TX (*)
  3259. * @arg @ref LL_GPDMA1_REQUEST_USART1_RX
  3260. * @arg @ref LL_GPDMA1_REQUEST_USART1_TX
  3261. * @arg @ref LL_GPDMA1_REQUEST_USART2_RX
  3262. * @arg @ref LL_GPDMA1_REQUEST_USART2_TX
  3263. * @arg @ref LL_GPDMA1_REQUEST_USART3_RX
  3264. * @arg @ref LL_GPDMA1_REQUEST_USART3_TX
  3265. * @arg @ref LL_GPDMA1_REQUEST_UART4_RX (*)
  3266. * @arg @ref LL_GPDMA1_REQUEST_UART4_TX (*)
  3267. * @arg @ref LL_GPDMA1_REQUEST_UART5_RX (*)
  3268. * @arg @ref LL_GPDMA1_REQUEST_UART5_TX (*)
  3269. * @arg @ref LL_GPDMA1_REQUEST_USART6_RX (*)
  3270. * @arg @ref LL_GPDMA1_REQUEST_USART6_TX (*)
  3271. * @arg @ref LL_GPDMA1_REQUEST_UART7_RX (*)
  3272. * @arg @ref LL_GPDMA1_REQUEST_UART7_TX (*)
  3273. * @arg @ref LL_GPDMA1_REQUEST_UART8_RX (*)
  3274. * @arg @ref LL_GPDMA1_REQUEST_UART8_TX (*)
  3275. * @arg @ref LL_GPDMA1_REQUEST_UART9_RX (*)
  3276. * @arg @ref LL_GPDMA1_REQUEST_UART9_TX (*)
  3277. * @arg @ref LL_GPDMA1_REQUEST_USART10_RX (*)
  3278. * @arg @ref LL_GPDMA1_REQUEST_USART10_TX (*)
  3279. * @arg @ref LL_GPDMA1_REQUEST_USART11_RX (*)
  3280. * @arg @ref LL_GPDMA1_REQUEST_USART11_TX (*)
  3281. * @arg @ref LL_GPDMA1_REQUEST_UART12_RX (*)
  3282. * @arg @ref LL_GPDMA1_REQUEST_UART12_TX (*)
  3283. * @arg @ref LL_GPDMA1_REQUEST_LPUART1_RX
  3284. * @arg @ref LL_GPDMA1_REQUEST_LPUART1_TX
  3285. * @arg @ref LL_GPDMA1_REQUEST_SPI4_RX (*)
  3286. * @arg @ref LL_GPDMA1_REQUEST_SPI4_TX (*)
  3287. * @arg @ref LL_GPDMA1_REQUEST_SPI5_RX (*)
  3288. * @arg @ref LL_GPDMA1_REQUEST_SPI5_TX (*)
  3289. * @arg @ref LL_GPDMA1_REQUEST_SPI6_RX (*)
  3290. * @arg @ref LL_GPDMA1_REQUEST_SPI6_TX (*)
  3291. * @arg @ref LL_GPDMA1_REQUEST_SAI1_A (*)
  3292. * @arg @ref LL_GPDMA1_REQUEST_SAI1_B (*)
  3293. * @arg @ref LL_GPDMA1_REQUEST_SAI2_A (*)
  3294. * @arg @ref LL_GPDMA1_REQUEST_SAI2_B (*)
  3295. * @arg @ref LL_GPDMA1_REQUEST_OCTOSPI1 (*)
  3296. * @arg @ref LL_GPDMA1_REQUEST_TIM1_CH1
  3297. * @arg @ref LL_GPDMA1_REQUEST_TIM1_CH2
  3298. * @arg @ref LL_GPDMA1_REQUEST_TIM1_CH3
  3299. * @arg @ref LL_GPDMA1_REQUEST_TIM1_CH4
  3300. * @arg @ref LL_GPDMA1_REQUEST_TIM1_UP
  3301. * @arg @ref LL_GPDMA1_REQUEST_TIM1_TRIG
  3302. * @arg @ref LL_GPDMA1_REQUEST_TIM1_COM
  3303. * @arg @ref LL_GPDMA1_REQUEST_TIM8_CH1 (*)
  3304. * @arg @ref LL_GPDMA1_REQUEST_TIM8_CH2 (*)
  3305. * @arg @ref LL_GPDMA1_REQUEST_TIM8_CH3 (*)
  3306. * @arg @ref LL_GPDMA1_REQUEST_TIM8_CH4 (*)
  3307. * @arg @ref LL_GPDMA1_REQUEST_TIM8_UP (*)
  3308. * @arg @ref LL_GPDMA1_REQUEST_TIM8_TRIG (*)
  3309. * @arg @ref LL_GPDMA1_REQUEST_TIM8_COM (*)
  3310. * @arg @ref LL_GPDMA1_REQUEST_TIM2_CH1
  3311. * @arg @ref LL_GPDMA1_REQUEST_TIM2_CH2
  3312. * @arg @ref LL_GPDMA1_REQUEST_TIM2_CH3
  3313. * @arg @ref LL_GPDMA1_REQUEST_TIM2_CH4
  3314. * @arg @ref LL_GPDMA1_REQUEST_TIM2_UP
  3315. * @arg @ref LL_GPDMA1_REQUEST_TIM3_CH1
  3316. * @arg @ref LL_GPDMA1_REQUEST_TIM3_CH2
  3317. * @arg @ref LL_GPDMA1_REQUEST_TIM3_CH3
  3318. * @arg @ref LL_GPDMA1_REQUEST_TIM3_CH4
  3319. * @arg @ref LL_GPDMA1_REQUEST_TIM3_UP
  3320. * @arg @ref LL_GPDMA1_REQUEST_TIM3_TRIG
  3321. * @arg @ref LL_GPDMA1_REQUEST_TIM4_CH1 (*)
  3322. * @arg @ref LL_GPDMA1_REQUEST_TIM4_CH2 (*)
  3323. * @arg @ref LL_GPDMA1_REQUEST_TIM4_CH3 (*)
  3324. * @arg @ref LL_GPDMA1_REQUEST_TIM4_CH4 (*)
  3325. * @arg @ref LL_GPDMA1_REQUEST_TIM4_UP (*)
  3326. * @arg @ref LL_GPDMA1_REQUEST_TIM5_CH1 (*)
  3327. * @arg @ref LL_GPDMA1_REQUEST_TIM5_CH2 (*)
  3328. * @arg @ref LL_GPDMA1_REQUEST_TIM5_CH3 (*)
  3329. * @arg @ref LL_GPDMA1_REQUEST_TIM5_CH4 (*)
  3330. * @arg @ref LL_GPDMA1_REQUEST_TIM5_UP (*)
  3331. * @arg @ref LL_GPDMA1_REQUEST_TIM5_TRIG (*)
  3332. * @arg @ref LL_GPDMA1_REQUEST_TIM15_CH1 (*)
  3333. * @arg @ref LL_GPDMA1_REQUEST_TIM15_UP (*)
  3334. * @arg @ref LL_GPDMA1_REQUEST_TIM15_TRIG (*)
  3335. * @arg @ref LL_GPDMA1_REQUEST_TIM15_COM (*)
  3336. * @arg @ref LL_GPDMA1_REQUEST_TIM16_CH1 (*)
  3337. * @arg @ref LL_GPDMA1_REQUEST_TIM16_UP (*)
  3338. * @arg @ref LL_GPDMA1_REQUEST_TIM17_CH1 (*)
  3339. * @arg @ref LL_GPDMA1_REQUEST_TIM17_UP (*)
  3340. * @arg @ref LL_GPDMA1_REQUEST_LPTIM1_IC1
  3341. * @arg @ref LL_GPDMA1_REQUEST_LPTIM1_IC2
  3342. * @arg @ref LL_GPDMA1_REQUEST_LPTIM1_UE
  3343. * @arg @ref LL_GPDMA1_REQUEST_LPTIM2_IC1
  3344. * @arg @ref LL_GPDMA1_REQUEST_LPTIM2_IC2
  3345. * @arg @ref LL_GPDMA1_REQUEST_LPTIM2_UE
  3346. * @arg @ref LL_GPDMA1_REQUEST_DCMI (*)
  3347. * @arg @ref LL_GPDMA1_REQUEST_AES_OUT (*)
  3348. * @arg @ref LL_GPDMA1_REQUEST_AES_IN (*)
  3349. * @arg @ref LL_GPDMA1_REQUEST_HASH_IN
  3350. * @arg @ref LL_GPDMA1_REQUEST_UCPD1_RX (*)
  3351. * @arg @ref LL_GPDMA1_REQUEST_UCPD1_TX (*)
  3352. * @arg @ref LL_GPDMA1_REQUEST_CORDIC_READ (*)
  3353. * @arg @ref LL_GPDMA1_REQUEST_CORDIC_WRITE (*)
  3354. * @arg @ref LL_GPDMA1_REQUEST_FMAC_READ (*)
  3355. * @arg @ref LL_GPDMA1_REQUEST_FMAC_WRITE (*)
  3356. * @arg @ref LL_GPDMA1_REQUEST_SAES_OUT (*)
  3357. * @arg @ref LL_GPDMA1_REQUEST_SAES_IN (*)
  3358. * @arg @ref LL_GPDMA1_REQUEST_I3C1_RX
  3359. * @arg @ref LL_GPDMA1_REQUEST_I3C1_TX
  3360. * @arg @ref LL_GPDMA1_REQUEST_I3C1_TC
  3361. * @arg @ref LL_GPDMA1_REQUEST_I3C1_RS
  3362. * @arg @ref LL_GPDMA1_REQUEST_I2C4_RX (*)
  3363. * @arg @ref LL_GPDMA1_REQUEST_I2C4_TX (*)
  3364. * @arg @ref LL_GPDMA1_REQUEST_LPTIM3_IC1 (*)
  3365. * @arg @ref LL_GPDMA1_REQUEST_LPTIM3_IC2 (*)
  3366. * @arg @ref LL_GPDMA1_REQUEST_LPTIM3_UE (*)
  3367. * @arg @ref LL_GPDMA1_REQUEST_LPTIM5_IC1 (*)
  3368. * @arg @ref LL_GPDMA1_REQUEST_LPTIM5_IC2 (*)
  3369. * @arg @ref LL_GPDMA1_REQUEST_LPTIM5_UE (*)
  3370. * @arg @ref LL_GPDMA1_REQUEST_LPTIM6_IC1 (*)
  3371. * @arg @ref LL_GPDMA1_REQUEST_LPTIM6_IC2 (*)
  3372. * @arg @ref LL_GPDMA1_REQUEST_LPTIM6_UE (*)
  3373. * @arg @ref LL_GPDMA1_REQUEST_I3C2_RX (*)
  3374. * @arg @ref LL_GPDMA1_REQUEST_I3C2_TX (*)
  3375. * @arg @ref LL_GPDMA1_REQUEST_I3C2_TC (*)
  3376. * @arg @ref LL_GPDMA1_REQUEST_I3C2_RS (*)
  3377. *
  3378. * @arg @ref LL_GPDMA2_REQUEST_ADC1
  3379. * @arg @ref LL_GPDMA2_REQUEST_ADC2 (*)
  3380. * @arg @ref LL_GPDMA2_REQUEST_DAC1_CH1
  3381. * @arg @ref LL_GPDMA2_REQUEST_DAC1_CH2
  3382. * @arg @ref LL_GPDMA2_REQUEST_TIM6_UP
  3383. * @arg @ref LL_GPDMA2_REQUEST_TIM7_UP
  3384. * @arg @ref LL_GPDMA2_REQUEST_SPI1_RX
  3385. * @arg @ref LL_GPDMA2_REQUEST_SPI1_TX
  3386. * @arg @ref LL_GPDMA2_REQUEST_SPI2_RX
  3387. * @arg @ref LL_GPDMA2_REQUEST_SPI2_TX
  3388. * @arg @ref LL_GPDMA2_REQUEST_SPI3_RX
  3389. * @arg @ref LL_GPDMA2_REQUEST_SPI3_TX
  3390. * @arg @ref LL_GPDMA2_REQUEST_I2C1_RX
  3391. * @arg @ref LL_GPDMA2_REQUEST_I2C1_TX
  3392. * @arg @ref LL_GPDMA2_REQUEST_I2C2_RX
  3393. * @arg @ref LL_GPDMA2_REQUEST_I2C2_TX
  3394. * @arg @ref LL_GPDMA2_REQUEST_I2C3_RX (*)
  3395. * @arg @ref LL_GPDMA2_REQUEST_I2C3_TX (*)
  3396. * @arg @ref LL_GPDMA2_REQUEST_USART1_RX
  3397. * @arg @ref LL_GPDMA2_REQUEST_USART1_TX
  3398. * @arg @ref LL_GPDMA2_REQUEST_USART2_RX
  3399. * @arg @ref LL_GPDMA2_REQUEST_USART2_TX
  3400. * @arg @ref LL_GPDMA2_REQUEST_USART3_RX
  3401. * @arg @ref LL_GPDMA2_REQUEST_USART3_TX
  3402. * @arg @ref LL_GPDMA2_REQUEST_UART4_RX (*)
  3403. * @arg @ref LL_GPDMA2_REQUEST_UART4_TX (*)
  3404. * @arg @ref LL_GPDMA2_REQUEST_UART5_RX (*)
  3405. * @arg @ref LL_GPDMA2_REQUEST_UART5_TX (*)
  3406. * @arg @ref LL_GPDMA2_REQUEST_USART6_RX (*)
  3407. * @arg @ref LL_GPDMA2_REQUEST_USART6_TX (*)
  3408. * @arg @ref LL_GPDMA2_REQUEST_UART7_RX (*)
  3409. * @arg @ref LL_GPDMA2_REQUEST_UART7_TX (*)
  3410. * @arg @ref LL_GPDMA2_REQUEST_UART8_RX (*)
  3411. * @arg @ref LL_GPDMA2_REQUEST_UART8_TX (*)
  3412. * @arg @ref LL_GPDMA2_REQUEST_UART9_RX (*)
  3413. * @arg @ref LL_GPDMA2_REQUEST_UART9_TX (*)
  3414. * @arg @ref LL_GPDMA2_REQUEST_USART10_RX (*)
  3415. * @arg @ref LL_GPDMA2_REQUEST_USART10_TX (*)
  3416. * @arg @ref LL_GPDMA2_REQUEST_USART11_RX (*)
  3417. * @arg @ref LL_GPDMA2_REQUEST_USART11_TX (*)
  3418. * @arg @ref LL_GPDMA2_REQUEST_UART12_RX (*)
  3419. * @arg @ref LL_GPDMA2_REQUEST_UART12_TX (*)
  3420. * @arg @ref LL_GPDMA2_REQUEST_LPUART1_RX
  3421. * @arg @ref LL_GPDMA2_REQUEST_LPUART1_TX
  3422. * @arg @ref LL_GPDMA2_REQUEST_SPI4_RX (*)
  3423. * @arg @ref LL_GPDMA2_REQUEST_SPI4_TX (*)
  3424. * @arg @ref LL_GPDMA2_REQUEST_SPI5_RX (*)
  3425. * @arg @ref LL_GPDMA2_REQUEST_SPI5_TX (*)
  3426. * @arg @ref LL_GPDMA2_REQUEST_SPI6_RX (*)
  3427. * @arg @ref LL_GPDMA2_REQUEST_SPI6_TX (*)
  3428. * @arg @ref LL_GPDMA2_REQUEST_SAI1_A (*)
  3429. * @arg @ref LL_GPDMA2_REQUEST_SAI1_B (*)
  3430. * @arg @ref LL_GPDMA2_REQUEST_SAI2_A (*)
  3431. * @arg @ref LL_GPDMA2_REQUEST_SAI2_B (*)
  3432. * @arg @ref LL_GPDMA2_REQUEST_OCTOSPI1 (*)
  3433. * @arg @ref LL_GPDMA2_REQUEST_TIM1_CH1
  3434. * @arg @ref LL_GPDMA2_REQUEST_TIM1_CH2
  3435. * @arg @ref LL_GPDMA2_REQUEST_TIM1_CH3
  3436. * @arg @ref LL_GPDMA2_REQUEST_TIM1_CH4
  3437. * @arg @ref LL_GPDMA2_REQUEST_TIM1_UP
  3438. * @arg @ref LL_GPDMA2_REQUEST_TIM1_TRIG
  3439. * @arg @ref LL_GPDMA2_REQUEST_TIM1_COM
  3440. * @arg @ref LL_GPDMA2_REQUEST_TIM8_CH1 (*)
  3441. * @arg @ref LL_GPDMA2_REQUEST_TIM8_CH2 (*)
  3442. * @arg @ref LL_GPDMA2_REQUEST_TIM8_CH3 (*)
  3443. * @arg @ref LL_GPDMA2_REQUEST_TIM8_CH4 (*)
  3444. * @arg @ref LL_GPDMA2_REQUEST_TIM8_UP (*)
  3445. * @arg @ref LL_GPDMA2_REQUEST_TIM8_TRIG (*)
  3446. * @arg @ref LL_GPDMA2_REQUEST_TIM8_COM (*)
  3447. * @arg @ref LL_GPDMA2_REQUEST_TIM2_CH1
  3448. * @arg @ref LL_GPDMA2_REQUEST_TIM2_CH2
  3449. * @arg @ref LL_GPDMA2_REQUEST_TIM2_CH3
  3450. * @arg @ref LL_GPDMA2_REQUEST_TIM2_CH4
  3451. * @arg @ref LL_GPDMA2_REQUEST_TIM2_UP
  3452. * @arg @ref LL_GPDMA2_REQUEST_TIM3_CH1
  3453. * @arg @ref LL_GPDMA2_REQUEST_TIM3_CH2
  3454. * @arg @ref LL_GPDMA2_REQUEST_TIM3_CH3
  3455. * @arg @ref LL_GPDMA2_REQUEST_TIM3_CH4
  3456. * @arg @ref LL_GPDMA2_REQUEST_TIM3_UP
  3457. * @arg @ref LL_GPDMA2_REQUEST_TIM3_TRIG
  3458. * @arg @ref LL_GPDMA2_REQUEST_TIM4_CH1 (*)
  3459. * @arg @ref LL_GPDMA2_REQUEST_TIM4_CH2 (*)
  3460. * @arg @ref LL_GPDMA2_REQUEST_TIM4_CH3 (*)
  3461. * @arg @ref LL_GPDMA2_REQUEST_TIM4_CH4 (*)
  3462. * @arg @ref LL_GPDMA2_REQUEST_TIM4_UP (*)
  3463. * @arg @ref LL_GPDMA2_REQUEST_TIM5_CH1 (*)
  3464. * @arg @ref LL_GPDMA2_REQUEST_TIM5_CH2 (*)
  3465. * @arg @ref LL_GPDMA2_REQUEST_TIM5_CH3 (*)
  3466. * @arg @ref LL_GPDMA2_REQUEST_TIM5_CH4 (*)
  3467. * @arg @ref LL_GPDMA2_REQUEST_TIM5_UP (*)
  3468. * @arg @ref LL_GPDMA2_REQUEST_TIM5_TRIG (*)
  3469. * @arg @ref LL_GPDMA2_REQUEST_TIM15_CH1 (*)
  3470. * @arg @ref LL_GPDMA2_REQUEST_TIM15_UP (*)
  3471. * @arg @ref LL_GPDMA2_REQUEST_TIM15_TRIG (*)
  3472. * @arg @ref LL_GPDMA2_REQUEST_TIM15_COM (*)
  3473. * @arg @ref LL_GPDMA2_REQUEST_TIM16_CH1 (*)
  3474. * @arg @ref LL_GPDMA2_REQUEST_TIM16_UP (*)
  3475. * @arg @ref LL_GPDMA2_REQUEST_TIM17_CH1 (*)
  3476. * @arg @ref LL_GPDMA2_REQUEST_TIM17_UP (*)
  3477. * @arg @ref LL_GPDMA2_REQUEST_LPTIM1_IC1
  3478. * @arg @ref LL_GPDMA2_REQUEST_LPTIM1_IC2
  3479. * @arg @ref LL_GPDMA2_REQUEST_LPTIM1_UE
  3480. * @arg @ref LL_GPDMA2_REQUEST_LPTIM2_IC1
  3481. * @arg @ref LL_GPDMA2_REQUEST_LPTIM2_IC2
  3482. * @arg @ref LL_GPDMA2_REQUEST_LPTIM2_UE
  3483. * @arg @ref LL_GPDMA2_REQUEST_DCMI (*)
  3484. * @arg @ref LL_GPDMA2_REQUEST_AES_OUT (*)
  3485. * @arg @ref LL_GPDMA2_REQUEST_AES_IN (*)
  3486. * @arg @ref LL_GPDMA2_REQUEST_HASH_IN
  3487. * @arg @ref LL_GPDMA2_REQUEST_UCPD1_RX (*)
  3488. * @arg @ref LL_GPDMA2_REQUEST_UCPD1_TX (*)
  3489. * @arg @ref LL_GPDMA2_REQUEST_CORDIC_READ (*)
  3490. * @arg @ref LL_GPDMA2_REQUEST_CORDIC_WRITE (*)
  3491. * @arg @ref LL_GPDMA2_REQUEST_FMAC_READ (*)
  3492. * @arg @ref LL_GPDMA2_REQUEST_FMAC_WRITE (*)
  3493. * @arg @ref LL_GPDMA2_REQUEST_SAES_OUT (*)
  3494. * @arg @ref LL_GPDMA2_REQUEST_SAES_IN (*)
  3495. * @arg @ref LL_GPDMA2_REQUEST_I3C1_RX
  3496. * @arg @ref LL_GPDMA2_REQUEST_I3C1_TX
  3497. * @arg @ref LL_GPDMA2_REQUEST_I3C1_TC
  3498. * @arg @ref LL_GPDMA2_REQUEST_I3C1_RS
  3499. * @arg @ref LL_GPDMA2_REQUEST_I2C4_RX (*)
  3500. * @arg @ref LL_GPDMA2_REQUEST_I2C4_TX (*)
  3501. * @arg @ref LL_GPDMA2_REQUEST_LPTIM3_IC1 (*)
  3502. * @arg @ref LL_GPDMA2_REQUEST_LPTIM3_IC2 (*)
  3503. * @arg @ref LL_GPDMA2_REQUEST_LPTIM3_UE (*)
  3504. * @arg @ref LL_GPDMA2_REQUEST_LPTIM5_IC1 (*)
  3505. * @arg @ref LL_GPDMA2_REQUEST_LPTIM5_IC2 (*)
  3506. * @arg @ref LL_GPDMA2_REQUEST_LPTIM5_UE (*)
  3507. * @arg @ref LL_GPDMA2_REQUEST_LPTIM6_IC1 (*)
  3508. * @arg @ref LL_GPDMA2_REQUEST_LPTIM6_IC2 (*)
  3509. * @arg @ref LL_GPDMA2_REQUEST_LPTIM6_UE (*)
  3510. * @arg @ref LL_GPDMA2_REQUEST_I3C2_RX (*)
  3511. * @arg @ref LL_GPDMA2_REQUEST_I3C2_TX (*)
  3512. * @arg @ref LL_GPDMA2_REQUEST_I3C2_TC (*)
  3513. * @arg @ref LL_GPDMA2_REQUEST_I3C2_RS (*)
  3514. *
  3515. * @note (*) Availability depends on devices.
  3516. */
  3517. __STATIC_INLINE uint32_t LL_DMA_GetPeriphRequest(const DMA_TypeDef *DMAx, uint32_t Channel)
  3518. {
  3519. uint32_t dma_base_addr = (uint32_t)DMAx;
  3520. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_REQSEL));
  3521. }
  3522. /**
  3523. * @brief Set hardware trigger.
  3524. * @note This API is used for all available DMA channels.
  3525. * @rmtoll CTR2 TRIGSEL LL_DMA_SetHWTrigger
  3526. * @param DMAx DMAx Instance
  3527. * @param Channel This parameter can be one of the following values:
  3528. * @arg @ref LL_DMA_CHANNEL_0
  3529. * @arg @ref LL_DMA_CHANNEL_1
  3530. * @arg @ref LL_DMA_CHANNEL_2
  3531. * @arg @ref LL_DMA_CHANNEL_3
  3532. * @arg @ref LL_DMA_CHANNEL_4
  3533. * @arg @ref LL_DMA_CHANNEL_5
  3534. * @arg @ref LL_DMA_CHANNEL_6
  3535. * @arg @ref LL_DMA_CHANNEL_7
  3536. * @param Trigger This parameter can be one of the following values:
  3537. * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE0
  3538. * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE1
  3539. * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE2
  3540. * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE3
  3541. * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE4
  3542. * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE5
  3543. * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE6
  3544. * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE7
  3545. * @arg @ref LL_GPDMA1_TRIGGER_TAMP_TRG1
  3546. * @arg @ref LL_GPDMA1_TRIGGER_TAMP_TRG2
  3547. * @arg @ref LL_GPDMA1_TRIGGER_TAMP_TRG3 (*)
  3548. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM1_CH1
  3549. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM1_CH2
  3550. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM2_CH1
  3551. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM2_CH2
  3552. * @arg @ref LL_GPDMA1_TRIGGER_RTC_ALRA_TRG
  3553. * @arg @ref LL_GPDMA1_TRIGGER_RTC_ALRB_TRG
  3554. * @arg @ref LL_GPDMA1_TRIGGER_RTC_WUT_TRG
  3555. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH0_TCF
  3556. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH1_TCF
  3557. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH2_TCF
  3558. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH3_TCF
  3559. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH4_TCF
  3560. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH5_TCF
  3561. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH6_TCF
  3562. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH7_TCF
  3563. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA2_CH0_TCF
  3564. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA2_CH1_TCF
  3565. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA2_CH2_TCF
  3566. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA2_CH3_TCF
  3567. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA2_CH4_TCF
  3568. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA2_CH5_TCF
  3569. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA2_CH6_TCF
  3570. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA2_CH7_TCF
  3571. * @arg @ref LL_GPDMA1_TRIGGER_TIM2_TRGO
  3572. * @arg @ref LL_GPDMA1_TRIGGER_TIM15_TRGO
  3573. * @arg @ref LL_GPDMA1_TRIGGER_TIM12_TRGO
  3574. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM3_CH1
  3575. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM3_CH2
  3576. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM4_AIT
  3577. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM5_CH1
  3578. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM5_CH2
  3579. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM6_CH1
  3580. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM6_CH2
  3581. * @arg @ref LL_GPDMA1_TRIGGER_TIM15_TRGO (*)
  3582. * @arg @ref LL_GPDMA1_TRIGGER_TIM12_TRGO (*)
  3583. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM3_CH1 (*)
  3584. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM3_CH2 (*)
  3585. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM4_AIT (*)
  3586. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM5_CH1 (*)
  3587. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM5_CH2 (*)
  3588. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM6_CH1 (*)
  3589. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM6_CH2 (*)
  3590. * @arg @ref LL_GPDMA1_TRIGGER_COMP1_OUT (*)
  3591. * @arg @ref LL_GPDMA1_TRIGGER_EVENTOUT (*)
  3592. *
  3593. * @arg @ref LL_GPDMA2_TRIGGER_EXTI_LINE0
  3594. * @arg @ref LL_GPDMA2_TRIGGER_EXTI_LINE1
  3595. * @arg @ref LL_GPDMA2_TRIGGER_EXTI_LINE2
  3596. * @arg @ref LL_GPDMA2_TRIGGER_EXTI_LINE3
  3597. * @arg @ref LL_GPDMA2_TRIGGER_EXTI_LINE4
  3598. * @arg @ref LL_GPDMA2_TRIGGER_EXTI_LINE5
  3599. * @arg @ref LL_GPDMA2_TRIGGER_EXTI_LINE6
  3600. * @arg @ref LL_GPDMA2_TRIGGER_EXTI_LINE7
  3601. * @arg @ref LL_GPDMA2_TRIGGER_TAMP_TRG1
  3602. * @arg @ref LL_GPDMA2_TRIGGER_TAMP_TRG2
  3603. * @arg @ref LL_GPDMA2_TRIGGER_TAMP_TRG3 (*)
  3604. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM1_CH1
  3605. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM1_CH2
  3606. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM2_CH1
  3607. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM2_CH2
  3608. * @arg @ref LL_GPDMA2_TRIGGER_RTC_ALRA_TRG
  3609. * @arg @ref LL_GPDMA2_TRIGGER_RTC_ALRB_TRG
  3610. * @arg @ref LL_GPDMA2_TRIGGER_RTC_WUT_TRG
  3611. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA1_CH0_TCF
  3612. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA1_CH1_TCF
  3613. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA1_CH2_TCF
  3614. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA1_CH3_TCF
  3615. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA1_CH4_TCF
  3616. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA1_CH5_TCF
  3617. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA1_CH6_TCF
  3618. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA1_CH7_TCF
  3619. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA2_CH0_TCF
  3620. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA2_CH1_TCF
  3621. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA2_CH2_TCF
  3622. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA2_CH3_TCF
  3623. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA2_CH4_TCF
  3624. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA2_CH5_TCF
  3625. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA2_CH6_TCF
  3626. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA2_CH7_TCF
  3627. * @arg @ref LL_GPDMA2_TRIGGER_TIM2_TRGO
  3628. * @arg @ref LL_GPDMA2_TRIGGER_TIM15_TRGO
  3629. * @arg @ref LL_GPDMA2_TRIGGER_TIM12_TRGO
  3630. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM3_CH1
  3631. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM3_CH2
  3632. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM4_AIT
  3633. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM5_CH1
  3634. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM5_CH2
  3635. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM6_CH1
  3636. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM6_CH2
  3637. * @arg @ref LL_GPDMA2_TRIGGER_TIM15_TRGO (*)
  3638. * @arg @ref LL_GPDMA2_TRIGGER_TIM12_TRGO (*)
  3639. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM3_CH1 (*)
  3640. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM3_CH2 (*)
  3641. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM4_AIT (*)
  3642. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM5_CH1 (*)
  3643. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM5_CH2 (*)
  3644. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM6_CH1 (*)
  3645. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM6_CH2 (*)
  3646. * @arg @ref LL_GPDMA2_TRIGGER_COMP1_OUT (*)
  3647. * @arg @ref LL_GPDMA2_TRIGGER_EVENTOUT (*)
  3648. *
  3649. * @note (*) Availability depends on devices.
  3650. * @retval None.
  3651. */
  3652. __STATIC_INLINE void LL_DMA_SetHWTrigger(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Trigger)
  3653. {
  3654. uint32_t dma_base_addr = (uint32_t)DMAx;
  3655. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_TRIGSEL,
  3656. (Trigger << DMA_CTR2_TRIGSEL_Pos) & DMA_CTR2_TRIGSEL);
  3657. }
  3658. /**
  3659. * @brief Get hardware triggers.
  3660. * @note This API is used for all available DMA channels.
  3661. * @rmtoll CTR2 TRIGSEL LL_DMA_GetHWTrigger
  3662. * @param DMAx DMAx Instance
  3663. * @param Channel This parameter can be one of the following values:
  3664. * @arg @ref LL_DMA_CHANNEL_0
  3665. * @arg @ref LL_DMA_CHANNEL_1
  3666. * @arg @ref LL_DMA_CHANNEL_2
  3667. * @arg @ref LL_DMA_CHANNEL_3
  3668. * @arg @ref LL_DMA_CHANNEL_4
  3669. * @arg @ref LL_DMA_CHANNEL_5
  3670. * @arg @ref LL_DMA_CHANNEL_6
  3671. * @arg @ref LL_DMA_CHANNEL_7
  3672. * @retval Returned value can be one of the following values:
  3673. * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE0
  3674. * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE1
  3675. * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE2
  3676. * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE3
  3677. * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE4
  3678. * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE5
  3679. * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE6
  3680. * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE7
  3681. * @arg @ref LL_GPDMA1_TRIGGER_TAMP_TRG1
  3682. * @arg @ref LL_GPDMA1_TRIGGER_TAMP_TRG2
  3683. * @arg @ref LL_GPDMA1_TRIGGER_TAMP_TRG3 (*)
  3684. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM1_CH1
  3685. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM1_CH2
  3686. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM2_CH1
  3687. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM2_CH2
  3688. * @arg @ref LL_GPDMA1_TRIGGER_RTC_ALRA_TRG
  3689. * @arg @ref LL_GPDMA1_TRIGGER_RTC_ALRB_TRG
  3690. * @arg @ref LL_GPDMA1_TRIGGER_RTC_WUT_TRG
  3691. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH0_TCF
  3692. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH1_TCF
  3693. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH2_TCF
  3694. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH3_TCF
  3695. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH4_TCF
  3696. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH5_TCF
  3697. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH6_TCF
  3698. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH7_TCF
  3699. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA2_CH0_TCF
  3700. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA2_CH1_TCF
  3701. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA2_CH2_TCF
  3702. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA2_CH3_TCF
  3703. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA2_CH4_TCF
  3704. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA2_CH5_TCF
  3705. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA2_CH6_TCF
  3706. * @arg @ref LL_GPDMA1_TRIGGER_GPDMA2_CH7_TCF
  3707. * @arg @ref LL_GPDMA1_TRIGGER_TIM2_TRGO
  3708. * @arg @ref LL_GPDMA1_TRIGGER_TIM15_TRGO
  3709. * @arg @ref LL_GPDMA1_TRIGGER_TIM12_TRGO
  3710. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM3_CH1
  3711. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM3_CH2
  3712. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM4_AIT
  3713. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM5_CH1
  3714. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM5_CH2
  3715. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM6_CH1
  3716. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM6_CH2
  3717. * @arg @ref LL_GPDMA1_TRIGGER_TIM15_TRGO (*)
  3718. * @arg @ref LL_GPDMA1_TRIGGER_TIM12_TRGO (*)
  3719. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM3_CH1 (*)
  3720. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM3_CH2 (*)
  3721. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM4_AIT (*)
  3722. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM5_CH1 (*)
  3723. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM5_CH2 (*)
  3724. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM6_CH1 (*)
  3725. * @arg @ref LL_GPDMA1_TRIGGER_LPTIM6_CH2 (*)
  3726. * @arg @ref LL_GPDMA1_TRIGGER_COMP1_OUT (*)
  3727. * @arg @ref LL_GPDMA1_TRIGGER_EVENTOUT (*)
  3728. *
  3729. * @arg @ref LL_GPDMA2_TRIGGER_EXTI_LINE0
  3730. * @arg @ref LL_GPDMA2_TRIGGER_EXTI_LINE1
  3731. * @arg @ref LL_GPDMA2_TRIGGER_EXTI_LINE2
  3732. * @arg @ref LL_GPDMA2_TRIGGER_EXTI_LINE3
  3733. * @arg @ref LL_GPDMA2_TRIGGER_EXTI_LINE4
  3734. * @arg @ref LL_GPDMA2_TRIGGER_EXTI_LINE5
  3735. * @arg @ref LL_GPDMA2_TRIGGER_EXTI_LINE6
  3736. * @arg @ref LL_GPDMA2_TRIGGER_EXTI_LINE7
  3737. * @arg @ref LL_GPDMA2_TRIGGER_TAMP_TRG1
  3738. * @arg @ref LL_GPDMA2_TRIGGER_TAMP_TRG2
  3739. * @arg @ref LL_GPDMA2_TRIGGER_TAMP_TRG3 (*)
  3740. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM1_CH1
  3741. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM1_CH2
  3742. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM2_CH1
  3743. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM2_CH2
  3744. * @arg @ref LL_GPDMA2_TRIGGER_RTC_ALRA_TRG
  3745. * @arg @ref LL_GPDMA2_TRIGGER_RTC_ALRB_TRG
  3746. * @arg @ref LL_GPDMA2_TRIGGER_RTC_WUT_TRG
  3747. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA1_CH0_TCF
  3748. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA1_CH1_TCF
  3749. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA1_CH2_TCF
  3750. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA1_CH3_TCF
  3751. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA1_CH4_TCF
  3752. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA1_CH5_TCF
  3753. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA1_CH6_TCF
  3754. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA1_CH7_TCF
  3755. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA2_CH0_TCF
  3756. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA2_CH1_TCF
  3757. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA2_CH2_TCF
  3758. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA2_CH3_TCF
  3759. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA2_CH4_TCF
  3760. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA2_CH5_TCF
  3761. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA2_CH6_TCF
  3762. * @arg @ref LL_GPDMA2_TRIGGER_GPDMA2_CH7_TCF
  3763. * @arg @ref LL_GPDMA2_TRIGGER_TIM2_TRGO
  3764. * @arg @ref LL_GPDMA2_TRIGGER_TIM15_TRGO
  3765. * @arg @ref LL_GPDMA2_TRIGGER_TIM12_TRGO
  3766. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM3_CH1
  3767. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM3_CH2
  3768. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM4_AIT
  3769. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM5_CH1
  3770. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM5_CH2
  3771. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM6_CH1
  3772. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM6_CH2
  3773. * @arg @ref LL_GPDMA2_TRIGGER_TIM15_TRGO (*)
  3774. * @arg @ref LL_GPDMA2_TRIGGER_TIM12_TRGO (*)
  3775. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM3_CH1 (*)
  3776. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM3_CH2 (*)
  3777. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM4_AIT (*)
  3778. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM5_CH1 (*)
  3779. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM5_CH2 (*)
  3780. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM6_CH1 (*)
  3781. * @arg @ref LL_GPDMA2_TRIGGER_LPTIM6_CH2 (*)
  3782. * @arg @ref LL_GPDMA2_TRIGGER_COMP1_OUT (*)
  3783. * @arg @ref LL_GPDMA2_TRIGGER_EVENTOUT (*)
  3784. *
  3785. * @note (*) Availability depends on devices.
  3786. */
  3787. __STATIC_INLINE uint32_t LL_DMA_GetHWTrigger(const DMA_TypeDef *DMAx, uint32_t Channel)
  3788. {
  3789. uint32_t dma_base_addr = (uint32_t)DMAx;
  3790. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2,
  3791. DMA_CTR2_TRIGSEL) >> DMA_CTR2_TRIGSEL_Pos);
  3792. }
  3793. /**
  3794. * @brief Set DMA transfer mode.
  3795. * @note This API is used for all available DMA channels.
  3796. * @rmtoll CTR2 PFREQ LL_DMA_SetTransferMode
  3797. * @param DMAx DMAx Instance
  3798. * @param Channel This parameter can be one of the following values:
  3799. * @arg @ref LL_DMA_CHANNEL_0
  3800. * @arg @ref LL_DMA_CHANNEL_7
  3801. * @param Mode This parameter can be one of the following values:
  3802. * @arg @ref LL_DMA_NORMAL
  3803. * @arg @ref LL_DMA_PFCTRL
  3804. * @retval None.
  3805. */
  3806. __STATIC_INLINE void LL_DMA_SetTransferMode(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Mode)
  3807. {
  3808. uint32_t dma_base_addr = (uint32_t)DMAx;
  3809. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_PFREQ,
  3810. Mode & DMA_CTR2_PFREQ);
  3811. }
  3812. /**
  3813. * @brief Get DMA transfer mode.
  3814. * @note This API is used for all available DMA channels.
  3815. * @rmtoll CTR2 TRIGSEL LL_DMA_GetTransferMode
  3816. * @param DMAx DMAx Instance
  3817. * @param Channel This parameter can be one of the following values:
  3818. * @arg @ref LL_DMA_CHANNEL_0
  3819. * @arg @ref LL_DMA_CHANNEL_7
  3820. * @retval Returned value can be one of the following values:
  3821. * @arg @ref LL_DMA_NORMAL
  3822. * @arg @ref LL_DMA_PFCTRL
  3823. */
  3824. __STATIC_INLINE uint32_t LL_DMA_GetTransferMode(const DMA_TypeDef *DMAx, uint32_t Channel)
  3825. {
  3826. uint32_t dma_base_addr = (uint32_t)DMAx;
  3827. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2,
  3828. DMA_CTR2_PFREQ));
  3829. }
  3830. /**
  3831. * @brief Configure addresses update.
  3832. * @note This API is used only for 2D addressing channels.
  3833. * @rmtoll CBR1 BRDDEC LL_DMA_ConfigBlkRptAddrUpdate\n
  3834. * CBR1 BRSDEC LL_DMA_ConfigBlkRptAddrUpdate\n
  3835. * CBR1 DDEC LL_DMA_ConfigBlkRptAddrUpdate\n
  3836. * CBR1 SDEC LL_DMA_ConfigBlkRptAddrUpdate
  3837. * @param DMAx DMAx Instance
  3838. * @param Channel This parameter can be one of the following values:
  3839. * @arg @ref LL_DMA_CHANNEL_6
  3840. * @arg @ref LL_DMA_CHANNEL_7
  3841. * @param Configuration This parameter must be a combination of all the following values:
  3842. * @arg @ref LL_DMA_BLKRPT_DEST_ADDR_INCREMENT or @ref LL_DMA_BLKRPT_DEST_ADDR_DECREMENT
  3843. * @arg @ref LL_DMA_BLKRPT_SRC_ADDR_INCREMENT or @ref LL_DMA_BLKRPT_SRC_ADDR_DECREMENT
  3844. * @arg @ref LL_DMA_BURST_DEST_ADDR_INCREMENT or @ref LL_DMA_BURST_DEST_ADDR_DECREMENT
  3845. * @arg @ref LL_DMA_BURST_SRC_ADDR_INCREMENT or @ref LL_DMA_BURST_SRC_ADDR_DECREMENT
  3846. *@retval None.
  3847. */
  3848. __STATIC_INLINE void LL_DMA_ConfigBlkRptAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration)
  3849. {
  3850. uint32_t dma_base_addr = (uint32_t)DMAx;
  3851. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1,
  3852. DMA_CBR1_BRDDEC | DMA_CBR1_BRSDEC | DMA_CBR1_DDEC | DMA_CBR1_SDEC, Configuration);
  3853. }
  3854. /**
  3855. * @brief Configure DMA Block number of data and repeat Count.
  3856. * @note This API is used only for 2D addressing channels.
  3857. * @rmtoll CBR1 BNDT LL_DMA_ConfigBlkCounters\n
  3858. * CBR1 BRC LL_DMA_ConfigBlkCounters
  3859. * @param DMAx DMAx Instance
  3860. * @param Channel This parameter can be one of the following values:
  3861. * @arg @ref LL_DMA_CHANNEL_6
  3862. * @arg @ref LL_DMA_CHANNEL_7
  3863. * @param BlkDataLength Block transfer length
  3864. Value between 0 to 0x0000FFFF
  3865. * @param BlkRptCount Block repeat counter
  3866. * Value between 0 to 0x000007FF
  3867. *@retval None.
  3868. */
  3869. __STATIC_INLINE void LL_DMA_ConfigBlkCounters(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t BlkDataLength,
  3870. uint32_t BlkRptCount)
  3871. {
  3872. uint32_t dma_base_addr = (uint32_t)DMAx;
  3873. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1,
  3874. (DMA_CBR1_BNDT | DMA_CBR1_BRC), (BlkDataLength | (BlkRptCount << DMA_CBR1_BRC_Pos)));
  3875. }
  3876. /**
  3877. * @brief Set block repeat destination address update.
  3878. * @note This API is used only for 2D addressing channels.
  3879. * @rmtoll CBR1 BRDDEC LL_DMA_SetBlkRptDestAddrUpdate
  3880. * @param DMAx DMAx Instance
  3881. * @param Channel This parameter can be one of the following values:
  3882. * @arg @ref LL_DMA_CHANNEL_6
  3883. * @arg @ref LL_DMA_CHANNEL_7
  3884. * @param BlkRptDestAddrUpdate This parameter can be one of the following values:
  3885. * @arg @ref LL_DMA_BLKRPT_DEST_ADDR_INCREMENT
  3886. * @arg @ref LL_DMA_BLKRPT_DEST_ADDR_DECREMENT
  3887. * @retval None.
  3888. */
  3889. __STATIC_INLINE void LL_DMA_SetBlkRptDestAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel,
  3890. uint32_t BlkRptDestAddrUpdate)
  3891. {
  3892. uint32_t dma_base_addr = (uint32_t)DMAx;
  3893. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_BRDDEC,
  3894. BlkRptDestAddrUpdate);
  3895. }
  3896. /**
  3897. * @brief Get block repeat destination address update.
  3898. * @note This API is used only for 2D addressing channels.
  3899. * @rmtoll CBR1 BRDDEC LL_DMA_GetBlkRptDestAddrUpdate
  3900. * @param DMAx DMAx Instance
  3901. * @param Channel This parameter can be one of the following values:
  3902. * @arg @ref LL_DMA_CHANNEL_6
  3903. * @arg @ref LL_DMA_CHANNEL_7
  3904. * @retval Returned value can be one of the following values:
  3905. * @arg @ref LL_DMA_BLKRPT_DEST_ADDR_INCREMENT
  3906. * @arg @ref LL_DMA_BLKRPT_DEST_ADDR_DECREMENT
  3907. */
  3908. __STATIC_INLINE uint32_t LL_DMA_GetBlkRptDestAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
  3909. {
  3910. uint32_t dma_base_addr = (uint32_t)DMAx;
  3911. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_BRDDEC));
  3912. }
  3913. /**
  3914. * @brief Set block repeat source address update.
  3915. * @note This API is used only for 2D addressing channels.
  3916. * @rmtoll CBR1 BRSDEC LL_DMA_SetBlkRptSrcAddrUpdate
  3917. * @param DMAx DMAx Instance
  3918. * @param Channel This parameter can be one of the following values:
  3919. * @arg @ref LL_DMA_CHANNEL_6
  3920. * @arg @ref LL_DMA_CHANNEL_7
  3921. * @param BlkRptSrcAddrUpdate This parameter can be one of the following values:
  3922. * @arg @ref LL_DMA_BLKRPT_SRC_ADDR_INCREMENT
  3923. * @arg @ref LL_DMA_BLKRPT_SRC_ADDR_DECREMENT
  3924. * @retval None.
  3925. */
  3926. __STATIC_INLINE void LL_DMA_SetBlkRptSrcAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel,
  3927. uint32_t BlkRptSrcAddrUpdate)
  3928. {
  3929. uint32_t dma_base_addr = (uint32_t)DMAx;
  3930. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_BRSDEC,
  3931. BlkRptSrcAddrUpdate);
  3932. }
  3933. /**
  3934. * @brief Get block repeat source address update.
  3935. * @note This API is used only for 2D addressing channels.
  3936. * @rmtoll CBR1 BRSDEC LL_DMA_GetBlkRptSrcAddrUpdate
  3937. * @param DMAx DMAx Instance
  3938. * @param Channel This parameter can be one of the following values:
  3939. * @arg @ref LL_DMA_CHANNEL_6
  3940. * @arg @ref LL_DMA_CHANNEL_7
  3941. * @retval Returned value can be one of the following values:
  3942. * @arg @ref LL_DMA_BLKRPT_SRC_ADDR_INCREMENT
  3943. * @arg @ref LL_DMA_BLKRPT_SRC_ADDR_DECREMENT
  3944. */
  3945. __STATIC_INLINE uint32_t LL_DMA_GetBlkRptSrcAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
  3946. {
  3947. uint32_t dma_base_addr = (uint32_t)DMAx;
  3948. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_BRSDEC));
  3949. }
  3950. /**
  3951. * @brief Set destination address update.
  3952. * @note This API is used only for 2D addressing channels.
  3953. * @rmtoll CBR1 DDEC LL_DMA_SetDestAddrUpdate
  3954. * @param DMAx DMAx Instance
  3955. * @param Channel This parameter can be one of the following values:
  3956. * @arg @ref LL_DMA_CHANNEL_6
  3957. * @arg @ref LL_DMA_CHANNEL_7
  3958. * @param DestAddrUpdate This parameter can be one of the following values:
  3959. * @arg @ref LL_DMA_BURST_DEST_ADDR_INCREMENT
  3960. * @arg @ref LL_DMA_BURST_DEST_ADDR_DECREMENT
  3961. * @retval None.
  3962. */
  3963. __STATIC_INLINE void LL_DMA_SetDestAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestAddrUpdate)
  3964. {
  3965. uint32_t dma_base_addr = (uint32_t)DMAx;
  3966. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_DDEC,
  3967. DestAddrUpdate);
  3968. }
  3969. /**
  3970. * @brief Get destination address update.
  3971. * @note This API is used only for 2D addressing channels.
  3972. * @rmtoll CBR1 DDEC LL_DMA_GetDestAddrUpdate
  3973. * @param DMAx DMAx Instance
  3974. * @param Channel This parameter can be one of the following values:
  3975. * @arg @ref LL_DMA_CHANNEL_6
  3976. * @arg @ref LL_DMA_CHANNEL_7
  3977. * @retval Returned value can be one of the following values:
  3978. * @arg @ref LL_DMA_BURST_DEST_ADDR_INCREMENT
  3979. * @arg @ref LL_DMA_BURST_DEST_ADDR_DECREMENT
  3980. */
  3981. __STATIC_INLINE uint32_t LL_DMA_GetDestAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
  3982. {
  3983. uint32_t dma_base_addr = (uint32_t)DMAx;
  3984. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_DDEC));
  3985. }
  3986. /**
  3987. * @brief Set source address update.
  3988. * @note This API is used only for 2D addressing channels.
  3989. * @rmtoll CBR1 SDEC LL_DMA_SetSrcAddrUpdate
  3990. * @param DMAx DMAx Instance
  3991. * @param Channel This parameter can be one of the following values:
  3992. * @arg @ref LL_DMA_CHANNEL_6
  3993. * @arg @ref LL_DMA_CHANNEL_7
  3994. * @param SrcAddrUpdate This parameter can be one of the following values:
  3995. * @arg @ref LL_DMA_BURST_SRC_ADDR_INCREMENT
  3996. * @arg @ref LL_DMA_BURST_SRC_ADDR_DECREMENT
  3997. * @retval None.
  3998. */
  3999. __STATIC_INLINE void LL_DMA_SetSrcAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddrUpdate)
  4000. {
  4001. uint32_t dma_base_addr = (uint32_t)DMAx;
  4002. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_SDEC,
  4003. SrcAddrUpdate);
  4004. }
  4005. /**
  4006. * @brief Get source address update.
  4007. * @note This API is used only for 2D addressing channels.
  4008. * @rmtoll CBR1 SDEC LL_DMA_GetSrcAddrUpdate
  4009. * @param DMAx DMAx Instance
  4010. * @param Channel This parameter can be one of the following values:
  4011. * @arg @ref LL_DMA_CHANNEL_6
  4012. * @arg @ref LL_DMA_CHANNEL_7
  4013. * @retval Returned value can be one of the following values:
  4014. * @arg @ref LL_DMA_BURST_SRC_ADDR_INCREMENT
  4015. * @arg @ref LL_DMA_BURST_SRC_ADDR_DECREMENT
  4016. */
  4017. __STATIC_INLINE uint32_t LL_DMA_GetSrcAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
  4018. {
  4019. uint32_t dma_base_addr = (uint32_t)DMAx;
  4020. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_SDEC));
  4021. }
  4022. /**
  4023. * @brief Set block repeat count.
  4024. * @note This API is used only for 2D addressing channels.
  4025. * @rmtoll CBR1 BRC LL_DMA_SetBlkRptCount
  4026. * @param DMAx DMAx Instance
  4027. * @param Channel This parameter can be one of the following values:
  4028. * @arg @ref LL_DMA_CHANNEL_6
  4029. * @arg @ref LL_DMA_CHANNEL_7
  4030. * @param BlkRptCount Block repeat counter
  4031. * Value between 0 to 0x000007FF
  4032. * @retval None.
  4033. */
  4034. __STATIC_INLINE void LL_DMA_SetBlkRptCount(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t BlkRptCount)
  4035. {
  4036. uint32_t dma_base_addr = (uint32_t)DMAx;
  4037. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_BRC,
  4038. (BlkRptCount << DMA_CBR1_BRC_Pos) & DMA_CBR1_BRC);
  4039. }
  4040. /**
  4041. * @brief Get block repeat count.
  4042. * @note This API is used only for 2D addressing channels.
  4043. * @rmtoll CBR1 BRC LL_DMA_GetBlkRptCount
  4044. * @param DMAx DMAx Instance
  4045. * @param Channel This parameter can be one of the following values:
  4046. * @arg @ref LL_DMA_CHANNEL_6
  4047. * @arg @ref LL_DMA_CHANNEL_7
  4048. * @retval Between 0 to 0x000007FF
  4049. */
  4050. __STATIC_INLINE uint32_t LL_DMA_GetBlkRptCount(const DMA_TypeDef *DMAx, uint32_t Channel)
  4051. {
  4052. uint32_t dma_base_addr = (uint32_t)DMAx;
  4053. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1,
  4054. DMA_CBR1_BRC) >> DMA_CBR1_BRC_Pos);
  4055. }
  4056. /**
  4057. * @brief Set block data length in bytes to transfer.
  4058. * @note This API is used for all available DMA channels.
  4059. * @rmtoll CBR1 BNDT LL_DMA_SetBlkDataLength
  4060. * @param DMAx DMAx Instance
  4061. * @param Channel This parameter can be one of the following values:
  4062. * @arg @ref LL_DMA_CHANNEL_0
  4063. * @arg @ref LL_DMA_CHANNEL_1
  4064. * @arg @ref LL_DMA_CHANNEL_2
  4065. * @arg @ref LL_DMA_CHANNEL_3
  4066. * @arg @ref LL_DMA_CHANNEL_4
  4067. * @arg @ref LL_DMA_CHANNEL_5
  4068. * @arg @ref LL_DMA_CHANNEL_6
  4069. * @arg @ref LL_DMA_CHANNEL_7
  4070. * @param BlkDataLength Between 0 to 0x0000FFFF
  4071. * @retval None.
  4072. */
  4073. __STATIC_INLINE void LL_DMA_SetBlkDataLength(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t BlkDataLength)
  4074. {
  4075. uint32_t dma_base_addr = (uint32_t)DMAx;
  4076. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_BNDT,
  4077. BlkDataLength);
  4078. }
  4079. /**
  4080. * @brief Get block data length in bytes to transfer.
  4081. * @note This API is used for all available DMA channels.
  4082. * @rmtoll CBR1 BNDT LL_DMA_GetBlkDataLength
  4083. * @param DMAx DMAx Instance
  4084. * @param Channel This parameter can be one of the following values:
  4085. * @arg @ref LL_DMA_CHANNEL_0
  4086. * @arg @ref LL_DMA_CHANNEL_1
  4087. * @arg @ref LL_DMA_CHANNEL_2
  4088. * @arg @ref LL_DMA_CHANNEL_3
  4089. * @arg @ref LL_DMA_CHANNEL_4
  4090. * @arg @ref LL_DMA_CHANNEL_5
  4091. * @arg @ref LL_DMA_CHANNEL_6
  4092. * @arg @ref LL_DMA_CHANNEL_7
  4093. * @retval Between 0 to 0x0000FFFF
  4094. */
  4095. __STATIC_INLINE uint32_t LL_DMA_GetBlkDataLength(const DMA_TypeDef *DMAx, uint32_t Channel)
  4096. {
  4097. uint32_t dma_base_addr = (uint32_t)DMAx;
  4098. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_BNDT));
  4099. }
  4100. /**
  4101. * @brief Configure the source and destination addresses.
  4102. * @note This API is used for all available DMA channels.
  4103. * @note This API must not be called when the DMA Channel is enabled.
  4104. * @rmtoll CSAR SA LL_DMA_ConfigAddresses\n
  4105. * CDAR DA LL_DMA_ConfigAddresses
  4106. * @param DMAx DMAx Instance
  4107. * @param Channel This parameter can be one of the following values:
  4108. * @arg @ref LL_DMA_CHANNEL_0
  4109. * @arg @ref LL_DMA_CHANNEL_1
  4110. * @arg @ref LL_DMA_CHANNEL_2
  4111. * @arg @ref LL_DMA_CHANNEL_3
  4112. * @arg @ref LL_DMA_CHANNEL_4
  4113. * @arg @ref LL_DMA_CHANNEL_5
  4114. * @arg @ref LL_DMA_CHANNEL_6
  4115. * @arg @ref LL_DMA_CHANNEL_7
  4116. * @param SrcAddress Between 0 to 0xFFFFFFFF
  4117. * @param DestAddress Between 0 to 0xFFFFFFFF
  4118. * @retval None.
  4119. */
  4120. __STATIC_INLINE void LL_DMA_ConfigAddresses(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddress, uint32_t
  4121. DestAddress)
  4122. {
  4123. uint32_t dma_base_addr = (uint32_t)DMAx;
  4124. WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSAR, SrcAddress);
  4125. WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CDAR, DestAddress);
  4126. }
  4127. /**
  4128. * @brief Set source address.
  4129. * @note This API is used for all available DMA channels.
  4130. * @rmtoll CSAR SA LL_DMA_SetSrcAddress
  4131. * @param DMAx DMAx Instance
  4132. * @param Channel This parameter can be one of the following values:
  4133. * @arg @ref LL_DMA_CHANNEL_0
  4134. * @arg @ref LL_DMA_CHANNEL_1
  4135. * @arg @ref LL_DMA_CHANNEL_2
  4136. * @arg @ref LL_DMA_CHANNEL_3
  4137. * @arg @ref LL_DMA_CHANNEL_4
  4138. * @arg @ref LL_DMA_CHANNEL_5
  4139. * @arg @ref LL_DMA_CHANNEL_6
  4140. * @arg @ref LL_DMA_CHANNEL_7
  4141. * @param SrcAddress Between 0 to 0xFFFFFFFF
  4142. * @retval None.
  4143. */
  4144. __STATIC_INLINE void LL_DMA_SetSrcAddress(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddress)
  4145. {
  4146. uint32_t dma_base_addr = (uint32_t)DMAx;
  4147. WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSAR, SrcAddress);
  4148. }
  4149. /**
  4150. * @brief Get source address.
  4151. * @note This API is used for all available DMA channels.
  4152. * @rmtoll CSAR SA LL_DMA_GetSrcAddress
  4153. * @param DMAx DMAx Instance
  4154. * @param Channel This parameter can be one of the following values:
  4155. * @arg @ref LL_DMA_CHANNEL_0
  4156. * @arg @ref LL_DMA_CHANNEL_1
  4157. * @arg @ref LL_DMA_CHANNEL_2
  4158. * @arg @ref LL_DMA_CHANNEL_3
  4159. * @arg @ref LL_DMA_CHANNEL_4
  4160. * @arg @ref LL_DMA_CHANNEL_5
  4161. * @arg @ref LL_DMA_CHANNEL_6
  4162. * @arg @ref LL_DMA_CHANNEL_7
  4163. * @retval Between 0 to 0xFFFFFFFF
  4164. */
  4165. __STATIC_INLINE uint32_t LL_DMA_GetSrcAddress(const DMA_TypeDef *DMAx, uint32_t Channel)
  4166. {
  4167. uint32_t dma_base_addr = (uint32_t)DMAx;
  4168. return (READ_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSAR));
  4169. }
  4170. /**
  4171. * @brief Set destination address.
  4172. * @note This API is used for all available DMA channels.
  4173. * @rmtoll CDAR DA LL_DMA_SetDestAddress
  4174. * @param DMAx DMAx Instance
  4175. * @param Channel This parameter can be one of the following values:
  4176. * @arg @ref LL_DMA_CHANNEL_0
  4177. * @arg @ref LL_DMA_CHANNEL_1
  4178. * @arg @ref LL_DMA_CHANNEL_2
  4179. * @arg @ref LL_DMA_CHANNEL_3
  4180. * @arg @ref LL_DMA_CHANNEL_4
  4181. * @arg @ref LL_DMA_CHANNEL_5
  4182. * @arg @ref LL_DMA_CHANNEL_6
  4183. * @arg @ref LL_DMA_CHANNEL_7
  4184. * @param DestAddress Between 0 to 0xFFFFFFFF
  4185. * @retval None.
  4186. */
  4187. __STATIC_INLINE void LL_DMA_SetDestAddress(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestAddress)
  4188. {
  4189. uint32_t dma_base_addr = (uint32_t)DMAx;
  4190. WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CDAR, DestAddress);
  4191. }
  4192. /**
  4193. * @brief Get destination address.
  4194. * @note This API is used for all available DMA channels.
  4195. * @rmtoll CDAR DA LL_DMA_GetDestAddress
  4196. * @param DMAx DMAx Instance
  4197. * @param Channel This parameter can be one of the following values:
  4198. * @arg @ref LL_DMA_CHANNEL_0
  4199. * @arg @ref LL_DMA_CHANNEL_1
  4200. * @arg @ref LL_DMA_CHANNEL_2
  4201. * @arg @ref LL_DMA_CHANNEL_3
  4202. * @arg @ref LL_DMA_CHANNEL_4
  4203. * @arg @ref LL_DMA_CHANNEL_5
  4204. * @arg @ref LL_DMA_CHANNEL_6
  4205. * @arg @ref LL_DMA_CHANNEL_7
  4206. * @retval Between 0 to 0xFFFFFFFF
  4207. */
  4208. __STATIC_INLINE uint32_t LL_DMA_GetDestAddress(const DMA_TypeDef *DMAx, uint32_t Channel)
  4209. {
  4210. uint32_t dma_base_addr = (uint32_t)DMAx;
  4211. return (READ_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CDAR));
  4212. }
  4213. /**
  4214. * @brief Configure source and destination addresses offset.
  4215. * @note This API is used only for 2D addressing channels.
  4216. * @note This API must not be called when the DMA Channel is enabled.
  4217. * @rmtoll CTR3 DAO LL_DMA_ConfigAddrUpdateValue\n
  4218. * CTR3 SAO LL_DMA_ConfigAddrUpdateValue
  4219. * @param DMAx DMAx Instance
  4220. * @param Channel This parameter can be one of the following values:
  4221. * @arg @ref LL_DMA_CHANNEL_6
  4222. * @arg @ref LL_DMA_CHANNEL_7
  4223. * @param DestAddrOffset Between 0 to 0x00001FFF
  4224. * @param SrcAddrOffset Between 0 to 0x00001FFF
  4225. * @retval None.
  4226. */
  4227. __STATIC_INLINE void LL_DMA_ConfigAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddrOffset,
  4228. uint32_t DestAddrOffset)
  4229. {
  4230. uint32_t dma_base_addr = (uint32_t)DMAx;
  4231. WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR3,
  4232. (SrcAddrOffset & DMA_CTR3_SAO) | ((DestAddrOffset << DMA_CTR3_DAO_Pos) & DMA_CTR3_DAO));
  4233. }
  4234. /**
  4235. * @brief Set destination address offset.
  4236. * @note This API is used only for 2D addressing channels.
  4237. * @rmtoll CTR3 DAO LL_DMA_SetDestAddrUpdateValue
  4238. * @param DMAx DMAx Instance
  4239. * @param Channel This parameter can be one of the following values:
  4240. * @arg @ref LL_DMA_CHANNEL_6
  4241. * @arg @ref LL_DMA_CHANNEL_7
  4242. * @param DestAddrOffset Between 0 to 0x00001FFF
  4243. * @retval None.
  4244. */
  4245. __STATIC_INLINE void LL_DMA_SetDestAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestAddrOffset)
  4246. {
  4247. uint32_t dma_base_addr = (uint32_t)DMAx;
  4248. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR3, DMA_CTR3_DAO,
  4249. ((DestAddrOffset << DMA_CTR3_DAO_Pos) & DMA_CTR3_DAO));
  4250. }
  4251. /**
  4252. * @brief Get destination address offset.
  4253. * @note This API is used only for 2D addressing channels.
  4254. * @rmtoll CDAR DAO LL_DMA_GetDestAddrUpdateValue
  4255. * @param DMAx DMAx Instance
  4256. * @param Channel This parameter can be one of the following values:
  4257. * @arg @ref LL_DMA_CHANNEL_6
  4258. * @arg @ref LL_DMA_CHANNEL_7
  4259. * @retval Between 0 to 0x00001FFF
  4260. */
  4261. __STATIC_INLINE uint32_t LL_DMA_GetDestAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel)
  4262. {
  4263. uint32_t dma_base_addr = (uint32_t)DMAx;
  4264. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR3,
  4265. DMA_CTR3_DAO) >> DMA_CTR3_DAO_Pos);
  4266. }
  4267. /**
  4268. * @brief Set source address offset.
  4269. * @note This API is used only for 2D addressing channels.
  4270. * @rmtoll CTR3 SAO LL_DMA_SetSrcAddrUpdateValue
  4271. * @param DMAx DMAx Instance
  4272. * @param Channel This parameter can be one of the following values:
  4273. * @arg @ref LL_DMA_CHANNEL_6
  4274. * @arg @ref LL_DMA_CHANNEL_7
  4275. * @param SrcAddrOffset Between 0 to 0x00001FFF
  4276. * @retval None.
  4277. */
  4278. __STATIC_INLINE void LL_DMA_SetSrcAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddrOffset)
  4279. {
  4280. uint32_t dma_base_addr = (uint32_t)DMAx;
  4281. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR3, DMA_CTR3_SAO,
  4282. SrcAddrOffset & DMA_CTR3_SAO);
  4283. }
  4284. /**
  4285. * @brief Get source address offset.
  4286. * @note This API is used only for 2D addressing channels.
  4287. * @rmtoll CTR3 SAO LL_DMA_GetSrcAddrUpdateValue
  4288. * @param DMAx DMAx Instance
  4289. * @param Channel This parameter can be one of the following values:
  4290. * @arg @ref LL_DMA_CHANNEL_6
  4291. * @arg @ref LL_DMA_CHANNEL_7
  4292. * @retval Between 0 to 0x00001FFF
  4293. */
  4294. __STATIC_INLINE uint32_t LL_DMA_GetSrcAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel)
  4295. {
  4296. uint32_t dma_base_addr = (uint32_t)DMAx;
  4297. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR3, DMA_CTR3_SAO));
  4298. }
  4299. /**
  4300. * @brief Configure the block repeated source and destination addresses offset.
  4301. * @note This API is used only for 2D addressing channels.
  4302. * @note This API must not be called when the DMA Channel is enabled.
  4303. * @rmtoll CBR2 BRDAO LL_DMA_ConfigBlkRptAddrUpdateValue\n
  4304. * CBR2 BRSAO LL_DMA_ConfigBlkRptAddrUpdateValue
  4305. * @param DMAx DMAx Instance
  4306. * @param Channel This parameter can be one of the following values:
  4307. * @arg @ref LL_DMA_CHANNEL_6
  4308. * @arg @ref LL_DMA_CHANNEL_7
  4309. * @param BlkRptDestAddrOffset Between 0 to 0x0000FFFF
  4310. * @param BlkRptSrcAddrOffset Between 0 to 0x0000FFFF
  4311. * @retval None.
  4312. */
  4313. __STATIC_INLINE void LL_DMA_ConfigBlkRptAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel,
  4314. uint32_t BlkRptSrcAddrOffset, uint32_t BlkRptDestAddrOffset)
  4315. {
  4316. uint32_t dma_base_addr = (uint32_t)DMAx;
  4317. WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR2,
  4318. ((BlkRptDestAddrOffset << DMA_CBR2_BRDAO_Pos) & DMA_CBR2_BRDAO) | (BlkRptSrcAddrOffset & DMA_CBR2_BRSAO));
  4319. }
  4320. /**
  4321. * @brief Set block repeated destination address offset.
  4322. * @note This API is used only for 2D addressing channels.
  4323. * @rmtoll CBR2 BRDAO LL_DMA_SetBlkRptDestAddrUpdateValue
  4324. * @param DMAx DMAx Instance
  4325. * @param Channel This parameter can be one of the following values:
  4326. * @arg @ref LL_DMA_CHANNEL_6
  4327. * @arg @ref LL_DMA_CHANNEL_7
  4328. * @param BlkRptDestAddrOffset Between 0 to 0x0000FFFF
  4329. * @retval None.
  4330. */
  4331. __STATIC_INLINE void LL_DMA_SetBlkRptDestAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel,
  4332. uint32_t BlkRptDestAddrOffset)
  4333. {
  4334. uint32_t dma_base_addr = (uint32_t)DMAx;
  4335. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR2, DMA_CBR2_BRDAO,
  4336. ((BlkRptDestAddrOffset << DMA_CBR2_BRDAO_Pos) & DMA_CBR2_BRDAO));
  4337. }
  4338. /**
  4339. * @brief Get block repeated destination address offset.
  4340. * @note This API is used only for 2D addressing channels.
  4341. * @rmtoll CBR2 BRDAO LL_DMA_GetBlkRptDestAddrUpdateValue
  4342. * @param DMAx DMAx Instance
  4343. * @param Channel This parameter can be one of the following values:
  4344. * @arg @ref LL_DMA_CHANNEL_6
  4345. * @arg @ref LL_DMA_CHANNEL_7
  4346. * @retval Between 0 to 0x0000FFFF.
  4347. */
  4348. __STATIC_INLINE uint32_t LL_DMA_GetBlkRptDestAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel)
  4349. {
  4350. uint32_t dma_base_addr = (uint32_t)DMAx;
  4351. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR2,
  4352. DMA_CBR2_BRDAO) >> DMA_CBR2_BRDAO_Pos);
  4353. }
  4354. /**
  4355. * @brief Set block repeated source address offset.
  4356. * @note This API is used only for 2D addressing channels.
  4357. * @rmtoll CBR2 BRSAO LL_DMA_SetBlkRptSrcAddrUpdateValue
  4358. * @param DMAx DMAx Instance
  4359. * @param Channel This parameter can be one of the following values:
  4360. * @arg @ref LL_DMA_CHANNEL_6
  4361. * @arg @ref LL_DMA_CHANNEL_7
  4362. * @param BlkRptSrcAddrOffset Between 0 to 0x0000FFFF
  4363. * @retval None.
  4364. */
  4365. __STATIC_INLINE void LL_DMA_SetBlkRptSrcAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel,
  4366. uint32_t BlkRptSrcAddrOffset)
  4367. {
  4368. uint32_t dma_base_addr = (uint32_t)DMAx;
  4369. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR2, DMA_CBR2_BRSAO,
  4370. BlkRptSrcAddrOffset);
  4371. }
  4372. /**
  4373. * @brief Get block repeated source address offset.
  4374. * @note This API is used only for 2D addressing channels.
  4375. * @rmtoll CBR2 BRSAO LL_DMA_GetBlkRptSrcAddrUpdateValue
  4376. * @param DMAx DMAx Instance
  4377. * @param Channel This parameter can be one of the following values:
  4378. * @arg @ref LL_DMA_CHANNEL_6
  4379. * @arg @ref LL_DMA_CHANNEL_7
  4380. * @retval Between 0 to 0x0000FFFF
  4381. */
  4382. __STATIC_INLINE uint32_t LL_DMA_GetBlkRptSrcAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel)
  4383. {
  4384. uint32_t dma_base_addr = (uint32_t)DMAx;
  4385. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR2, DMA_CBR2_BRSAO));
  4386. }
  4387. /**
  4388. * @brief Configure registers update and node address offset during the link transfer.
  4389. * @note This API is used for all available DMA channels.
  4390. * For linear addressing channels, UT3 and UB2 fields are discarded.
  4391. * @rmtoll CLLR UT1 LL_DMA_ConfigLinkUpdate\n
  4392. * @rmtoll CLLR UT2 LL_DMA_ConfigLinkUpdate\n
  4393. * @rmtoll CLLR UB1 LL_DMA_ConfigLinkUpdate\n
  4394. * @rmtoll CLLR USA LL_DMA_ConfigLinkUpdate\n
  4395. * @rmtoll CLLR UDA LL_DMA_ConfigLinkUpdate\n
  4396. * @rmtoll CLLR UT3 LL_DMA_ConfigLinkUpdate\n
  4397. * @rmtoll CLLR UB2 LL_DMA_ConfigLinkUpdate\n
  4398. * @rmtoll CLLR ULL LL_DMA_ConfigLinkUpdate
  4399. * @param DMAx DMAx Instance
  4400. * @param Channel This parameter can be one of the following values:
  4401. * @arg @ref LL_DMA_CHANNEL_0
  4402. * @arg @ref LL_DMA_CHANNEL_1
  4403. * @arg @ref LL_DMA_CHANNEL_2
  4404. * @arg @ref LL_DMA_CHANNEL_3
  4405. * @arg @ref LL_DMA_CHANNEL_4
  4406. * @arg @ref LL_DMA_CHANNEL_5
  4407. * @arg @ref LL_DMA_CHANNEL_6
  4408. * @arg @ref LL_DMA_CHANNEL_7
  4409. * @param RegistersUpdate This parameter must be a combination of all the following values:
  4410. * @arg @ref LL_DMA_UPDATE_CTR1
  4411. * @arg @ref LL_DMA_UPDATE_CTR2
  4412. * @arg @ref LL_DMA_UPDATE_CBR1
  4413. * @arg @ref LL_DMA_UPDATE_CSAR
  4414. * @arg @ref LL_DMA_UPDATE_CDAR
  4415. * @arg @ref LL_DMA_UPDATE_CTR3 (This value is allowed only for 2D addressing channels)
  4416. * @arg @ref LL_DMA_UPDATE_CBR2 (This value is allowed only for 2D addressing channels)
  4417. * @arg @ref LL_DMA_UPDATE_CLLR
  4418. * @param LinkedListAddrOffset Between 0 to 0x0000FFFC by increment of 4 Bytes.
  4419. * @retval None.
  4420. */
  4421. __STATIC_INLINE void LL_DMA_ConfigLinkUpdate(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t RegistersUpdate,
  4422. uint32_t LinkedListAddrOffset)
  4423. {
  4424. uint32_t dma_base_addr = (uint32_t)DMAx;
  4425. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR,
  4426. (DMA_CLLR_UT1 | DMA_CLLR_UT2 | DMA_CLLR_UB1 | DMA_CLLR_USA | DMA_CLLR_UDA | DMA_CLLR_UT3 | \
  4427. DMA_CLLR_UB2 | DMA_CLLR_ULL | DMA_CLLR_LA), (RegistersUpdate | (LinkedListAddrOffset & DMA_CLLR_LA)));
  4428. }
  4429. /**
  4430. * @brief Enable CTR1 update during the link transfer.
  4431. * @note This API is used for all available DMA channels.
  4432. * @rmtoll CLLR UT1 LL_DMA_EnableCTR1Update
  4433. * @param DMAx DMAx Instance
  4434. * @param Channel This parameter can be one of the following values:
  4435. * @arg @ref LL_DMA_CHANNEL_0
  4436. * @arg @ref LL_DMA_CHANNEL_1
  4437. * @arg @ref LL_DMA_CHANNEL_2
  4438. * @arg @ref LL_DMA_CHANNEL_3
  4439. * @arg @ref LL_DMA_CHANNEL_4
  4440. * @arg @ref LL_DMA_CHANNEL_5
  4441. * @arg @ref LL_DMA_CHANNEL_6
  4442. * @arg @ref LL_DMA_CHANNEL_7
  4443. * @retval None.
  4444. */
  4445. __STATIC_INLINE void LL_DMA_EnableCTR1Update(const DMA_TypeDef *DMAx, uint32_t Channel)
  4446. {
  4447. uint32_t dma_base_addr = (uint32_t)DMAx;
  4448. SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT1);
  4449. }
  4450. /**
  4451. * @brief Disable CTR1 update during the link transfer.
  4452. * @note This API is used for all available DMA channels.
  4453. * @rmtoll CLLR UT1 LL_DMA_DisableCTR1Update
  4454. * @param DMAx DMAx Instance
  4455. * @param Channel This parameter can be one of the following values:
  4456. * @arg @ref LL_DMA_CHANNEL_0
  4457. * @arg @ref LL_DMA_CHANNEL_1
  4458. * @arg @ref LL_DMA_CHANNEL_2
  4459. * @arg @ref LL_DMA_CHANNEL_3
  4460. * @arg @ref LL_DMA_CHANNEL_4
  4461. * @arg @ref LL_DMA_CHANNEL_5
  4462. * @arg @ref LL_DMA_CHANNEL_6
  4463. * @arg @ref LL_DMA_CHANNEL_7
  4464. * @retval None.
  4465. */
  4466. __STATIC_INLINE void LL_DMA_DisableCTR1Update(const DMA_TypeDef *DMAx, uint32_t Channel)
  4467. {
  4468. uint32_t dma_base_addr = (uint32_t)DMAx;
  4469. CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT1);
  4470. }
  4471. /**
  4472. * @brief Check if CTR1 update during the link transfer is enabled.
  4473. * @note This API is used for all available DMA channels.
  4474. * @rmtoll CLLR UT1 LL_DMA_IsEnabledCTR1Update
  4475. * @param DMAx DMAx Instance
  4476. * @param Channel This parameter can be one of the following values:
  4477. * @arg @ref LL_DMA_CHANNEL_0
  4478. * @arg @ref LL_DMA_CHANNEL_1
  4479. * @arg @ref LL_DMA_CHANNEL_2
  4480. * @arg @ref LL_DMA_CHANNEL_3
  4481. * @arg @ref LL_DMA_CHANNEL_4
  4482. * @arg @ref LL_DMA_CHANNEL_5
  4483. * @arg @ref LL_DMA_CHANNEL_6
  4484. * @arg @ref LL_DMA_CHANNEL_7
  4485. * @retval State of bit (1 or 0).
  4486. */
  4487. __STATIC_INLINE uint32_t LL_DMA_IsEnabledCTR1Update(const DMA_TypeDef *DMAx, uint32_t Channel)
  4488. {
  4489. uint32_t dma_base_addr = (uint32_t)DMAx;
  4490. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT1)
  4491. == (DMA_CLLR_UT1)) ? 1UL : 0UL);
  4492. }
  4493. /**
  4494. * @brief Enable CTR2 update during the link transfer.
  4495. * @note This API is used for all available DMA channels.
  4496. * @rmtoll CLLR UT2 LL_DMA_EnableCTR2Update
  4497. * @param DMAx DMAx Instance
  4498. * @param Channel This parameter can be one of the following values:
  4499. * @arg @ref LL_DMA_CHANNEL_0
  4500. * @arg @ref LL_DMA_CHANNEL_1
  4501. * @arg @ref LL_DMA_CHANNEL_2
  4502. * @arg @ref LL_DMA_CHANNEL_3
  4503. * @arg @ref LL_DMA_CHANNEL_4
  4504. * @arg @ref LL_DMA_CHANNEL_5
  4505. * @arg @ref LL_DMA_CHANNEL_6
  4506. * @arg @ref LL_DMA_CHANNEL_7
  4507. * @retval None.
  4508. */
  4509. __STATIC_INLINE void LL_DMA_EnableCTR2Update(const DMA_TypeDef *DMAx, uint32_t Channel)
  4510. {
  4511. uint32_t dma_base_addr = (uint32_t)DMAx;
  4512. SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT2);
  4513. }
  4514. /**
  4515. * @brief Disable CTR2 update during the link transfer.
  4516. * @note This API is used for all available DMA channels.
  4517. * @rmtoll CLLR UT2 LL_DMA_DisableCTR2Update
  4518. * @param DMAx DMAx Instance
  4519. * @param Channel This parameter can be one of the following values:
  4520. * @arg @ref LL_DMA_CHANNEL_0
  4521. * @arg @ref LL_DMA_CHANNEL_1
  4522. * @arg @ref LL_DMA_CHANNEL_2
  4523. * @arg @ref LL_DMA_CHANNEL_3
  4524. * @arg @ref LL_DMA_CHANNEL_4
  4525. * @arg @ref LL_DMA_CHANNEL_5
  4526. * @arg @ref LL_DMA_CHANNEL_6
  4527. * @arg @ref LL_DMA_CHANNEL_7
  4528. * @retval None.
  4529. */
  4530. __STATIC_INLINE void LL_DMA_DisableCTR2Update(const DMA_TypeDef *DMAx, uint32_t Channel)
  4531. {
  4532. uint32_t dma_base_addr = (uint32_t)DMAx;
  4533. CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT2);
  4534. }
  4535. /**
  4536. * @brief Check if CTR2 update during the link transfer is enabled.
  4537. * @note This API is used for all available DMA channels.
  4538. * @rmtoll CLLR UT2 LL_DMA_IsEnabledCTR2Update
  4539. * @param DMAx DMAx Instance
  4540. * @param Channel This parameter can be one of the following values:
  4541. * @arg @ref LL_DMA_CHANNEL_0
  4542. * @arg @ref LL_DMA_CHANNEL_1
  4543. * @arg @ref LL_DMA_CHANNEL_2
  4544. * @arg @ref LL_DMA_CHANNEL_3
  4545. * @arg @ref LL_DMA_CHANNEL_4
  4546. * @arg @ref LL_DMA_CHANNEL_5
  4547. * @arg @ref LL_DMA_CHANNEL_6
  4548. * @arg @ref LL_DMA_CHANNEL_7
  4549. * @retval State of bit (1 or 0).
  4550. */
  4551. __STATIC_INLINE uint32_t LL_DMA_IsEnabledCTR2Update(const DMA_TypeDef *DMAx, uint32_t Channel)
  4552. {
  4553. uint32_t dma_base_addr = (uint32_t)DMAx;
  4554. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT2)
  4555. == (DMA_CLLR_UT2)) ? 1UL : 0UL);
  4556. }
  4557. /**
  4558. * @brief Enable CBR1 update during the link transfer.
  4559. * @note This API is used for all available DMA channels.
  4560. * @rmtoll CLLR UB1 LL_DMA_EnableCBR1Update
  4561. * @param DMAx DMAx Instance
  4562. * @param Channel This parameter can be one of the following values:
  4563. * @arg @ref LL_DMA_CHANNEL_0
  4564. * @arg @ref LL_DMA_CHANNEL_1
  4565. * @arg @ref LL_DMA_CHANNEL_2
  4566. * @arg @ref LL_DMA_CHANNEL_3
  4567. * @arg @ref LL_DMA_CHANNEL_4
  4568. * @arg @ref LL_DMA_CHANNEL_5
  4569. * @arg @ref LL_DMA_CHANNEL_6
  4570. * @arg @ref LL_DMA_CHANNEL_7
  4571. * @retval None.
  4572. */
  4573. __STATIC_INLINE void LL_DMA_EnableCBR1Update(const DMA_TypeDef *DMAx, uint32_t Channel)
  4574. {
  4575. uint32_t dma_base_addr = (uint32_t)DMAx;
  4576. SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UB1);
  4577. }
  4578. /**
  4579. * @brief Disable CBR1 update during the link transfer.
  4580. * @note This API is used for all available DMA channels.
  4581. * @rmtoll CLLR UB1 LL_DMA_DisableCBR1Update
  4582. * @param DMAx DMAx Instance
  4583. * @param Channel This parameter can be one of the following values:
  4584. * @arg @ref LL_DMA_CHANNEL_0
  4585. * @arg @ref LL_DMA_CHANNEL_1
  4586. * @arg @ref LL_DMA_CHANNEL_2
  4587. * @arg @ref LL_DMA_CHANNEL_3
  4588. * @arg @ref LL_DMA_CHANNEL_4
  4589. * @arg @ref LL_DMA_CHANNEL_5
  4590. * @arg @ref LL_DMA_CHANNEL_6
  4591. * @arg @ref LL_DMA_CHANNEL_7
  4592. * @retval None.
  4593. */
  4594. __STATIC_INLINE void LL_DMA_DisableCBR1Update(const DMA_TypeDef *DMAx, uint32_t Channel)
  4595. {
  4596. uint32_t dma_base_addr = (uint32_t)DMAx;
  4597. CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UB1);
  4598. }
  4599. /**
  4600. * @brief Check if CBR1 update during the link transfer is enabled.
  4601. * @note This API is used for all available DMA channels.
  4602. * @rmtoll CLLR UB1 LL_DMA_IsEnabledCBR1Update
  4603. * @param DMAx DMAx Instance
  4604. * @param Channel This parameter can be one of the following values:
  4605. * @arg @ref LL_DMA_CHANNEL_0
  4606. * @arg @ref LL_DMA_CHANNEL_1
  4607. * @arg @ref LL_DMA_CHANNEL_2
  4608. * @arg @ref LL_DMA_CHANNEL_3
  4609. * @arg @ref LL_DMA_CHANNEL_4
  4610. * @arg @ref LL_DMA_CHANNEL_5
  4611. * @arg @ref LL_DMA_CHANNEL_6
  4612. * @arg @ref LL_DMA_CHANNEL_7
  4613. * @retval State of bit (1 or 0).
  4614. */
  4615. __STATIC_INLINE uint32_t LL_DMA_IsEnabledCBR1Update(const DMA_TypeDef *DMAx, uint32_t Channel)
  4616. {
  4617. uint32_t dma_base_addr = (uint32_t)DMAx;
  4618. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UB1)
  4619. == (DMA_CLLR_UB1)) ? 1UL : 0UL);
  4620. }
  4621. /**
  4622. * @brief Enable CSAR update during the link transfer.
  4623. * @note This API is used for all available DMA channels.
  4624. * @rmtoll CLLR USA LL_DMA_EnableCSARUpdate
  4625. * @param DMAx DMAx Instance
  4626. * @param Channel This parameter can be one of the following values:
  4627. * @arg @ref LL_DMA_CHANNEL_0
  4628. * @arg @ref LL_DMA_CHANNEL_1
  4629. * @arg @ref LL_DMA_CHANNEL_2
  4630. * @arg @ref LL_DMA_CHANNEL_3
  4631. * @arg @ref LL_DMA_CHANNEL_4
  4632. * @arg @ref LL_DMA_CHANNEL_5
  4633. * @arg @ref LL_DMA_CHANNEL_6
  4634. * @arg @ref LL_DMA_CHANNEL_7
  4635. * @retval None.
  4636. */
  4637. __STATIC_INLINE void LL_DMA_EnableCSARUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
  4638. {
  4639. uint32_t dma_base_addr = (uint32_t)DMAx;
  4640. SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_USA);
  4641. }
  4642. /**
  4643. * @brief Disable CSAR update during the link transfer.
  4644. * @note This API is used for all available DMA channels.
  4645. * @rmtoll CLLR USA LL_DMA_DisableCSARUpdate
  4646. * @param DMAx DMAx Instance
  4647. * @param Channel This parameter can be one of the following values:
  4648. * @arg @ref LL_DMA_CHANNEL_0
  4649. * @arg @ref LL_DMA_CHANNEL_1
  4650. * @arg @ref LL_DMA_CHANNEL_2
  4651. * @arg @ref LL_DMA_CHANNEL_3
  4652. * @arg @ref LL_DMA_CHANNEL_4
  4653. * @arg @ref LL_DMA_CHANNEL_5
  4654. * @arg @ref LL_DMA_CHANNEL_6
  4655. * @arg @ref LL_DMA_CHANNEL_7
  4656. * @retval None.
  4657. */
  4658. __STATIC_INLINE void LL_DMA_DisableCSARUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
  4659. {
  4660. uint32_t dma_base_addr = (uint32_t)DMAx;
  4661. CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_USA);
  4662. }
  4663. /**
  4664. * @brief Check if CSAR update during the link transfer is enabled.
  4665. * @note This API is used for all available DMA channels.
  4666. * @rmtoll CLLR USA LL_DMA_IsEnabledCSARUpdate
  4667. * @param DMAx DMAx Instance
  4668. * @param Channel This parameter can be one of the following values:
  4669. * @arg @ref LL_DMA_CHANNEL_0
  4670. * @arg @ref LL_DMA_CHANNEL_1
  4671. * @arg @ref LL_DMA_CHANNEL_2
  4672. * @arg @ref LL_DMA_CHANNEL_3
  4673. * @arg @ref LL_DMA_CHANNEL_4
  4674. * @arg @ref LL_DMA_CHANNEL_5
  4675. * @arg @ref LL_DMA_CHANNEL_6
  4676. * @arg @ref LL_DMA_CHANNEL_7
  4677. * @retval State of bit (1 or 0).
  4678. */
  4679. __STATIC_INLINE uint32_t LL_DMA_IsEnabledCSARUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
  4680. {
  4681. uint32_t dma_base_addr = (uint32_t)DMAx;
  4682. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_USA)
  4683. == (DMA_CLLR_USA)) ? 1UL : 0UL);
  4684. }
  4685. /**
  4686. * @brief Enable CDAR update during the link transfer.
  4687. * @note This API is used for all available DMA channels.
  4688. * @rmtoll CLLR UDA LL_DMA_EnableCDARUpdate
  4689. * @param DMAx DMAx Instance
  4690. * @param Channel This parameter can be one of the following values:
  4691. * @arg @ref LL_DMA_CHANNEL_0
  4692. * @arg @ref LL_DMA_CHANNEL_1
  4693. * @arg @ref LL_DMA_CHANNEL_2
  4694. * @arg @ref LL_DMA_CHANNEL_3
  4695. * @arg @ref LL_DMA_CHANNEL_4
  4696. * @arg @ref LL_DMA_CHANNEL_5
  4697. * @arg @ref LL_DMA_CHANNEL_6
  4698. * @arg @ref LL_DMA_CHANNEL_7
  4699. * @retval None.
  4700. */
  4701. __STATIC_INLINE void LL_DMA_EnableCDARUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
  4702. {
  4703. uint32_t dma_base_addr = (uint32_t)DMAx;
  4704. SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UDA);
  4705. }
  4706. /**
  4707. * @brief Disable CDAR update during the link transfer.
  4708. * @note This API is used for all available DMA channels.
  4709. * @rmtoll CLLR UDA LL_DMA_DisableCDARUpdate
  4710. * @param DMAx DMAx Instance
  4711. * @param Channel This parameter can be one of the following values:
  4712. * @arg @ref LL_DMA_CHANNEL_0
  4713. * @arg @ref LL_DMA_CHANNEL_1
  4714. * @arg @ref LL_DMA_CHANNEL_2
  4715. * @arg @ref LL_DMA_CHANNEL_3
  4716. * @arg @ref LL_DMA_CHANNEL_4
  4717. * @arg @ref LL_DMA_CHANNEL_5
  4718. * @arg @ref LL_DMA_CHANNEL_6
  4719. * @arg @ref LL_DMA_CHANNEL_7
  4720. * @retval None.
  4721. */
  4722. __STATIC_INLINE void LL_DMA_DisableCDARUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
  4723. {
  4724. uint32_t dma_base_addr = (uint32_t)DMAx;
  4725. CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UDA);
  4726. }
  4727. /**
  4728. * @brief Check if CDAR update during the link transfer is enabled.
  4729. * @note This API is used for all available DMA channels.
  4730. * @rmtoll CLLR UDA LL_DMA_IsEnabledCDARUpdate
  4731. * @param DMAx DMAx Instance
  4732. * @param Channel This parameter can be one of the following values:
  4733. * @arg @ref LL_DMA_CHANNEL_0
  4734. * @arg @ref LL_DMA_CHANNEL_1
  4735. * @arg @ref LL_DMA_CHANNEL_2
  4736. * @arg @ref LL_DMA_CHANNEL_3
  4737. * @arg @ref LL_DMA_CHANNEL_4
  4738. * @arg @ref LL_DMA_CHANNEL_5
  4739. * @arg @ref LL_DMA_CHANNEL_6
  4740. * @arg @ref LL_DMA_CHANNEL_7
  4741. * @retval State of bit (1 or 0).
  4742. */
  4743. __STATIC_INLINE uint32_t LL_DMA_IsEnabledCDARUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
  4744. {
  4745. uint32_t dma_base_addr = (uint32_t)DMAx;
  4746. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UDA)
  4747. == (DMA_CLLR_UDA)) ? 1UL : 0UL);
  4748. }
  4749. /**
  4750. * @brief Enable CTR3 update during the link transfer.
  4751. * @note This API is used only for 2D addressing channels.
  4752. * @rmtoll CLLR UT3 LL_DMA_EnableCTR3Update
  4753. * @param DMAx DMAx Instance
  4754. * @param Channel This parameter can be one of the following values:
  4755. * @arg @ref LL_DMA_CHANNEL_6
  4756. * @arg @ref LL_DMA_CHANNEL_7
  4757. * @retval None.
  4758. */
  4759. __STATIC_INLINE void LL_DMA_EnableCTR3Update(const DMA_TypeDef *DMAx, uint32_t Channel)
  4760. {
  4761. uint32_t dma_base_addr = (uint32_t)DMAx;
  4762. SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT3);
  4763. }
  4764. /**
  4765. * @brief Disable CTR3 update during the link transfer.
  4766. * @note This API is used only for 2D addressing channels.
  4767. * @rmtoll CLLR UT3 LL_DMA_DisableCTR3Update
  4768. * @param DMAx DMAx Instance
  4769. * @param Channel This parameter can be one of the following values:
  4770. * @arg @ref LL_DMA_CHANNEL_6
  4771. * @arg @ref LL_DMA_CHANNEL_7
  4772. * @retval None.
  4773. */
  4774. __STATIC_INLINE void LL_DMA_DisableCTR3Update(const DMA_TypeDef *DMAx, uint32_t Channel)
  4775. {
  4776. uint32_t dma_base_addr = (uint32_t)DMAx;
  4777. CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT3);
  4778. }
  4779. /**
  4780. * @brief Check if CTR3 update during the link transfer is enabled.
  4781. * @note This API is used only for 2D addressing channels.
  4782. * @rmtoll CLLR UT3 LL_DMA_IsEnabledCTR3Update
  4783. * @param DMAx DMAx Instance
  4784. * @param Channel This parameter can be one of the following values:
  4785. * @arg @ref LL_DMA_CHANNEL_6
  4786. * @arg @ref LL_DMA_CHANNEL_7
  4787. * @retval State of bit (1 or 0).
  4788. */
  4789. __STATIC_INLINE uint32_t LL_DMA_IsEnabledCTR3Update(const DMA_TypeDef *DMAx, uint32_t Channel)
  4790. {
  4791. uint32_t dma_base_addr = (uint32_t)DMAx;
  4792. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT3)
  4793. == (DMA_CLLR_UT3)) ? 1UL : 0UL);
  4794. }
  4795. /**
  4796. * @brief Enable CBR2 update during the link transfer.
  4797. * @note This API is used only for 2D addressing channels.
  4798. * @rmtoll CLLR UB2 LL_DMA_EnableCBR2Update
  4799. * @param DMAx DMAx Instance
  4800. * @param Channel This parameter can be one of the following values:
  4801. * @arg @ref LL_DMA_CHANNEL_6
  4802. * @arg @ref LL_DMA_CHANNEL_7
  4803. * @retval None.
  4804. */
  4805. __STATIC_INLINE void LL_DMA_EnableCBR2Update(const DMA_TypeDef *DMAx, uint32_t Channel)
  4806. {
  4807. uint32_t dma_base_addr = (uint32_t)DMAx;
  4808. SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UB2);
  4809. }
  4810. /**
  4811. * @brief Disable CBR2 update during the link transfer.
  4812. * @note This API is used only for 2D addressing channels.
  4813. * @rmtoll CLLR UB2 LL_DMA_DisableCBR2Update
  4814. * @param DMAx DMAx Instance
  4815. * @param Channel This parameter can be one of the following values:
  4816. * @arg @ref LL_DMA_CHANNEL_6
  4817. * @arg @ref LL_DMA_CHANNEL_7
  4818. * @retval None.
  4819. */
  4820. __STATIC_INLINE void LL_DMA_DisableCBR2Update(const DMA_TypeDef *DMAx, uint32_t Channel)
  4821. {
  4822. uint32_t dma_base_addr = (uint32_t)DMAx;
  4823. CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UB2);
  4824. }
  4825. /**
  4826. * @brief Check if CBR2 update during the link transfer is enabled.
  4827. * @note This API is used only for 2D addressing channels.
  4828. * @rmtoll CLLR UB2 LL_DMA_IsEnabledCBR2Update
  4829. * @param DMAx DMAx Instance
  4830. * @param Channel This parameter can be one of the following values:
  4831. * @arg @ref LL_DMA_CHANNEL_6
  4832. * @arg @ref LL_DMA_CHANNEL_7
  4833. * @retval State of bit (1 or 0).
  4834. */
  4835. __STATIC_INLINE uint32_t LL_DMA_IsEnabledCBR2Update(const DMA_TypeDef *DMAx, uint32_t Channel)
  4836. {
  4837. uint32_t dma_base_addr = (uint32_t)DMAx;
  4838. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UB2)
  4839. == (DMA_CLLR_UB2)) ? 1UL : 0UL);
  4840. }
  4841. /**
  4842. * @brief Enable CLLR update during the link transfer.
  4843. * @note This API is used for all available DMA channels.
  4844. * @rmtoll CLLR ULL LL_DMA_EnableCLLRUpdate
  4845. * @param DMAx DMAx Instance
  4846. * @param Channel This parameter can be one of the following values:
  4847. * @arg @ref LL_DMA_CHANNEL_0
  4848. * @arg @ref LL_DMA_CHANNEL_1
  4849. * @arg @ref LL_DMA_CHANNEL_2
  4850. * @arg @ref LL_DMA_CHANNEL_3
  4851. * @arg @ref LL_DMA_CHANNEL_4
  4852. * @arg @ref LL_DMA_CHANNEL_5
  4853. * @arg @ref LL_DMA_CHANNEL_6
  4854. * @arg @ref LL_DMA_CHANNEL_7
  4855. * @retval None.
  4856. */
  4857. __STATIC_INLINE void LL_DMA_EnableCLLRUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
  4858. {
  4859. uint32_t dma_base_addr = (uint32_t)DMAx;
  4860. SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_ULL);
  4861. }
  4862. /**
  4863. * @brief Disable CLLR update during the link transfer.
  4864. * @note This API is used for all available DMA channels.
  4865. * @rmtoll CLLR ULL LL_DMA_DisableCLLRUpdate
  4866. * @param DMAx DMAx Instance
  4867. * @param Channel This parameter can be one of the following values:
  4868. * @arg @ref LL_DMA_CHANNEL_0
  4869. * @arg @ref LL_DMA_CHANNEL_1
  4870. * @arg @ref LL_DMA_CHANNEL_2
  4871. * @arg @ref LL_DMA_CHANNEL_3
  4872. * @arg @ref LL_DMA_CHANNEL_4
  4873. * @arg @ref LL_DMA_CHANNEL_5
  4874. * @arg @ref LL_DMA_CHANNEL_6
  4875. * @arg @ref LL_DMA_CHANNEL_7
  4876. * @retval None.
  4877. */
  4878. __STATIC_INLINE void LL_DMA_DisableCLLRUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
  4879. {
  4880. uint32_t dma_base_addr = (uint32_t)DMAx;
  4881. CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_ULL);
  4882. }
  4883. /**
  4884. * @brief Check if CLLR update during the link transfer is enabled.
  4885. * @note This API is used for all available DMA channels.
  4886. * @rmtoll CLLR ULL LL_DMA_IsEnabledCLLRUpdate
  4887. * @param DMAx DMAx Instance
  4888. * @param Channel This parameter can be one of the following values:
  4889. * @arg @ref LL_DMA_CHANNEL_0
  4890. * @arg @ref LL_DMA_CHANNEL_1
  4891. * @arg @ref LL_DMA_CHANNEL_2
  4892. * @arg @ref LL_DMA_CHANNEL_3
  4893. * @arg @ref LL_DMA_CHANNEL_4
  4894. * @arg @ref LL_DMA_CHANNEL_5
  4895. * @arg @ref LL_DMA_CHANNEL_6
  4896. * @arg @ref LL_DMA_CHANNEL_7
  4897. * @retval State of bit (1 or 0).
  4898. */
  4899. __STATIC_INLINE uint32_t LL_DMA_IsEnabledCLLRUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
  4900. {
  4901. uint32_t dma_base_addr = (uint32_t)DMAx;
  4902. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_ULL)
  4903. == (DMA_CLLR_ULL)) ? 1UL : 0UL);
  4904. }
  4905. /**
  4906. * @brief Set linked list address offset.
  4907. * @note This API is used for all available DMA channels.
  4908. * @rmtoll CLLR LA LL_DMA_SetLinkedListAddrOffset
  4909. * @param DMAx DMAx Instance
  4910. * @param Channel This parameter can be one of the following values:
  4911. * @arg @ref LL_DMA_CHANNEL_0
  4912. * @arg @ref LL_DMA_CHANNEL_1
  4913. * @arg @ref LL_DMA_CHANNEL_2
  4914. * @arg @ref LL_DMA_CHANNEL_3
  4915. * @arg @ref LL_DMA_CHANNEL_4
  4916. * @arg @ref LL_DMA_CHANNEL_5
  4917. * @arg @ref LL_DMA_CHANNEL_6
  4918. * @arg @ref LL_DMA_CHANNEL_7
  4919. * @param LinkedListAddrOffset Between 0 to 0x0000FFFC by increment of 4 Bytes.
  4920. * @retval None.
  4921. */
  4922. __STATIC_INLINE void LL_DMA_SetLinkedListAddrOffset(const DMA_TypeDef *DMAx, uint32_t Channel,
  4923. uint32_t LinkedListAddrOffset)
  4924. {
  4925. uint32_t dma_base_addr = (uint32_t)DMAx;
  4926. MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_LA,
  4927. (LinkedListAddrOffset & DMA_CLLR_LA));
  4928. }
  4929. /**
  4930. * @brief Get linked list address offset.
  4931. * @note This API is used for all available DMA channels.
  4932. * @rmtoll CLLR LA LL_DMA_GetLinkedListAddrOffset
  4933. * @param DMAx DMAx Instance
  4934. * @param Channel This parameter can be one of the following values:
  4935. * @arg @ref LL_DMA_CHANNEL_0
  4936. * @arg @ref LL_DMA_CHANNEL_1
  4937. * @arg @ref LL_DMA_CHANNEL_2
  4938. * @arg @ref LL_DMA_CHANNEL_3
  4939. * @arg @ref LL_DMA_CHANNEL_4
  4940. * @arg @ref LL_DMA_CHANNEL_5
  4941. * @arg @ref LL_DMA_CHANNEL_6
  4942. * @arg @ref LL_DMA_CHANNEL_7
  4943. * @retval Between 0 to 0x0000FFFC.
  4944. */
  4945. __STATIC_INLINE uint32_t LL_DMA_GetLinkedListAddrOffset(const DMA_TypeDef *DMAx, uint32_t Channel)
  4946. {
  4947. uint32_t dma_base_addr = (uint32_t)DMAx;
  4948. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR,
  4949. DMA_CLLR_LA) >> DMA_CLLR_LA_Pos);
  4950. }
  4951. /**
  4952. * @brief Get FIFO level.
  4953. * @rmtoll CSR FIFOL LL_DMA_GetFIFOLevel
  4954. * @param DMAx DMAx Instance
  4955. * @param Channel This parameter can be one of the following values:
  4956. * @arg @ref LL_DMA_CHANNEL_0
  4957. * @arg @ref LL_DMA_CHANNEL_1
  4958. * @arg @ref LL_DMA_CHANNEL_2
  4959. * @arg @ref LL_DMA_CHANNEL_3
  4960. * @arg @ref LL_DMA_CHANNEL_4
  4961. * @arg @ref LL_DMA_CHANNEL_5
  4962. * @arg @ref LL_DMA_CHANNEL_6
  4963. * @arg @ref LL_DMA_CHANNEL_7
  4964. * @retval Between 0 to 0x000000FF.
  4965. */
  4966. __STATIC_INLINE uint32_t LL_DMA_GetFIFOLevel(const DMA_TypeDef *DMAx, uint32_t Channel)
  4967. {
  4968. uint32_t dma_base_addr = (uint32_t)DMAx;
  4969. return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR,
  4970. DMA_CSR_FIFOL) >> DMA_CSR_FIFOL_Pos);
  4971. }
  4972. #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
  4973. /**
  4974. * @brief Enable the DMA channel secure attribute.
  4975. * @note This API is used for all available DMA channels.
  4976. * @rmtoll SECCFGR SECx LL_DMA_EnableChannelSecure
  4977. * @param DMAx DMAx Instance
  4978. * @param Channel This parameter can be one of the following values:
  4979. * @arg @ref LL_DMA_CHANNEL_0
  4980. * @arg @ref LL_DMA_CHANNEL_1
  4981. * @arg @ref LL_DMA_CHANNEL_2
  4982. * @arg @ref LL_DMA_CHANNEL_3
  4983. * @arg @ref LL_DMA_CHANNEL_4
  4984. * @arg @ref LL_DMA_CHANNEL_5
  4985. * @arg @ref LL_DMA_CHANNEL_6
  4986. * @arg @ref LL_DMA_CHANNEL_7
  4987. * @retval None.
  4988. */
  4989. __STATIC_INLINE void LL_DMA_EnableChannelSecure(DMA_TypeDef *DMAx, uint32_t Channel)
  4990. {
  4991. SET_BIT(DMAx->SECCFGR, (DMA_SECCFGR_SEC0 << (Channel & 0x0000000FU)));
  4992. }
  4993. /**
  4994. * @brief Disable the DMA channel secure attribute.
  4995. * @note This API is used for all available DMA channels.
  4996. * @rmtoll SECCFGR SECx LL_DMA_DisableChannelSecure
  4997. * @param DMAx DMAx Instance
  4998. * @param Channel This parameter can be one of the following values:
  4999. * @arg @ref LL_DMA_CHANNEL_0
  5000. * @arg @ref LL_DMA_CHANNEL_1
  5001. * @arg @ref LL_DMA_CHANNEL_2
  5002. * @arg @ref LL_DMA_CHANNEL_3
  5003. * @arg @ref LL_DMA_CHANNEL_4
  5004. * @arg @ref LL_DMA_CHANNEL_5
  5005. * @arg @ref LL_DMA_CHANNEL_6
  5006. * @arg @ref LL_DMA_CHANNEL_7
  5007. * @retval None.
  5008. */
  5009. __STATIC_INLINE void LL_DMA_DisableChannelSecure(DMA_TypeDef *DMAx, uint32_t Channel)
  5010. {
  5011. CLEAR_BIT(DMAx->SECCFGR, (DMA_SECCFGR_SEC0 << (Channel & 0x0000000FU)));
  5012. }
  5013. #endif /* (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
  5014. #if defined (DMA_SECCFGR_SEC0)
  5015. /**
  5016. * @brief Check if DMA channel secure is enabled.
  5017. * @note This API is used for all available DMA channels.
  5018. * @rmtoll SECCFGR SECx LL_DMA_IsEnabledChannelSecure
  5019. * @param DMAx DMAx Instance
  5020. * @param Channel This parameter can be one of the following values:
  5021. * @arg @ref LL_DMA_CHANNEL_0
  5022. * @arg @ref LL_DMA_CHANNEL_1
  5023. * @arg @ref LL_DMA_CHANNEL_2
  5024. * @arg @ref LL_DMA_CHANNEL_3
  5025. * @arg @ref LL_DMA_CHANNEL_4
  5026. * @arg @ref LL_DMA_CHANNEL_5
  5027. * @arg @ref LL_DMA_CHANNEL_6
  5028. * @arg @ref LL_DMA_CHANNEL_7
  5029. * @retval State of bit (1 or 0).
  5030. */
  5031. __STATIC_INLINE uint32_t LL_DMA_IsEnabledChannelSecure(const DMA_TypeDef *DMAx, uint32_t Channel)
  5032. {
  5033. return ((READ_BIT(DMAx->SECCFGR, (DMA_SECCFGR_SEC0 << (Channel & 0x0000000FU)))
  5034. == (DMA_SECCFGR_SEC0 << (Channel & 0x0000000FU))) ? 1UL : 0UL);
  5035. }
  5036. #endif /* DMA_SECCFGR_SEC0 */
  5037. /**
  5038. * @brief Enable the DMA channel privilege attribute.
  5039. * @note This API is used for all available DMA channels.
  5040. * @rmtoll PRIVCFGR PRIVx LL_DMA_EnableChannelPrivilege
  5041. * @param DMAx DMAx Instance
  5042. * @param Channel This parameter can be one of the following values:
  5043. * @arg @ref LL_DMA_CHANNEL_0
  5044. * @arg @ref LL_DMA_CHANNEL_1
  5045. * @arg @ref LL_DMA_CHANNEL_2
  5046. * @arg @ref LL_DMA_CHANNEL_3
  5047. * @arg @ref LL_DMA_CHANNEL_4
  5048. * @arg @ref LL_DMA_CHANNEL_5
  5049. * @arg @ref LL_DMA_CHANNEL_6
  5050. * @arg @ref LL_DMA_CHANNEL_7
  5051. * @retval None.
  5052. */
  5053. __STATIC_INLINE void LL_DMA_EnableChannelPrivilege(DMA_TypeDef *DMAx, uint32_t Channel)
  5054. {
  5055. SET_BIT(DMAx->PRIVCFGR, (DMA_PRIVCFGR_PRIV0 << (Channel & 0x0000000FU)));
  5056. }
  5057. /**
  5058. * @brief Disable the DMA channel privilege attribute.
  5059. * @note This API is used for all available DMA channels.
  5060. * @rmtoll PRIVCFGR PRIVx LL_DMA_DisableChannelPrivilege
  5061. * @param DMAx DMAx Instance
  5062. * @param Channel This parameter can be one of the following values:
  5063. * @arg @ref LL_DMA_CHANNEL_0
  5064. * @arg @ref LL_DMA_CHANNEL_1
  5065. * @arg @ref LL_DMA_CHANNEL_2
  5066. * @arg @ref LL_DMA_CHANNEL_3
  5067. * @arg @ref LL_DMA_CHANNEL_4
  5068. * @arg @ref LL_DMA_CHANNEL_5
  5069. * @arg @ref LL_DMA_CHANNEL_6
  5070. * @arg @ref LL_DMA_CHANNEL_7
  5071. * @retval None.
  5072. */
  5073. __STATIC_INLINE void LL_DMA_DisableChannelPrivilege(DMA_TypeDef *DMAx, uint32_t Channel)
  5074. {
  5075. CLEAR_BIT(DMAx->PRIVCFGR, (DMA_PRIVCFGR_PRIV0 << (Channel & 0x0000000FU)));
  5076. }
  5077. /**
  5078. * @brief Check if DMA Channel privilege is enabled.
  5079. * @note This API is used for all available DMA channels.
  5080. * @rmtoll PRIVCFGR PRIVx LL_DMA_IsEnabledChannelPrivilege
  5081. * @param DMAx DMAx Instance
  5082. * @param Channel This parameter can be one of the following values:
  5083. * @arg @ref LL_DMA_CHANNEL_0
  5084. * @arg @ref LL_DMA_CHANNEL_1
  5085. * @arg @ref LL_DMA_CHANNEL_2
  5086. * @arg @ref LL_DMA_CHANNEL_3
  5087. * @arg @ref LL_DMA_CHANNEL_4
  5088. * @arg @ref LL_DMA_CHANNEL_5
  5089. * @arg @ref LL_DMA_CHANNEL_6
  5090. * @arg @ref LL_DMA_CHANNEL_7
  5091. * @retval State of bit (1 or 0).
  5092. */
  5093. __STATIC_INLINE uint32_t LL_DMA_IsEnabledChannelPrivilege(const DMA_TypeDef *DMAx, uint32_t Channel)
  5094. {
  5095. return ((READ_BIT(DMAx->PRIVCFGR, (DMA_PRIVCFGR_PRIV0 << (Channel & 0x0000000FU)))
  5096. == (DMA_PRIVCFGR_PRIV0 << (Channel & 0x0000000FU))) ? 1UL : 0UL);
  5097. }
  5098. #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
  5099. /**
  5100. * @brief Enable the DMA channel lock attributes.
  5101. * @note This API is used for all available DMA channels.
  5102. * @rmtoll RCFGLOCKR LOCKx LL_DMA_EnableChannelLockAttribute
  5103. * @param DMAx DMAx Instance
  5104. * @param Channel This parameter can be one of the following values:
  5105. * @arg @ref LL_DMA_CHANNEL_0
  5106. * @arg @ref LL_DMA_CHANNEL_1
  5107. * @arg @ref LL_DMA_CHANNEL_2
  5108. * @arg @ref LL_DMA_CHANNEL_3
  5109. * @arg @ref LL_DMA_CHANNEL_4
  5110. * @arg @ref LL_DMA_CHANNEL_5
  5111. * @arg @ref LL_DMA_CHANNEL_6
  5112. * @arg @ref LL_DMA_CHANNEL_7
  5113. * @retval None.
  5114. */
  5115. __STATIC_INLINE void LL_DMA_EnableChannelLockAttribute(DMA_TypeDef *DMAx, uint32_t Channel)
  5116. {
  5117. SET_BIT(DMAx->RCFGLOCKR, (DMA_RCFGLOCKR_LOCK0 << (Channel & 0x0000000FU)));
  5118. }
  5119. #endif /* (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
  5120. #if defined (DMA_RCFGLOCKR_LOCK0)
  5121. /**
  5122. * @brief Check if DMA channel attributes are locked.
  5123. * @note This API is used for all available DMA channels.
  5124. * @rmtoll SECCFGR LOCKx LL_DMA_IsEnabledChannelLockAttribute
  5125. * @param DMAx DMAx Instance
  5126. * @param Channel This parameter can be one of the following values:
  5127. * @arg @ref LL_DMA_CHANNEL_0
  5128. * @arg @ref LL_DMA_CHANNEL_1
  5129. * @arg @ref LL_DMA_CHANNEL_2
  5130. * @arg @ref LL_DMA_CHANNEL_3
  5131. * @arg @ref LL_DMA_CHANNEL_4
  5132. * @arg @ref LL_DMA_CHANNEL_5
  5133. * @arg @ref LL_DMA_CHANNEL_6
  5134. * @arg @ref LL_DMA_CHANNEL_7
  5135. * @retval State of bit (1 or 0).
  5136. */
  5137. __STATIC_INLINE uint32_t LL_DMA_IsEnabledChannelLockAttribute(const DMA_TypeDef *DMAx, uint32_t Channel)
  5138. {
  5139. return ((READ_BIT(DMAx->RCFGLOCKR, (DMA_RCFGLOCKR_LOCK0 << (Channel & 0x0000000FU)))
  5140. == (DMA_RCFGLOCKR_LOCK0 << (Channel & 0x0000000FU))) ? 1UL : 0UL);
  5141. }
  5142. #endif /* DMA_RCFGLOCKR_LOCK0 */
  5143. /**
  5144. * @}
  5145. */
  5146. /** @defgroup DMA_LL_EF_FLAG_Management Flag Management
  5147. * @{
  5148. */
  5149. /**
  5150. * @brief Clear trigger overrun flag.
  5151. * @note This API is used for all available DMA channels.
  5152. * @rmtoll CFCR TOF LL_DMA_ClearFlag_TO
  5153. * @param DMAx DMAx Instance
  5154. * @param Channel This parameter can be one of the following values:
  5155. * @arg @ref LL_DMA_CHANNEL_0
  5156. * @arg @ref LL_DMA_CHANNEL_1
  5157. * @arg @ref LL_DMA_CHANNEL_2
  5158. * @arg @ref LL_DMA_CHANNEL_3
  5159. * @arg @ref LL_DMA_CHANNEL_4
  5160. * @arg @ref LL_DMA_CHANNEL_5
  5161. * @arg @ref LL_DMA_CHANNEL_6
  5162. * @arg @ref LL_DMA_CHANNEL_7
  5163. * @retval None.
  5164. */
  5165. __STATIC_INLINE void LL_DMA_ClearFlag_TO(const DMA_TypeDef *DMAx, uint32_t Channel)
  5166. {
  5167. uint32_t dma_base_addr = (uint32_t)DMAx;
  5168. WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CFCR, DMA_CFCR_TOF);
  5169. }
  5170. /**
  5171. * @brief Clear suspension flag.
  5172. * @note This API is used for all available DMA channels.
  5173. * @rmtoll CFCR SUSPF LL_DMA_ClearFlag_SUSP
  5174. * @param DMAx DMAx Instance
  5175. * @param Channel This parameter can be one of the following values:
  5176. * @arg @ref LL_DMA_CHANNEL_0
  5177. * @arg @ref LL_DMA_CHANNEL_1
  5178. * @arg @ref LL_DMA_CHANNEL_2
  5179. * @arg @ref LL_DMA_CHANNEL_3
  5180. * @arg @ref LL_DMA_CHANNEL_4
  5181. * @arg @ref LL_DMA_CHANNEL_5
  5182. * @arg @ref LL_DMA_CHANNEL_6
  5183. * @arg @ref LL_DMA_CHANNEL_7
  5184. * @retval None.
  5185. */
  5186. __STATIC_INLINE void LL_DMA_ClearFlag_SUSP(const DMA_TypeDef *DMAx, uint32_t Channel)
  5187. {
  5188. uint32_t dma_base_addr = (uint32_t)DMAx;
  5189. WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CFCR, DMA_CFCR_SUSPF);
  5190. }
  5191. /**
  5192. * @brief Clear user setting error flag.
  5193. * @note This API is used for all available DMA channels.
  5194. * @rmtoll CFCR USEF LL_DMA_ClearFlag_USE
  5195. * @param DMAx DMAx Instance
  5196. * @param Channel This parameter can be one of the following values:
  5197. * @arg @ref LL_DMA_CHANNEL_0
  5198. * @arg @ref LL_DMA_CHANNEL_1
  5199. * @arg @ref LL_DMA_CHANNEL_2
  5200. * @arg @ref LL_DMA_CHANNEL_3
  5201. * @arg @ref LL_DMA_CHANNEL_4
  5202. * @arg @ref LL_DMA_CHANNEL_5
  5203. * @arg @ref LL_DMA_CHANNEL_6
  5204. * @arg @ref LL_DMA_CHANNEL_7
  5205. * @retval None.
  5206. */
  5207. __STATIC_INLINE void LL_DMA_ClearFlag_USE(const DMA_TypeDef *DMAx, uint32_t Channel)
  5208. {
  5209. uint32_t dma_base_addr = (uint32_t)DMAx;
  5210. WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CFCR, DMA_CFCR_USEF);
  5211. }
  5212. /**
  5213. * @brief Clear link transfer error flag.
  5214. * @note This API is used for all available DMA channels.
  5215. * @rmtoll CFCR ULEF LL_DMA_ClearFlag_ULE
  5216. * @param DMAx DMAx Instance
  5217. * @param Channel This parameter can be one of the following values:
  5218. * @arg @ref LL_DMA_CHANNEL_0
  5219. * @arg @ref LL_DMA_CHANNEL_1
  5220. * @arg @ref LL_DMA_CHANNEL_2
  5221. * @arg @ref LL_DMA_CHANNEL_3
  5222. * @arg @ref LL_DMA_CHANNEL_4
  5223. * @arg @ref LL_DMA_CHANNEL_5
  5224. * @arg @ref LL_DMA_CHANNEL_6
  5225. * @arg @ref LL_DMA_CHANNEL_7
  5226. * @retval None.
  5227. */
  5228. __STATIC_INLINE void LL_DMA_ClearFlag_ULE(const DMA_TypeDef *DMAx, uint32_t Channel)
  5229. {
  5230. uint32_t dma_base_addr = (uint32_t)DMAx;
  5231. WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CFCR, DMA_CFCR_ULEF);
  5232. }
  5233. /**
  5234. * @brief Clear data transfer error flag.
  5235. * @note This API is used for all available DMA channels.
  5236. * @rmtoll CFCR DTEF LL_DMA_ClearFlag_DTE
  5237. * @param DMAx DMAx Instance
  5238. * @param Channel This parameter can be one of the following values:
  5239. * @arg @ref LL_DMA_CHANNEL_0
  5240. * @arg @ref LL_DMA_CHANNEL_1
  5241. * @arg @ref LL_DMA_CHANNEL_2
  5242. * @arg @ref LL_DMA_CHANNEL_3
  5243. * @arg @ref LL_DMA_CHANNEL_4
  5244. * @arg @ref LL_DMA_CHANNEL_5
  5245. * @arg @ref LL_DMA_CHANNEL_6
  5246. * @arg @ref LL_DMA_CHANNEL_7
  5247. * @retval None.
  5248. */
  5249. __STATIC_INLINE void LL_DMA_ClearFlag_DTE(const DMA_TypeDef *DMAx, uint32_t Channel)
  5250. {
  5251. uint32_t dma_base_addr = (uint32_t)DMAx;
  5252. WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CFCR, DMA_CFCR_DTEF);
  5253. }
  5254. /**
  5255. * @brief Clear half transfer flag.
  5256. * @note This API is used for all available DMA channels.
  5257. * @rmtoll CFCR HTF LL_DMA_ClearFlag_HT
  5258. * @param DMAx DMAx Instance
  5259. * @param Channel This parameter can be one of the following values:
  5260. * @arg @ref LL_DMA_CHANNEL_0
  5261. * @arg @ref LL_DMA_CHANNEL_1
  5262. * @arg @ref LL_DMA_CHANNEL_2
  5263. * @arg @ref LL_DMA_CHANNEL_3
  5264. * @arg @ref LL_DMA_CHANNEL_4
  5265. * @arg @ref LL_DMA_CHANNEL_5
  5266. * @arg @ref LL_DMA_CHANNEL_6
  5267. * @arg @ref LL_DMA_CHANNEL_7
  5268. * @retval None.
  5269. */
  5270. __STATIC_INLINE void LL_DMA_ClearFlag_HT(const DMA_TypeDef *DMAx, uint32_t Channel)
  5271. {
  5272. uint32_t dma_base_addr = (uint32_t)DMAx;
  5273. WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CFCR, DMA_CFCR_HTF);
  5274. }
  5275. /**
  5276. * @brief Clear transfer complete flag.
  5277. * @note This API is used for all available DMA channels.
  5278. * @rmtoll CFCR TCF LL_DMA_ClearFlag_TC
  5279. * @param DMAx DMAx Instance
  5280. * @param Channel This parameter can be one of the following values:
  5281. * @arg @ref LL_DMA_CHANNEL_0
  5282. * @arg @ref LL_DMA_CHANNEL_1
  5283. * @arg @ref LL_DMA_CHANNEL_2
  5284. * @arg @ref LL_DMA_CHANNEL_3
  5285. * @arg @ref LL_DMA_CHANNEL_4
  5286. * @arg @ref LL_DMA_CHANNEL_5
  5287. * @arg @ref LL_DMA_CHANNEL_6
  5288. * @arg @ref LL_DMA_CHANNEL_7
  5289. * @retval None.
  5290. */
  5291. __STATIC_INLINE void LL_DMA_ClearFlag_TC(const DMA_TypeDef *DMAx, uint32_t Channel)
  5292. {
  5293. uint32_t dma_base_addr = (uint32_t)DMAx;
  5294. WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CFCR, DMA_CFCR_TCF);
  5295. }
  5296. /**
  5297. * @brief Get trigger overrun flag.
  5298. * @note This API is used for all available DMA channels.
  5299. * @rmtoll CSR TOF LL_DMA_IsActiveFlag_TO
  5300. * @param DMAx DMAx Instance
  5301. * @param Channel This parameter can be one of the following values:
  5302. * @arg @ref LL_DMA_CHANNEL_0
  5303. * @arg @ref LL_DMA_CHANNEL_1
  5304. * @arg @ref LL_DMA_CHANNEL_2
  5305. * @arg @ref LL_DMA_CHANNEL_3
  5306. * @arg @ref LL_DMA_CHANNEL_4
  5307. * @arg @ref LL_DMA_CHANNEL_5
  5308. * @arg @ref LL_DMA_CHANNEL_6
  5309. * @arg @ref LL_DMA_CHANNEL_7
  5310. * @retval State of bit (1 or 0).
  5311. */
  5312. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TO(const DMA_TypeDef *DMAx, uint32_t Channel)
  5313. {
  5314. uint32_t dma_base_addr = (uint32_t)DMAx;
  5315. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_TOF)
  5316. == (DMA_CSR_TOF)) ? 1UL : 0UL);
  5317. }
  5318. /**
  5319. * @brief Get suspension flag.
  5320. * @note This API is used for all available DMA channels.
  5321. * @rmtoll CSR SUSPF LL_DMA_IsActiveFlag_SUSP
  5322. * @param DMAx DMAx Instance
  5323. * @param Channel This parameter can be one of the following values:
  5324. * @arg @ref LL_DMA_CHANNEL_0
  5325. * @arg @ref LL_DMA_CHANNEL_1
  5326. * @arg @ref LL_DMA_CHANNEL_2
  5327. * @arg @ref LL_DMA_CHANNEL_3
  5328. * @arg @ref LL_DMA_CHANNEL_4
  5329. * @arg @ref LL_DMA_CHANNEL_5
  5330. * @arg @ref LL_DMA_CHANNEL_6
  5331. * @arg @ref LL_DMA_CHANNEL_7
  5332. * @retval State of bit (1 or 0).
  5333. */
  5334. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_SUSP(const DMA_TypeDef *DMAx, uint32_t Channel)
  5335. {
  5336. uint32_t dma_base_addr = (uint32_t)DMAx;
  5337. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_SUSPF)
  5338. == (DMA_CSR_SUSPF)) ? 1UL : 0UL);
  5339. }
  5340. /**
  5341. * @brief Get user setting error flag.
  5342. * @note This API is used for all available DMA channels.
  5343. * @rmtoll CSR USEF LL_DMA_IsActiveFlag_USE
  5344. * @param DMAx DMAx Instance
  5345. * @param Channel This parameter can be one of the following values:
  5346. * @arg @ref LL_DMA_CHANNEL_0
  5347. * @arg @ref LL_DMA_CHANNEL_1
  5348. * @arg @ref LL_DMA_CHANNEL_2
  5349. * @arg @ref LL_DMA_CHANNEL_3
  5350. * @arg @ref LL_DMA_CHANNEL_4
  5351. * @arg @ref LL_DMA_CHANNEL_5
  5352. * @arg @ref LL_DMA_CHANNEL_6
  5353. * @arg @ref LL_DMA_CHANNEL_7
  5354. * @retval State of bit (1 or 0).
  5355. */
  5356. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_USE(const DMA_TypeDef *DMAx, uint32_t Channel)
  5357. {
  5358. uint32_t dma_base_addr = (uint32_t)DMAx;
  5359. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_USEF)
  5360. == (DMA_CSR_USEF)) ? 1UL : 0UL);
  5361. }
  5362. /**
  5363. * @brief Get user setting error flag.
  5364. * @note This API is used for all available DMA channels.
  5365. * @rmtoll CSR ULEF LL_DMA_IsActiveFlag_ULE
  5366. * @param DMAx DMAx Instance
  5367. * @param Channel This parameter can be one of the following values:
  5368. * @arg @ref LL_DMA_CHANNEL_0
  5369. * @arg @ref LL_DMA_CHANNEL_1
  5370. * @arg @ref LL_DMA_CHANNEL_2
  5371. * @arg @ref LL_DMA_CHANNEL_3
  5372. * @arg @ref LL_DMA_CHANNEL_4
  5373. * @arg @ref LL_DMA_CHANNEL_5
  5374. * @arg @ref LL_DMA_CHANNEL_6
  5375. * @arg @ref LL_DMA_CHANNEL_7
  5376. * @retval State of bit (1 or 0).
  5377. */
  5378. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_ULE(const DMA_TypeDef *DMAx, uint32_t Channel)
  5379. {
  5380. uint32_t dma_base_addr = (uint32_t)DMAx;
  5381. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_ULEF)
  5382. == (DMA_CSR_ULEF)) ? 1UL : 0UL);
  5383. }
  5384. /**
  5385. * @brief Get data transfer error flag.
  5386. * @note This API is used for all available DMA channels.
  5387. * @rmtoll CSR DTEF LL_DMA_IsActiveFlag_DTE
  5388. * @param DMAx DMAx Instance
  5389. * @param Channel This parameter can be one of the following values:
  5390. * @arg @ref LL_DMA_CHANNEL_0
  5391. * @arg @ref LL_DMA_CHANNEL_1
  5392. * @arg @ref LL_DMA_CHANNEL_2
  5393. * @arg @ref LL_DMA_CHANNEL_3
  5394. * @arg @ref LL_DMA_CHANNEL_4
  5395. * @arg @ref LL_DMA_CHANNEL_5
  5396. * @arg @ref LL_DMA_CHANNEL_6
  5397. * @arg @ref LL_DMA_CHANNEL_7
  5398. * @retval State of bit (1 or 0).
  5399. */
  5400. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DTE(const DMA_TypeDef *DMAx, uint32_t Channel)
  5401. {
  5402. uint32_t dma_base_addr = (uint32_t)DMAx;
  5403. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_DTEF)
  5404. == (DMA_CSR_DTEF)) ? 1UL : 0UL);
  5405. }
  5406. /**
  5407. * @brief Get half transfer flag.
  5408. * @note This API is used for all available DMA channels.
  5409. * @rmtoll CSR HTF LL_DMA_IsActiveFlag_HT
  5410. * @param DMAx DMAx Instance
  5411. * @param Channel This parameter can be one of the following values:
  5412. * @arg @ref LL_DMA_CHANNEL_0
  5413. * @arg @ref LL_DMA_CHANNEL_1
  5414. * @arg @ref LL_DMA_CHANNEL_2
  5415. * @arg @ref LL_DMA_CHANNEL_3
  5416. * @arg @ref LL_DMA_CHANNEL_4
  5417. * @arg @ref LL_DMA_CHANNEL_5
  5418. * @arg @ref LL_DMA_CHANNEL_6
  5419. * @arg @ref LL_DMA_CHANNEL_7
  5420. * @retval State of bit (1 or 0).
  5421. */
  5422. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT(const DMA_TypeDef *DMAx, uint32_t Channel)
  5423. {
  5424. uint32_t dma_base_addr = (uint32_t)DMAx;
  5425. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_HTF)
  5426. == (DMA_CSR_HTF)) ? 1UL : 0UL);
  5427. }
  5428. /**
  5429. * @brief Get transfer complete flag.
  5430. * @note This API is used for all available DMA channels.
  5431. * @rmtoll CSR TCF LL_DMA_IsActiveFlag_TC
  5432. * @param DMAx DMAx Instance
  5433. * @param Channel This parameter can be one of the following values:
  5434. * @arg @ref LL_DMA_CHANNEL_0
  5435. * @arg @ref LL_DMA_CHANNEL_1
  5436. * @arg @ref LL_DMA_CHANNEL_2
  5437. * @arg @ref LL_DMA_CHANNEL_3
  5438. * @arg @ref LL_DMA_CHANNEL_4
  5439. * @arg @ref LL_DMA_CHANNEL_5
  5440. * @arg @ref LL_DMA_CHANNEL_6
  5441. * @arg @ref LL_DMA_CHANNEL_7
  5442. * @retval State of bit (1 or 0).
  5443. */
  5444. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC(const DMA_TypeDef *DMAx, uint32_t Channel)
  5445. {
  5446. uint32_t dma_base_addr = (uint32_t)DMAx;
  5447. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_TCF)
  5448. == (DMA_CSR_TCF)) ? 1UL : 0UL);
  5449. }
  5450. /**
  5451. * @brief Get idle flag.
  5452. * @note This API is used for all available DMA channels.
  5453. * @rmtoll CSR IDLEF LL_DMA_IsActiveFlag_IDLE
  5454. * @param DMAx DMAx Instance
  5455. * @param Channel This parameter can be one of the following values:
  5456. * @arg @ref LL_DMA_CHANNEL_0
  5457. * @arg @ref LL_DMA_CHANNEL_1
  5458. * @arg @ref LL_DMA_CHANNEL_2
  5459. * @arg @ref LL_DMA_CHANNEL_3
  5460. * @arg @ref LL_DMA_CHANNEL_4
  5461. * @arg @ref LL_DMA_CHANNEL_5
  5462. * @arg @ref LL_DMA_CHANNEL_6
  5463. * @arg @ref LL_DMA_CHANNEL_7
  5464. * @retval State of bit (1 or 0).
  5465. */
  5466. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_IDLE(const DMA_TypeDef *DMAx, uint32_t Channel)
  5467. {
  5468. uint32_t dma_base_addr = (uint32_t)DMAx;
  5469. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_IDLEF)
  5470. == (DMA_CSR_IDLEF)) ? 1UL : 0UL);
  5471. }
  5472. /**
  5473. * @brief Check if nsecure masked interrupt is active.
  5474. * @note This API is used for all available DMA channels.
  5475. * @rmtoll MISR MISx LL_DMA_IsActiveFlag_MIS
  5476. * @param DMAx DMAx Instance
  5477. * @param Channel This parameter can be one of the following values:
  5478. * @arg @ref LL_DMA_CHANNEL_0
  5479. * @arg @ref LL_DMA_CHANNEL_1
  5480. * @arg @ref LL_DMA_CHANNEL_2
  5481. * @arg @ref LL_DMA_CHANNEL_3
  5482. * @arg @ref LL_DMA_CHANNEL_4
  5483. * @arg @ref LL_DMA_CHANNEL_5
  5484. * @arg @ref LL_DMA_CHANNEL_6
  5485. * @arg @ref LL_DMA_CHANNEL_7
  5486. * @retval State of bit (1 or 0).
  5487. */
  5488. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_MIS(const DMA_TypeDef *DMAx, uint32_t Channel)
  5489. {
  5490. return ((READ_BIT(DMAx->MISR, (DMA_MISR_MIS0 << (Channel & 0x0FU)))
  5491. == (DMA_MISR_MIS0 << (Channel & 0x0FU))) ? 1UL : 0UL);
  5492. }
  5493. #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
  5494. /**
  5495. * @brief Check if secure masked interrupt is active.
  5496. * @note This API is used for all available DMA channels.
  5497. * @rmtoll SMISR MISx LL_DMA_IsActiveFlag_SMIS
  5498. * @param DMAx DMAx Instance
  5499. * @param Channel This parameter can be one of the following values:
  5500. * @arg @ref LL_DMA_CHANNEL_0
  5501. * @arg @ref LL_DMA_CHANNEL_1
  5502. * @arg @ref LL_DMA_CHANNEL_2
  5503. * @arg @ref LL_DMA_CHANNEL_3
  5504. * @arg @ref LL_DMA_CHANNEL_4
  5505. * @arg @ref LL_DMA_CHANNEL_5
  5506. * @arg @ref LL_DMA_CHANNEL_6
  5507. * @arg @ref LL_DMA_CHANNEL_7
  5508. * @retval State of bit (1 or 0).
  5509. */
  5510. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_SMIS(const DMA_TypeDef *DMAx, uint32_t Channel)
  5511. {
  5512. return ((READ_BIT(DMAx->SMISR, (DMA_SMISR_MIS0 << (Channel & 0x0000000FU)))
  5513. == (DMA_SMISR_MIS0 << (Channel & 0x0000000FU))) ? 1UL : 0UL);
  5514. }
  5515. #endif /* (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
  5516. /**
  5517. * @}
  5518. */
  5519. /** @defgroup DMA_LL_EF_IT_Management Interrupt Management
  5520. * @{
  5521. */
  5522. /**
  5523. * @brief Enable trigger overrun interrupt.
  5524. * @note This API is used for all available DMA channels.
  5525. * @rmtoll CCR TOIE LL_DMA_EnableIT_TO
  5526. * @param DMAx DMAx Instance
  5527. * @param Channel This parameter can be one of the following values:
  5528. * @arg @ref LL_DMA_CHANNEL_0
  5529. * @arg @ref LL_DMA_CHANNEL_1
  5530. * @arg @ref LL_DMA_CHANNEL_2
  5531. * @arg @ref LL_DMA_CHANNEL_3
  5532. * @arg @ref LL_DMA_CHANNEL_4
  5533. * @arg @ref LL_DMA_CHANNEL_5
  5534. * @arg @ref LL_DMA_CHANNEL_6
  5535. * @arg @ref LL_DMA_CHANNEL_7
  5536. * @retval None.
  5537. */
  5538. __STATIC_INLINE void LL_DMA_EnableIT_TO(const DMA_TypeDef *DMAx, uint32_t Channel)
  5539. {
  5540. uint32_t dma_base_addr = (uint32_t)DMAx;
  5541. SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TOIE);
  5542. }
  5543. /**
  5544. * @brief Enable suspension interrupt.
  5545. * @note This API is used for all available DMA channels.
  5546. * @rmtoll CCR SUSPIE LL_DMA_EnableIT_SUSP
  5547. * @param DMAx DMAx Instance
  5548. * @param Channel This parameter can be one of the following values:
  5549. * @arg @ref LL_DMA_CHANNEL_0
  5550. * @arg @ref LL_DMA_CHANNEL_1
  5551. * @arg @ref LL_DMA_CHANNEL_2
  5552. * @arg @ref LL_DMA_CHANNEL_3
  5553. * @arg @ref LL_DMA_CHANNEL_4
  5554. * @arg @ref LL_DMA_CHANNEL_5
  5555. * @arg @ref LL_DMA_CHANNEL_6
  5556. * @arg @ref LL_DMA_CHANNEL_7
  5557. * @retval None.
  5558. */
  5559. __STATIC_INLINE void LL_DMA_EnableIT_SUSP(const DMA_TypeDef *DMAx, uint32_t Channel)
  5560. {
  5561. uint32_t dma_base_addr = (uint32_t)DMAx;
  5562. SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_SUSPIE);
  5563. }
  5564. /**
  5565. * @brief Enable user setting error interrupt.
  5566. * @note This API is used for all available DMA channels.
  5567. * @rmtoll CCR USEIE LL_DMA_EnableIT_USE
  5568. * @param DMAx DMAx Instance
  5569. * @param Channel This parameter can be one of the following values:
  5570. * @arg @ref LL_DMA_CHANNEL_0
  5571. * @arg @ref LL_DMA_CHANNEL_1
  5572. * @arg @ref LL_DMA_CHANNEL_2
  5573. * @arg @ref LL_DMA_CHANNEL_3
  5574. * @arg @ref LL_DMA_CHANNEL_4
  5575. * @arg @ref LL_DMA_CHANNEL_5
  5576. * @arg @ref LL_DMA_CHANNEL_6
  5577. * @arg @ref LL_DMA_CHANNEL_7
  5578. * @retval None.
  5579. */
  5580. __STATIC_INLINE void LL_DMA_EnableIT_USE(const DMA_TypeDef *DMAx, uint32_t Channel)
  5581. {
  5582. uint32_t dma_base_addr = (uint32_t)DMAx;
  5583. SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_USEIE);
  5584. }
  5585. /**
  5586. * @brief Enable update link transfer error interrupt.
  5587. * @note This API is used for all available DMA channels.
  5588. * @rmtoll CCR ULEIE LL_DMA_EnableIT_ULE
  5589. * @param DMAx DMAx Instance
  5590. * @param Channel This parameter can be one of the following values:
  5591. * @arg @ref LL_DMA_CHANNEL_0
  5592. * @arg @ref LL_DMA_CHANNEL_1
  5593. * @arg @ref LL_DMA_CHANNEL_2
  5594. * @arg @ref LL_DMA_CHANNEL_3
  5595. * @arg @ref LL_DMA_CHANNEL_4
  5596. * @arg @ref LL_DMA_CHANNEL_5
  5597. * @arg @ref LL_DMA_CHANNEL_6
  5598. * @arg @ref LL_DMA_CHANNEL_7
  5599. * @retval None.
  5600. */
  5601. __STATIC_INLINE void LL_DMA_EnableIT_ULE(const DMA_TypeDef *DMAx, uint32_t Channel)
  5602. {
  5603. uint32_t dma_base_addr = (uint32_t)DMAx;
  5604. SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_ULEIE);
  5605. }
  5606. /**
  5607. * @brief Enable data transfer error interrupt.
  5608. * @note This API is used for all available DMA channels.
  5609. * @rmtoll CCR DTEIE LL_DMA_EnableIT_DTE
  5610. * @param DMAx DMAx Instance
  5611. * @param Channel This parameter can be one of the following values:
  5612. * @arg @ref LL_DMA_CHANNEL_0
  5613. * @arg @ref LL_DMA_CHANNEL_1
  5614. * @arg @ref LL_DMA_CHANNEL_2
  5615. * @arg @ref LL_DMA_CHANNEL_3
  5616. * @arg @ref LL_DMA_CHANNEL_4
  5617. * @arg @ref LL_DMA_CHANNEL_5
  5618. * @arg @ref LL_DMA_CHANNEL_6
  5619. * @arg @ref LL_DMA_CHANNEL_7
  5620. * @retval None.
  5621. */
  5622. __STATIC_INLINE void LL_DMA_EnableIT_DTE(const DMA_TypeDef *DMAx, uint32_t Channel)
  5623. {
  5624. uint32_t dma_base_addr = (uint32_t)DMAx;
  5625. SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_DTEIE);
  5626. }
  5627. /**
  5628. * @brief Enable half transfer complete interrupt.
  5629. * @note This API is used for all available DMA channels.
  5630. * @rmtoll CCR HTIE LL_DMA_EnableIT_HT
  5631. * @param DMAx DMAx Instance
  5632. * @param Channel This parameter can be one of the following values:
  5633. * @arg @ref LL_DMA_CHANNEL_0
  5634. * @arg @ref LL_DMA_CHANNEL_1
  5635. * @arg @ref LL_DMA_CHANNEL_2
  5636. * @arg @ref LL_DMA_CHANNEL_3
  5637. * @arg @ref LL_DMA_CHANNEL_4
  5638. * @arg @ref LL_DMA_CHANNEL_5
  5639. * @arg @ref LL_DMA_CHANNEL_6
  5640. * @arg @ref LL_DMA_CHANNEL_7
  5641. * @retval None.
  5642. */
  5643. __STATIC_INLINE void LL_DMA_EnableIT_HT(const DMA_TypeDef *DMAx, uint32_t Channel)
  5644. {
  5645. uint32_t dma_base_addr = (uint32_t)DMAx;
  5646. SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_HTIE);
  5647. }
  5648. /**
  5649. * @brief Enable transfer complete interrupt.
  5650. * @note This API is used for all available DMA channels.
  5651. * @rmtoll CCR TCIE LL_DMA_EnableIT_TC
  5652. * @param DMAx DMAx Instance
  5653. * @param Channel This parameter can be one of the following values:
  5654. * @arg @ref LL_DMA_CHANNEL_0
  5655. * @arg @ref LL_DMA_CHANNEL_1
  5656. * @arg @ref LL_DMA_CHANNEL_2
  5657. * @arg @ref LL_DMA_CHANNEL_3
  5658. * @arg @ref LL_DMA_CHANNEL_4
  5659. * @arg @ref LL_DMA_CHANNEL_5
  5660. * @arg @ref LL_DMA_CHANNEL_6
  5661. * @arg @ref LL_DMA_CHANNEL_7
  5662. * @retval None.
  5663. */
  5664. __STATIC_INLINE void LL_DMA_EnableIT_TC(const DMA_TypeDef *DMAx, uint32_t Channel)
  5665. {
  5666. uint32_t dma_base_addr = (uint32_t)DMAx;
  5667. SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TCIE);
  5668. }
  5669. /**
  5670. * @brief Disable trigger overrun interrupt.
  5671. * @note This API is used for all available DMA channels.
  5672. * @rmtoll CCR TOIE LL_DMA_DisableIT_TO
  5673. * @param DMAx DMAx Instance
  5674. * @param Channel This parameter can be one of the following values:
  5675. * @arg @ref LL_DMA_CHANNEL_0
  5676. * @arg @ref LL_DMA_CHANNEL_1
  5677. * @arg @ref LL_DMA_CHANNEL_2
  5678. * @arg @ref LL_DMA_CHANNEL_3
  5679. * @arg @ref LL_DMA_CHANNEL_4
  5680. * @arg @ref LL_DMA_CHANNEL_5
  5681. * @arg @ref LL_DMA_CHANNEL_6
  5682. * @arg @ref LL_DMA_CHANNEL_7
  5683. * @retval None.
  5684. */
  5685. __STATIC_INLINE void LL_DMA_DisableIT_TO(const DMA_TypeDef *DMAx, uint32_t Channel)
  5686. {
  5687. uint32_t dma_base_addr = (uint32_t)DMAx;
  5688. CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TOIE);
  5689. }
  5690. /**
  5691. * @brief Disable suspension interrupt.
  5692. * @note This API is used for all available DMA channels.
  5693. * @rmtoll CCR SUSPIE LL_DMA_DisableIT_SUSP
  5694. * @param DMAx DMAx Instance
  5695. * @param Channel This parameter can be one of the following values:
  5696. * @arg @ref LL_DMA_CHANNEL_0
  5697. * @arg @ref LL_DMA_CHANNEL_1
  5698. * @arg @ref LL_DMA_CHANNEL_2
  5699. * @arg @ref LL_DMA_CHANNEL_3
  5700. * @arg @ref LL_DMA_CHANNEL_4
  5701. * @arg @ref LL_DMA_CHANNEL_5
  5702. * @arg @ref LL_DMA_CHANNEL_6
  5703. * @arg @ref LL_DMA_CHANNEL_7
  5704. * @retval None.
  5705. */
  5706. __STATIC_INLINE void LL_DMA_DisableIT_SUSP(const DMA_TypeDef *DMAx, uint32_t Channel)
  5707. {
  5708. uint32_t dma_base_addr = (uint32_t)DMAx;
  5709. CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_SUSPIE);
  5710. }
  5711. /**
  5712. * @brief Disable user setting error interrupt.
  5713. * @note This API is used for all available DMA channels.
  5714. * @rmtoll CCR USEIE LL_DMA_DisableIT_USE
  5715. * @param DMAx DMAx Instance
  5716. * @param Channel This parameter can be one of the following values:
  5717. * @arg @ref LL_DMA_CHANNEL_0
  5718. * @arg @ref LL_DMA_CHANNEL_1
  5719. * @arg @ref LL_DMA_CHANNEL_2
  5720. * @arg @ref LL_DMA_CHANNEL_3
  5721. * @arg @ref LL_DMA_CHANNEL_4
  5722. * @arg @ref LL_DMA_CHANNEL_5
  5723. * @arg @ref LL_DMA_CHANNEL_6
  5724. * @arg @ref LL_DMA_CHANNEL_7
  5725. * @retval None.
  5726. */
  5727. __STATIC_INLINE void LL_DMA_DisableIT_USE(const DMA_TypeDef *DMAx, uint32_t Channel)
  5728. {
  5729. uint32_t dma_base_addr = (uint32_t)DMAx;
  5730. CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_USEIE);
  5731. }
  5732. /**
  5733. * @brief Disable update link transfer error interrupt.
  5734. * @note This API is used for all available DMA channels.
  5735. * @rmtoll CCR ULEIE LL_DMA_DisableIT_ULE
  5736. * @param DMAx DMAx Instance
  5737. * @param Channel This parameter can be one of the following values:
  5738. * @arg @ref LL_DMA_CHANNEL_0
  5739. * @arg @ref LL_DMA_CHANNEL_1
  5740. * @arg @ref LL_DMA_CHANNEL_2
  5741. * @arg @ref LL_DMA_CHANNEL_3
  5742. * @arg @ref LL_DMA_CHANNEL_4
  5743. * @arg @ref LL_DMA_CHANNEL_5
  5744. * @arg @ref LL_DMA_CHANNEL_6
  5745. * @arg @ref LL_DMA_CHANNEL_7
  5746. * @retval None.
  5747. */
  5748. __STATIC_INLINE void LL_DMA_DisableIT_ULE(const DMA_TypeDef *DMAx, uint32_t Channel)
  5749. {
  5750. uint32_t dma_base_addr = (uint32_t)DMAx;
  5751. CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_ULEIE);
  5752. }
  5753. /**
  5754. * @brief Disable data transfer error interrupt.
  5755. * @note This API is used for all available DMA channels.
  5756. * @rmtoll CCR DTEIE LL_DMA_DisableIT_DTE
  5757. * @param DMAx DMAx Instance
  5758. * @param Channel This parameter can be one of the following values:
  5759. * @arg @ref LL_DMA_CHANNEL_0
  5760. * @arg @ref LL_DMA_CHANNEL_1
  5761. * @arg @ref LL_DMA_CHANNEL_2
  5762. * @arg @ref LL_DMA_CHANNEL_3
  5763. * @arg @ref LL_DMA_CHANNEL_4
  5764. * @arg @ref LL_DMA_CHANNEL_5
  5765. * @arg @ref LL_DMA_CHANNEL_6
  5766. * @arg @ref LL_DMA_CHANNEL_7
  5767. * @retval None.
  5768. */
  5769. __STATIC_INLINE void LL_DMA_DisableIT_DTE(const DMA_TypeDef *DMAx, uint32_t Channel)
  5770. {
  5771. uint32_t dma_base_addr = (uint32_t)DMAx;
  5772. CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_DTEIE);
  5773. }
  5774. /**
  5775. * @brief Disable half transfer complete interrupt.
  5776. * @note This API is used for all available DMA channels.
  5777. * @rmtoll CCR HTIE LL_DMA_DisableIT_HT
  5778. * @param DMAx DMAx Instance
  5779. * @param Channel This parameter can be one of the following values:
  5780. * @arg @ref LL_DMA_CHANNEL_0
  5781. * @arg @ref LL_DMA_CHANNEL_1
  5782. * @arg @ref LL_DMA_CHANNEL_2
  5783. * @arg @ref LL_DMA_CHANNEL_3
  5784. * @arg @ref LL_DMA_CHANNEL_4
  5785. * @arg @ref LL_DMA_CHANNEL_5
  5786. * @arg @ref LL_DMA_CHANNEL_6
  5787. * @arg @ref LL_DMA_CHANNEL_7
  5788. * @retval None.
  5789. */
  5790. __STATIC_INLINE void LL_DMA_DisableIT_HT(const DMA_TypeDef *DMAx, uint32_t Channel)
  5791. {
  5792. uint32_t dma_base_addr = (uint32_t)DMAx;
  5793. CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_HTIE);
  5794. }
  5795. /**
  5796. * @brief Disable transfer complete interrupt.
  5797. * @note This API is used for all available DMA channels.
  5798. * @rmtoll CCR TCIE LL_DMA_DisableIT_TC
  5799. * @param DMAx DMAx Instance
  5800. * @param Channel This parameter can be one of the following values:
  5801. * @arg @ref LL_DMA_CHANNEL_0
  5802. * @arg @ref LL_DMA_CHANNEL_1
  5803. * @arg @ref LL_DMA_CHANNEL_2
  5804. * @arg @ref LL_DMA_CHANNEL_3
  5805. * @arg @ref LL_DMA_CHANNEL_4
  5806. * @arg @ref LL_DMA_CHANNEL_5
  5807. * @arg @ref LL_DMA_CHANNEL_6
  5808. * @arg @ref LL_DMA_CHANNEL_7
  5809. * @retval None.
  5810. */
  5811. __STATIC_INLINE void LL_DMA_DisableIT_TC(const DMA_TypeDef *DMAx, uint32_t Channel)
  5812. {
  5813. uint32_t dma_base_addr = (uint32_t)DMAx;
  5814. CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TCIE);
  5815. }
  5816. /**
  5817. * @brief Check if trigger overrun interrupt is enabled.
  5818. * @note This API is used for all available DMA channels.
  5819. * @rmtoll CCR TOIE LL_DMA_IsEnabledIT_TO
  5820. * @param DMAx DMAx Instance
  5821. * @param Channel This parameter can be one of the following values:
  5822. * @arg @ref LL_DMA_CHANNEL_0
  5823. * @arg @ref LL_DMA_CHANNEL_1
  5824. * @arg @ref LL_DMA_CHANNEL_2
  5825. * @arg @ref LL_DMA_CHANNEL_3
  5826. * @arg @ref LL_DMA_CHANNEL_4
  5827. * @arg @ref LL_DMA_CHANNEL_5
  5828. * @arg @ref LL_DMA_CHANNEL_6
  5829. * @arg @ref LL_DMA_CHANNEL_7
  5830. * @retval State of bit (1 or 0).
  5831. */
  5832. __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TO(const DMA_TypeDef *DMAx, uint32_t Channel)
  5833. {
  5834. uint32_t dma_base_addr = (uint32_t)DMAx;
  5835. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TOIE)
  5836. == DMA_CCR_TOIE) ? 1UL : 0UL);
  5837. }
  5838. /**
  5839. * @brief Check if suspension interrupt is enabled.
  5840. * @note This API is used for all available DMA channels.
  5841. * @rmtoll CCR SUSPIE LL_DMA_IsEnabledIT_SUSP
  5842. * @param DMAx DMAx Instance
  5843. * @param Channel This parameter can be one of the following values:
  5844. * @arg @ref LL_DMA_CHANNEL_0
  5845. * @arg @ref LL_DMA_CHANNEL_1
  5846. * @arg @ref LL_DMA_CHANNEL_2
  5847. * @arg @ref LL_DMA_CHANNEL_3
  5848. * @arg @ref LL_DMA_CHANNEL_4
  5849. * @arg @ref LL_DMA_CHANNEL_5
  5850. * @arg @ref LL_DMA_CHANNEL_6
  5851. * @arg @ref LL_DMA_CHANNEL_7
  5852. * @retval State of bit (1 or 0).
  5853. */
  5854. __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_SUSP(const DMA_TypeDef *DMAx, uint32_t Channel)
  5855. {
  5856. uint32_t dma_base_addr = (uint32_t)DMAx;
  5857. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_SUSPIE)
  5858. == DMA_CCR_SUSPIE) ? 1UL : 0UL);
  5859. }
  5860. /**
  5861. * @brief Check if user setting error interrupt is enabled.
  5862. * @note This API is used for all available DMA channels.
  5863. * @rmtoll CCR USEIE LL_DMA_IsEnabledIT_USE
  5864. * @param DMAx DMAx Instance
  5865. * @param Channel This parameter can be one of the following values:
  5866. * @arg @ref LL_DMA_CHANNEL_0
  5867. * @arg @ref LL_DMA_CHANNEL_1
  5868. * @arg @ref LL_DMA_CHANNEL_2
  5869. * @arg @ref LL_DMA_CHANNEL_3
  5870. * @arg @ref LL_DMA_CHANNEL_4
  5871. * @arg @ref LL_DMA_CHANNEL_5
  5872. * @arg @ref LL_DMA_CHANNEL_6
  5873. * @arg @ref LL_DMA_CHANNEL_7
  5874. * @retval State of bit (1 or 0).
  5875. */
  5876. __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_USE(const DMA_TypeDef *DMAx, uint32_t Channel)
  5877. {
  5878. uint32_t dma_base_addr = (uint32_t)DMAx;
  5879. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_USEIE)
  5880. == DMA_CCR_USEIE) ? 1UL : 0UL);
  5881. }
  5882. /**
  5883. * @brief Check if update link transfer error interrupt is enabled.
  5884. * @note This API is used for all available DMA channels.
  5885. * @rmtoll CCR ULEIE LL_DMA_IsEnabledIT_ULE
  5886. * @param DMAx DMAx Instance
  5887. * @param Channel This parameter can be one of the following values:
  5888. * @arg @ref LL_DMA_CHANNEL_0
  5889. * @arg @ref LL_DMA_CHANNEL_1
  5890. * @arg @ref LL_DMA_CHANNEL_2
  5891. * @arg @ref LL_DMA_CHANNEL_3
  5892. * @arg @ref LL_DMA_CHANNEL_4
  5893. * @arg @ref LL_DMA_CHANNEL_5
  5894. * @arg @ref LL_DMA_CHANNEL_6
  5895. * @arg @ref LL_DMA_CHANNEL_7
  5896. * @retval State of bit (1 or 0).
  5897. */
  5898. __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_ULE(const DMA_TypeDef *DMAx, uint32_t Channel)
  5899. {
  5900. uint32_t dma_base_addr = (uint32_t)DMAx;
  5901. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_ULEIE)
  5902. == DMA_CCR_ULEIE) ? 1UL : 0UL);
  5903. }
  5904. /**
  5905. * @brief Check if data transfer error interrupt is enabled.
  5906. * @note This API is used for all available DMA channels.
  5907. * @rmtoll CCR DTEIE LL_DMA_IsEnabledIT_DTE
  5908. * @param DMAx DMAx Instance
  5909. * @param Channel This parameter can be one of the following values:
  5910. * @arg @ref LL_DMA_CHANNEL_0
  5911. * @arg @ref LL_DMA_CHANNEL_1
  5912. * @arg @ref LL_DMA_CHANNEL_2
  5913. * @arg @ref LL_DMA_CHANNEL_3
  5914. * @arg @ref LL_DMA_CHANNEL_4
  5915. * @arg @ref LL_DMA_CHANNEL_5
  5916. * @arg @ref LL_DMA_CHANNEL_6
  5917. * @arg @ref LL_DMA_CHANNEL_7
  5918. * @retval State of bit (1 or 0).
  5919. */
  5920. __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_DTE(const DMA_TypeDef *DMAx, uint32_t Channel)
  5921. {
  5922. uint32_t dma_base_addr = (uint32_t)DMAx;
  5923. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_DTEIE)
  5924. == DMA_CCR_DTEIE) ? 1UL : 0UL);
  5925. }
  5926. /**
  5927. * @brief Check if half transfer complete interrupt is enabled.
  5928. * @note This API is used for all available DMA channels.
  5929. * @rmtoll CCR HTIE LL_DMA_IsEnabledIT_HT
  5930. * @param DMAx DMAx Instance
  5931. * @param Channel This parameter can be one of the following values:
  5932. * @arg @ref LL_DMA_CHANNEL_0
  5933. * @arg @ref LL_DMA_CHANNEL_1
  5934. * @arg @ref LL_DMA_CHANNEL_2
  5935. * @arg @ref LL_DMA_CHANNEL_3
  5936. * @arg @ref LL_DMA_CHANNEL_4
  5937. * @arg @ref LL_DMA_CHANNEL_5
  5938. * @arg @ref LL_DMA_CHANNEL_6
  5939. * @arg @ref LL_DMA_CHANNEL_7
  5940. * @retval State of bit (1 or 0).
  5941. */
  5942. __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_HT(const DMA_TypeDef *DMAx, uint32_t Channel)
  5943. {
  5944. uint32_t dma_base_addr = (uint32_t)DMAx;
  5945. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_HTIE)
  5946. == DMA_CCR_HTIE) ? 1UL : 0UL);
  5947. }
  5948. /**
  5949. * @brief Check if transfer complete interrupt is enabled.
  5950. * @note This API is used for all available DMA channels.
  5951. * @rmtoll CCR TCIE LL_DMA_IsEnabledIT_TC
  5952. * @param DMAx DMAx Instance
  5953. * @param Channel This parameter can be one of the following values:
  5954. * @arg @ref LL_DMA_CHANNEL_0
  5955. * @arg @ref LL_DMA_CHANNEL_1
  5956. * @arg @ref LL_DMA_CHANNEL_2
  5957. * @arg @ref LL_DMA_CHANNEL_3
  5958. * @arg @ref LL_DMA_CHANNEL_4
  5959. * @arg @ref LL_DMA_CHANNEL_5
  5960. * @arg @ref LL_DMA_CHANNEL_6
  5961. * @arg @ref LL_DMA_CHANNEL_7
  5962. * @retval State of bit (1 or 0).
  5963. */
  5964. __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TC(const DMA_TypeDef *DMAx, uint32_t Channel)
  5965. {
  5966. uint32_t dma_base_addr = (uint32_t)DMAx;
  5967. return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TCIE)
  5968. == DMA_CCR_TCIE) ? 1UL : 0UL);
  5969. }
  5970. /**
  5971. * @}
  5972. */
  5973. #if defined (USE_FULL_LL_DRIVER)
  5974. /** @defgroup DMA_LL_EF_Init Initialization and de-initialization functions
  5975. * @{
  5976. */
  5977. uint32_t LL_DMA_Init(DMA_TypeDef *DMAx, uint32_t Channel, LL_DMA_InitTypeDef *DMA_InitStruct);
  5978. uint32_t LL_DMA_DeInit(DMA_TypeDef *DMAx, uint32_t Channel);
  5979. void LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct);
  5980. void LL_DMA_ListStructInit(LL_DMA_InitLinkedListTypeDef *DMA_InitLinkedListStruct);
  5981. void LL_DMA_NodeStructInit(LL_DMA_InitNodeTypeDef *DMA_InitNodeStruct);
  5982. uint32_t LL_DMA_List_Init(DMA_TypeDef *DMAx, uint32_t Channel,
  5983. LL_DMA_InitLinkedListTypeDef *DMA_InitLinkedListStruct);
  5984. uint32_t LL_DMA_List_DeInit(DMA_TypeDef *DMAx, uint32_t Channel);
  5985. uint32_t LL_DMA_CreateLinkNode(const LL_DMA_InitNodeTypeDef *DMA_InitNodeStruct, LL_DMA_LinkNodeTypeDef *pNode);
  5986. void LL_DMA_ConnectLinkNode(LL_DMA_LinkNodeTypeDef *pPrevLinkNode, uint32_t PrevNodeCLLRIdx,
  5987. LL_DMA_LinkNodeTypeDef *pNewLinkNode, uint32_t NewNodeCLLRIdx);
  5988. void LL_DMA_DisconnectNextLinkNode(LL_DMA_LinkNodeTypeDef *pLinkNode, uint32_t LinkNodeCLLRIdx);
  5989. /**
  5990. * @}
  5991. */
  5992. #endif /* USE_FULL_LL_DRIVER */
  5993. /**
  5994. * @}
  5995. */
  5996. /**
  5997. * @}
  5998. */
  5999. #endif /* GPDMA1 */
  6000. /**
  6001. * @}
  6002. */
  6003. #ifdef __cplusplus
  6004. }
  6005. #endif /* __cplusplus */
  6006. #endif /* STM32H5xx_LL_DMA_H */