fm33lc0xx_fl_atim.h 137 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790
  1. /**
  2. *******************************************************************************************************
  3. * @file fm33lc0xx_fl_atim.h
  4. * @author FMSH Application Team
  5. * @brief Head file of ATIM FL Module
  6. *******************************************************************************************************
  7. * @attention
  8. *
  9. * Copyright (c) [2021] [Fudan Microelectronics]
  10. * THIS SOFTWARE is licensed under Mulan PSL v2.
  11. * You can use this software according to the terms and conditions of the Mulan PSL v2.
  12. * You may obtain a copy of Mulan PSL v2 at:
  13. * http://license.coscl.org.cn/MulanPSL2
  14. * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
  15. * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
  16. * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
  17. * See the Mulan PSL v2 for more details.
  18. *
  19. *******************************************************************************************************
  20. */
  21. /* Define to prevent recursive inclusion---------------------------------------------------------------*/
  22. #ifndef __FM33LC0XX_FL_ATIM_H
  23. #define __FM33LC0XX_FL_ATIM_H
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27. /* Includes -------------------------------------------------------------------------------------------*/
  28. #include "fm33lc0xx_fl_def.h"
  29. /** @addtogroup FM33LC0XX_FL_Driver
  30. * @{
  31. */
  32. /** @defgroup ATIM ATIM
  33. * @brief ATIM FL driver
  34. * @{
  35. */
  36. /* Exported types -------------------------------------------------------------------------------------*/
  37. /** @defgroup ATIM_FL_ES_INIT ATIM Exported Init structures
  38. * @{
  39. */
  40. /**
  41. * @brief ATIM Init Sturcture Definition
  42. */
  43. typedef struct
  44. {
  45. /** 时钟源选择 */
  46. uint32_t clockSource;
  47. /** 预分频系数 */
  48. uint32_t prescaler;
  49. /** 计数模式 */
  50. uint32_t counterMode;
  51. /** 自动重装载值 */
  52. uint32_t autoReload;
  53. /** 预装载使能 */
  54. uint32_t autoReloadState;
  55. /** 定时器分频系数与数字滤波器所使用的采样时钟分频比 */
  56. uint32_t clockDivision;
  57. /** 重复计数次数 */
  58. uint32_t repetitionCounter;
  59. } FL_ATIM_InitTypeDef;
  60. /**
  61. * @brief ATIM Slave Init Sturcture Definition
  62. */
  63. typedef struct
  64. {
  65. /** 外部时钟源模式 */
  66. uint32_t slaveMode;
  67. /** 输入触发信号选择 */
  68. uint32_t triggerSrc;
  69. /** Trigger 延迟*/
  70. uint32_t triggerDelay;
  71. } FL_ATIM_SlaveInitTypeDef;
  72. /**
  73. * @brief ATIM ETR Init Structure Definition
  74. */
  75. typedef struct
  76. {
  77. /** 外部触发使能 */
  78. uint32_t useExternalTrigger;
  79. /** 外部时钟滤波 */
  80. uint32_t ETRFilter;
  81. /** 外部时钟分频 */
  82. uint32_t ETRClockDivision;
  83. /** 外部时钟触发极性 */
  84. uint32_t ETRPolarity;
  85. } FL_ATIM_ETR_InitTypeDef;
  86. /**
  87. * @brief TIM Output Compare Init Structure Definition
  88. */
  89. typedef struct
  90. {
  91. /** 比较输出模式 */
  92. uint32_t OCMode;
  93. /** 比较正向通道输出使能 */
  94. uint32_t OCState;
  95. /** 比较互补通道输出使能 */
  96. uint32_t OCNState;
  97. /** 比较输出极性 */
  98. uint32_t OCPolarity;
  99. /** 比较互补输出极性 */
  100. uint32_t OCNPolarity;
  101. /** 比较输出通道快速模式使能 */
  102. uint32_t OCFastMode;
  103. /** 输出比较预装载 */
  104. uint32_t OCPreload;
  105. /** 通道比较值 */
  106. uint32_t compareValue;
  107. /** 输出空闲状态电平 */
  108. uint32_t OCIdleState;
  109. /** ETR清0使能 */
  110. uint32_t OCETRFStatus;
  111. /** 互补输出空闲状态电平 */
  112. uint32_t OCNIdleState;
  113. } FL_ATIM_OC_InitTypeDef;
  114. /**
  115. * @brief TIM Input Capture Init Structure Definition
  116. */
  117. typedef struct
  118. {
  119. /** 输入捕获使能 */
  120. uint32_t captureState;
  121. /** 输入捕获极性 */
  122. uint32_t ICPolarity;
  123. /** 通道映射激活的输入选择 */
  124. uint32_t ICActiveInput;
  125. /** 输入分频 */
  126. uint32_t ICPrescaler;
  127. /** 输入滤波 */
  128. uint32_t ICFilter;
  129. } FL_ATIM_IC_InitTypeDef;
  130. /**
  131. * @brief BDTR (Break and Dead Time) Init Structure Definition
  132. */
  133. typedef struct
  134. {
  135. /** 运行状态下的输出关闭状态 */
  136. uint32_t OSSRState;
  137. /** 空闲状态下的输出关闭状态 */
  138. uint32_t OSSIState;
  139. /** 寄存器写保护等级 */
  140. uint32_t lockLevel;
  141. /** 死区时间 */
  142. uint32_t deadTime;
  143. /** 刹车使能 */
  144. uint32_t breakState;
  145. /** 刹车信号滤波 */
  146. uint32_t breakFilter;
  147. /** 刹车信号极性 */
  148. uint32_t breakPolarity;
  149. /** 刹车后计数器重装后自动输出使能*/
  150. uint32_t automaticOutput;
  151. /** 刹车信号1门控 */
  152. uint32_t gatedBrakeSignal_1;
  153. /** 刹车信号2门控 */
  154. uint32_t gatedBrakeSignal_2;
  155. /** 两路刹车信号控制逻辑 */
  156. uint32_t brakeSignalCombined;
  157. } FL_ATIM_BDTR_InitTypeDef;
  158. /**
  159. * @}
  160. */
  161. /* Exported constants ---------------------------------------------------------------------------------*/
  162. /** @defgroup ATIM_FL_Exported_Constants ATIM Exported Constants
  163. * @{
  164. */
  165. #define ATIM_CR1_CKD_Pos (8U)
  166. #define ATIM_CR1_CKD_Msk (0x3U << ATIM_CR1_CKD_Pos)
  167. #define ATIM_CR1_CKD ATIM_CR1_CKD_Msk
  168. #define ATIM_CR1_ARPE_Pos (7U)
  169. #define ATIM_CR1_ARPE_Msk (0x1U << ATIM_CR1_ARPE_Pos)
  170. #define ATIM_CR1_ARPE ATIM_CR1_ARPE_Msk
  171. #define ATIM_CR1_CMS_Pos (5U)
  172. #define ATIM_CR1_CMS_Msk (0x3U << ATIM_CR1_CMS_Pos)
  173. #define ATIM_CR1_CMS ATIM_CR1_CMS_Msk
  174. #define ATIM_CR1_DIR_Pos (4U)
  175. #define ATIM_CR1_DIR_Msk (0x1U << ATIM_CR1_DIR_Pos)
  176. #define ATIM_CR1_DIR ATIM_CR1_DIR_Msk
  177. #define ATIM_CR1_OPM_Pos (3U)
  178. #define ATIM_CR1_OPM_Msk (0x1U << ATIM_CR1_OPM_Pos)
  179. #define ATIM_CR1_OPM ATIM_CR1_OPM_Msk
  180. #define ATIM_CR1_URS_Pos (2U)
  181. #define ATIM_CR1_URS_Msk (0x1U << ATIM_CR1_URS_Pos)
  182. #define ATIM_CR1_URS ATIM_CR1_URS_Msk
  183. #define ATIM_CR1_UDIS_Pos (1U)
  184. #define ATIM_CR1_UDIS_Msk (0x1U << ATIM_CR1_UDIS_Pos)
  185. #define ATIM_CR1_UDIS ATIM_CR1_UDIS_Msk
  186. #define ATIM_CR1_CEN_Pos (0U)
  187. #define ATIM_CR1_CEN_Msk (0x1U << ATIM_CR1_CEN_Pos)
  188. #define ATIM_CR1_CEN ATIM_CR1_CEN_Msk
  189. #define ATIM_CR2_OISN_Pos (9U)
  190. #define ATIM_CR2_OISN_Msk (0x1U << ATIM_CR2_OISN_Pos)
  191. #define ATIM_CR2_OISN ATIM_CR2_OISN_Msk
  192. #define ATIM_CR2_OIS_Pos (8U)
  193. #define ATIM_CR2_OIS_Msk (0x1U << ATIM_CR2_OIS_Pos)
  194. #define ATIM_CR2_OIS ATIM_CR2_OIS_Msk
  195. #define ATIM_CR2_TI1S_Pos (7U)
  196. #define ATIM_CR2_TI1S_Msk (0x1U << ATIM_CR2_TI1S_Pos)
  197. #define ATIM_CR2_TI1S ATIM_CR2_TI1S_Msk
  198. #define ATIM_CR2_MMS_Pos (4U)
  199. #define ATIM_CR2_MMS_Msk (0x7U << ATIM_CR2_MMS_Pos)
  200. #define ATIM_CR2_MMS ATIM_CR2_MMS_Msk
  201. #define ATIM_CR2_CCDS_Pos (3U)
  202. #define ATIM_CR2_CCDS_Msk (0x1U << ATIM_CR2_CCDS_Pos)
  203. #define ATIM_CR2_CCDS ATIM_CR2_CCDS_Msk
  204. #define ATIM_CR2_CCUS_Pos (2U)
  205. #define ATIM_CR2_CCUS_Msk (0x1U << ATIM_CR2_CCUS_Pos)
  206. #define ATIM_CR2_CCUS ATIM_CR2_CCUS_Msk
  207. #define ATIM_CR2_CCPC_Pos (0U)
  208. #define ATIM_CR2_CCPC_Msk (0x1U << ATIM_CR2_CCPC_Pos)
  209. #define ATIM_CR2_CCPC ATIM_CR2_CCPC_Msk
  210. #define ATIM_SMCR_ETP_Pos (15U)
  211. #define ATIM_SMCR_ETP_Msk (0x1U << ATIM_SMCR_ETP_Pos)
  212. #define ATIM_SMCR_ETP ATIM_SMCR_ETP_Msk
  213. #define ATIM_SMCR_ECE_Pos (14U)
  214. #define ATIM_SMCR_ECE_Msk (0x1U << ATIM_SMCR_ECE_Pos)
  215. #define ATIM_SMCR_ECE ATIM_SMCR_ECE_Msk
  216. #define ATIM_SMCR_ETPS_Pos (12U)
  217. #define ATIM_SMCR_ETPS_Msk (0x3U << ATIM_SMCR_ETPS_Pos)
  218. #define ATIM_SMCR_ETPS ATIM_SMCR_ETPS_Msk
  219. #define ATIM_SMCR_ETF_Pos (8U)
  220. #define ATIM_SMCR_ETF_Msk (0xfU << ATIM_SMCR_ETF_Pos)
  221. #define ATIM_SMCR_ETF ATIM_SMCR_ETF_Msk
  222. #define ATIM_SMCR_MSM_Pos (7U)
  223. #define ATIM_SMCR_MSM_Msk (0x1U << ATIM_SMCR_MSM_Pos)
  224. #define ATIM_SMCR_MSM ATIM_SMCR_MSM_Msk
  225. #define ATIM_SMCR_TS_Pos (4U)
  226. #define ATIM_SMCR_TS_Msk (0x7U << ATIM_SMCR_TS_Pos)
  227. #define ATIM_SMCR_TS ATIM_SMCR_TS_Msk
  228. #define ATIM_SMCR_SMS_Pos (0U)
  229. #define ATIM_SMCR_SMS_Msk (0x7U << ATIM_SMCR_SMS_Pos)
  230. #define ATIM_SMCR_SMS ATIM_SMCR_SMS_Msk
  231. #define ATIM_DIER_CC1BURSTEN_Pos (16U)
  232. #define ATIM_DIER_CC1BURSTEN_Msk (0x1U << ATIM_DIER_CC1BURSTEN_Pos)
  233. #define ATIM_DIER_CC1BURSTEN ATIM_DIER_CC1BURSTEN_Msk
  234. #define ATIM_DIER_CC2BURSTEN_Pos (17U)
  235. #define ATIM_DIER_CC2BURSTEN_Msk (0x1U << ATIM_DIER_CC2BURSTEN_Pos)
  236. #define ATIM_DIER_CC2BURSTEN ATIM_DIER_CC2BURSTEN_Msk
  237. #define ATIM_DIER_CC3BURSTEN_Pos (18U)
  238. #define ATIM_DIER_CC3BURSTEN_Msk (0x1U << ATIM_DIER_CC3BURSTEN_Pos)
  239. #define ATIM_DIER_CC3BURSTEN ATIM_DIER_CC3BURSTEN_Msk
  240. #define ATIM_DIER_CC4BURSTEN_Pos (19U)
  241. #define ATIM_DIER_CC4BURSTEN_Msk (0x1U << ATIM_DIER_CC4BURSTEN_Pos)
  242. #define ATIM_DIER_CC4BURSTEN ATIM_DIER_CC4BURSTEN_Msk
  243. #define ATIM_DIER_TDE_Pos (14U)
  244. #define ATIM_DIER_TDE_Msk (0x1U << ATIM_DIER_TDE_Pos)
  245. #define ATIM_DIER_TDE ATIM_DIER_TDE_Msk
  246. #define ATIM_DIER_COMDE_Pos (13U)
  247. #define ATIM_DIER_COMDE_Msk (0x1U << ATIM_DIER_COMDE_Pos)
  248. #define ATIM_DIER_COMDE ATIM_DIER_COMDE_Msk
  249. #define ATIM_DIER_CCDE_Pos (9U)
  250. #define ATIM_DIER_CCDE_Msk (0x1U << ATIM_DIER_CCDE_Pos)
  251. #define ATIM_DIER_CCDE ATIM_DIER_CCDE_Msk
  252. #define ATIM_DIER_UDE_Pos (8U)
  253. #define ATIM_DIER_UDE_Msk (0x1U << ATIM_DIER_UDE_Pos)
  254. #define ATIM_DIER_UDE ATIM_DIER_UDE_Msk
  255. #define ATIM_DIER_BIE_Pos (7U)
  256. #define ATIM_DIER_BIE_Msk (0x1U << ATIM_DIER_BIE_Pos)
  257. #define ATIM_DIER_BIE ATIM_DIER_BIE_Msk
  258. #define ATIM_DIER_TIE_Pos (6U)
  259. #define ATIM_DIER_TIE_Msk (0x1U << ATIM_DIER_TIE_Pos)
  260. #define ATIM_DIER_TIE ATIM_DIER_TIE_Msk
  261. #define ATIM_DIER_COMIE_Pos (5U)
  262. #define ATIM_DIER_COMIE_Msk (0x1U << ATIM_DIER_COMIE_Pos)
  263. #define ATIM_DIER_COMIE ATIM_DIER_COMIE_Msk
  264. #define ATIM_DIER_CCIE_Pos (1U)
  265. #define ATIM_DIER_CCIE_Msk (0x1U << ATIM_DIER_CCIE_Pos)
  266. #define ATIM_DIER_CCIE ATIM_DIER_CCIE_Msk
  267. #define ATIM_DIER_UIE_Pos (0U)
  268. #define ATIM_DIER_UIE_Msk (0x1U << ATIM_DIER_UIE_Pos)
  269. #define ATIM_DIER_UIE ATIM_DIER_UIE_Msk
  270. #define ATIM_ISR_CCOF_Pos (9U)
  271. #define ATIM_ISR_CCOF_Msk (0x1U << ATIM_ISR_CCOF_Pos)
  272. #define ATIM_ISR_CCOF ATIM_ISR_CCOF_Msk
  273. #define ATIM_ISR_BIF_Pos (7U)
  274. #define ATIM_ISR_BIF_Msk (0x1U << ATIM_ISR_BIF_Pos)
  275. #define ATIM_ISR_BIF ATIM_ISR_BIF_Msk
  276. #define ATIM_ISR_TIF_Pos (6U)
  277. #define ATIM_ISR_TIF_Msk (0x1U << ATIM_ISR_TIF_Pos)
  278. #define ATIM_ISR_TIF ATIM_ISR_TIF_Msk
  279. #define ATIM_ISR_COMIF_Pos (5U)
  280. #define ATIM_ISR_COMIF_Msk (0x1U << ATIM_ISR_COMIF_Pos)
  281. #define ATIM_ISR_COMIF ATIM_ISR_COMIF_Msk
  282. #define ATIM_ISR_CCIF_Pos (1U)
  283. #define ATIM_ISR_CCIF_Msk (0x1U << ATIM_ISR_CCIF_Pos)
  284. #define ATIM_ISR_CCIF ATIM_ISR_CCIF_Msk
  285. #define ATIM_ISR_UIF_Pos (0U)
  286. #define ATIM_ISR_UIF_Msk (0x1U << ATIM_ISR_UIF_Pos)
  287. #define ATIM_ISR_UIF ATIM_ISR_UIF_Msk
  288. #define ATIM_EGR_BG_Pos (7U)
  289. #define ATIM_EGR_BG_Msk (0x1U << ATIM_EGR_BG_Pos)
  290. #define ATIM_EGR_BG ATIM_EGR_BG_Msk
  291. #define ATIM_EGR_TG_Pos (6U)
  292. #define ATIM_EGR_TG_Msk (0x1U << ATIM_EGR_TG_Pos)
  293. #define ATIM_EGR_TG ATIM_EGR_TG_Msk
  294. #define ATIM_EGR_COMG_Pos (5U)
  295. #define ATIM_EGR_COMG_Msk (0x1U << ATIM_EGR_COMG_Pos)
  296. #define ATIM_EGR_COMG ATIM_EGR_COMG_Msk
  297. #define ATIM_EGR_CCG_Pos (1U)
  298. #define ATIM_EGR_CCG_Msk (0x1U << ATIM_EGR_CCG_Pos)
  299. #define ATIM_EGR_CCG ATIM_EGR_CCG_Msk
  300. #define ATIM_EGR_UG_Pos (0U)
  301. #define ATIM_EGR_UG_Msk (0x1U << ATIM_EGR_UG_Pos)
  302. #define ATIM_EGR_UG ATIM_EGR_UG_Msk
  303. #define ATIM_DCR_DBL_Pos (8U)
  304. #define ATIM_DCR_DBL_Msk (0x1fU << ATIM_DCR_DBL_Pos)
  305. #define ATIM_DCR_DBL ATIM_DCR_DBL_Msk
  306. #define ATIM_DCR_DBA_Pos (0U)
  307. #define ATIM_DCR_DBA_Msk (0x1fU << ATIM_DCR_DBA_Pos)
  308. #define ATIM_DCR_DBA ATIM_DCR_DBA_Msk
  309. #define ATIM_CCMR_OCCE_Pos (7U)
  310. #define ATIM_CCMR_OCCE_Msk (0x1U << ATIM_CCMR_OCCE_Pos)
  311. #define ATIM_CCMR_OCCE ATIM_CCMR_OCCE_Msk
  312. #define ATIM_CCMR_OCM_Pos (4U)
  313. #define ATIM_CCMR_OCM_Msk (0x7U << ATIM_CCMR_OCM_Pos)
  314. #define ATIM_CCMR_OCM ATIM_CCMR_OCM_Msk
  315. #define ATIM_CCMR_OCPE_Pos (3U)
  316. #define ATIM_CCMR_OCPE_Msk (0x1U << ATIM_CCMR_OCPE_Pos)
  317. #define ATIM_CCMR_OCPE ATIM_CCMR_OCPE_Msk
  318. #define ATIM_CCMR_OCFE_Pos (2U)
  319. #define ATIM_CCMR_OCFE_Msk (0x1U << ATIM_CCMR_OCFE_Pos)
  320. #define ATIM_CCMR_OCFE ATIM_CCMR_OCFE_Msk
  321. #define ATIM_CCMR_ICF_Pos (4U)
  322. #define ATIM_CCMR_ICF_Msk (0xfU << ATIM_CCMR_ICF_Pos)
  323. #define ATIM_CCMR_ICF ATIM_CCMR_ICF_Msk
  324. #define ATIM_CCMR_ICPSC_Pos (2U)
  325. #define ATIM_CCMR_ICPSC_Msk (0x3U << ATIM_CCMR_ICPSC_Pos)
  326. #define ATIM_CCMR_ICPSC ATIM_CCMR_ICPSC_Msk
  327. #define ATIM_CCMR_CCS_Pos (0U)
  328. #define ATIM_CCMR_CCS_Msk (0x3U << ATIM_CCMR_CCS_Pos)
  329. #define ATIM_CCMR_CCS ATIM_CCMR_CCS_Msk
  330. #define ATIM_CCER_CCNP_Pos (3U)
  331. #define ATIM_CCER_CCNP_Msk (0x1U << ATIM_CCER_CCNP_Pos)
  332. #define ATIM_CCER_CCNP ATIM_CCER_CCNP_Msk
  333. #define ATIM_CCER_CCNE_Pos (2U)
  334. #define ATIM_CCER_CCNE_Msk (0x1U << ATIM_CCER_CCNE_Pos)
  335. #define ATIM_CCER_CCNE ATIM_CCER_CCNE_Msk
  336. #define ATIM_CCER_CCOP_Pos (1U)
  337. #define ATIM_CCER_CCOP_Msk (0x1U << ATIM_CCER_CCOP_Pos)
  338. #define ATIM_CCER_CCOP ATIM_CCER_CCOP_Msk
  339. #define ATIM_CCER_CCIP_Pos (1U)
  340. #define ATIM_CCER_CCIP_Msk (0x1U << ATIM_CCER_CCIP_Pos)
  341. #define ATIM_CCER_CCIP ATIM_CCER_CCIP_Msk
  342. #define ATIM_CCER_CCOE_Pos (0U)
  343. #define ATIM_CCER_CCOE_Msk (0x1U << ATIM_CCER_CCOE_Pos)
  344. #define ATIM_CCER_CCOE ATIM_CCER_CCOE_Msk
  345. #define ATIM_CCER_CCIE_Pos (0U)
  346. #define ATIM_CCER_CCIE_Msk (0x1U << ATIM_CCER_CCIE_Pos)
  347. #define ATIM_CCER_CCIE ATIM_CCER_CCIE_Msk
  348. #define ATIM_BDTR_MOE_Pos (15U)
  349. #define ATIM_BDTR_MOE_Msk (0x1U << ATIM_BDTR_MOE_Pos)
  350. #define ATIM_BDTR_MOE ATIM_BDTR_MOE_Msk
  351. #define ATIM_BDTR_AOE_Pos (14U)
  352. #define ATIM_BDTR_AOE_Msk (0x1U << ATIM_BDTR_AOE_Pos)
  353. #define ATIM_BDTR_AOE ATIM_BDTR_AOE_Msk
  354. #define ATIM_BDTR_BKP_Pos (13U)
  355. #define ATIM_BDTR_BKP_Msk (0x1U << ATIM_BDTR_BKP_Pos)
  356. #define ATIM_BDTR_BKP ATIM_BDTR_BKP_Msk
  357. #define ATIM_BDTR_BKE_Pos (12U)
  358. #define ATIM_BDTR_BKE_Msk (0x1U << ATIM_BDTR_BKE_Pos)
  359. #define ATIM_BDTR_BKE ATIM_BDTR_BKE_Msk
  360. #define ATIM_BDTR_OSSR_Pos (11U)
  361. #define ATIM_BDTR_OSSR_Msk (0x1U << ATIM_BDTR_OSSR_Pos)
  362. #define ATIM_BDTR_OSSR ATIM_BDTR_OSSR_Msk
  363. #define ATIM_BDTR_OSSI_Pos (10U)
  364. #define ATIM_BDTR_OSSI_Msk (0x1U << ATIM_BDTR_OSSI_Pos)
  365. #define ATIM_BDTR_OSSI ATIM_BDTR_OSSI_Msk
  366. #define ATIM_BDTR_LOCK_Pos (8U)
  367. #define ATIM_BDTR_LOCK_Msk (0x3U << ATIM_BDTR_LOCK_Pos)
  368. #define ATIM_BDTR_LOCK ATIM_BDTR_LOCK_Msk
  369. #define ATIM_BDTR_DTG_Pos (0U)
  370. #define ATIM_BDTR_DTG_Msk (0xffU << ATIM_BDTR_DTG_Pos)
  371. #define ATIM_BDTR_DTG ATIM_BDTR_DTG_Msk
  372. #define ATIM_BKCR_BRK1GATE_Pos (8U)
  373. #define ATIM_BKCR_BRK1GATE_Msk (0x1U << ATIM_BKCR_BRK1GATE_Pos)
  374. #define ATIM_BKCR_BRK1GATE ATIM_BKCR_BRK1GATE_Msk
  375. #define ATIM_BKCR_BRK2GATE_Pos (9U)
  376. #define ATIM_BKCR_BRK2GATE_Msk (0x1U << ATIM_BKCR_BRK2GATE_Pos)
  377. #define ATIM_BKCR_BRK2GATE ATIM_BKCR_BRK2GATE_Msk
  378. #define ATIM_BKCR_BRKF_Pos (4U)
  379. #define ATIM_BKCR_BRKF_Msk (0xfU << ATIM_BKCR_BRKF_Pos)
  380. #define ATIM_BKCR_BRKF ATIM_BKCR_BRKF_Msk
  381. #define ATIM_BKCR_BRKCOMB_Pos (3U)
  382. #define ATIM_BKCR_BRKCOMB_Msk (0x1U << ATIM_BKCR_BRKCOMB_Pos)
  383. #define ATIM_BKCR_BRKCOMB ATIM_BKCR_BRKCOMB_Msk
  384. #define ATIM_BKCR_HFDET_BRKEN_Pos (2U)
  385. #define ATIM_BKCR_HFDET_BRKEN_Msk (0x1U << ATIM_BKCR_HFDET_BRKEN_Pos)
  386. #define ATIM_BKCR_HFDET_BRKEN ATIM_BKCR_HFDET_BRKEN_Msk
  387. #define ATIM_BKCR_SVD_BRKEN_Pos (1U)
  388. #define ATIM_BKCR_SVD_BRKEN_Msk (0x1U << ATIM_BKCR_SVD_BRKEN_Pos)
  389. #define ATIM_BKCR_SVD_BRKEN ATIM_BKCR_SVD_BRKEN_Msk
  390. #define ATIM_BKCR_COMP_BRKEN_Pos (0U)
  391. #define ATIM_BKCR_COMP_BRKEN_Msk (0x1U << ATIM_BKCR_COMP_BRKEN_Pos)
  392. #define ATIM_BKCR_COMP_BRKEN ATIM_BKCR_COMP_BRKEN_Msk
  393. #define FL_ATIM_CHANNEL_1 0x0U
  394. #define FL_ATIM_CHANNEL_2 0x1U
  395. #define FL_ATIM_CHANNEL_3 0x2U
  396. #define FL_ATIM_CHANNEL_4 0x3U
  397. #define FL_ATIM_CLK_DIVISION_DIV1 (0x0U << ATIM_CR1_CKD_Pos)
  398. #define FL_ATIM_CLK_DIVISION_DIV2 (0x1U << ATIM_CR1_CKD_Pos)
  399. #define FL_ATIM_CLK_DIVISION_DIV4 (0x2U << ATIM_CR1_CKD_Pos)
  400. #define FL_ATIM_COUNTER_ALIGNED_EDGE (0x0U << ATIM_CR1_CMS_Pos)
  401. #define FL_ATIM_COUNTER_ALIGNED_CENTER_DOWN (0x1U << ATIM_CR1_CMS_Pos)
  402. #define FL_ATIM_COUNTER_ALIGNED_CENTER_UP (0x2U << ATIM_CR1_CMS_Pos)
  403. #define FL_ATIM_COUNTER_ALIGNED_CENTER_UP_DOWN (0x3U << ATIM_CR1_CMS_Pos)
  404. #define FL_ATIM_COUNTER_DIR_UP (0x0U << ATIM_CR1_DIR_Pos)
  405. #define FL_ATIM_COUNTER_DIR_DOWN (0x1U << ATIM_CR1_DIR_Pos)
  406. #define FL_ATIM_ONE_PULSE_MODE_CONTINUOUS (0x0U << ATIM_CR1_OPM_Pos)
  407. #define FL_ATIM_ONE_PULSE_MODE_SINGLE (0x1U << ATIM_CR1_OPM_Pos)
  408. #define FL_ATIM_UPDATE_SOURCE_REGULAR (0x0U << ATIM_CR1_URS_Pos)
  409. #define FL_ATIM_UPDATE_SOURCE_COUNTER (0x1U << ATIM_CR1_URS_Pos)
  410. #define FL_ATIM_OCN_IDLE_STATE_LOW (0x0U << ATIM_CR2_OISN_Pos)
  411. #define FL_ATIM_OCN_IDLE_STATE_HIGH (0x1U << ATIM_CR2_OISN_Pos)
  412. #define FL_ATIM_OC_IDLE_STATE_LOW (0x0U << ATIM_CR2_OIS_Pos)
  413. #define FL_ATIM_OC_IDLE_STATE_HIGH (0x1U << ATIM_CR2_OIS_Pos)
  414. #define FL_ATIM_TRGO_RESET (0x0U << ATIM_CR2_MMS_Pos)
  415. #define FL_ATIM_TRGO_ENABLE (0x1U << ATIM_CR2_MMS_Pos)
  416. #define FL_ATIM_TRGO_UPDATE (0x2U << ATIM_CR2_MMS_Pos)
  417. #define FL_ATIM_TRGO_CC1IF (0x3U << ATIM_CR2_MMS_Pos)
  418. #define FL_ATIM_TRGO_OC1REF (0x4U << ATIM_CR2_MMS_Pos)
  419. #define FL_ATIM_TRGO_OC2REF (0x5U << ATIM_CR2_MMS_Pos)
  420. #define FL_ATIM_TRGO_OC3REF (0x6U << ATIM_CR2_MMS_Pos)
  421. #define FL_ATIM_TRGO_OC4REF (0x7U << ATIM_CR2_MMS_Pos)
  422. #define FL_ATIM_DMA_REQ_CC (0x0U << ATIM_CR2_CCDS_Pos)
  423. #define FL_ATIM_DMA_REQ_UPDATE (0x1U << ATIM_CR2_CCDS_Pos)
  424. #define FL_ATIM_UPDATE_SOURCE_COMG_ONLY (0x0U << ATIM_CR2_CCUS_Pos)
  425. #define FL_ATIM_UPDATE_SOURCE_COMG_AND_TRGI (0x1U << ATIM_CR2_CCUS_Pos)
  426. #define FL_ATIM_ETR_POLARITY_NORMAL (0x0U << ATIM_SMCR_ETP_Pos)
  427. #define FL_ATIM_ETR_POLARITY_INVERT (0x1U << ATIM_SMCR_ETP_Pos)
  428. #define FL_ATIM_ETR_PSC_DIV1 (0x0U << ATIM_SMCR_ETPS_Pos)
  429. #define FL_ATIM_ETR_PSC_DIV2 (0x1U << ATIM_SMCR_ETPS_Pos)
  430. #define FL_ATIM_ETR_PSC_DIV4 (0x2U << ATIM_SMCR_ETPS_Pos)
  431. #define FL_ATIM_ETR_PSC_DIV8 (0x3U << ATIM_SMCR_ETPS_Pos)
  432. #define FL_ATIM_ETR_FILTER_DIV1 (0x0U << ATIM_SMCR_ETF_Pos)
  433. #define FL_ATIM_ETR_FILTER_DIV1_N2 (0x1U << ATIM_SMCR_ETF_Pos)
  434. #define FL_ATIM_ETR_FILTER_DIV1_N4 (0x2U << ATIM_SMCR_ETF_Pos)
  435. #define FL_ATIM_ETR_FILTER_DIV1_N8 (0x3U << ATIM_SMCR_ETF_Pos)
  436. #define FL_ATIM_ETR_FILTER_DIV2_N6 (0x4U << ATIM_SMCR_ETF_Pos)
  437. #define FL_ATIM_ETR_FILTER_DIV2_N8 (0x5U << ATIM_SMCR_ETF_Pos)
  438. #define FL_ATIM_ETR_FILTER_DIV4_N6 (0x6U << ATIM_SMCR_ETF_Pos)
  439. #define FL_ATIM_ETR_FILTER_DIV4_N8 (0x7U << ATIM_SMCR_ETF_Pos)
  440. #define FL_ATIM_ETR_FILTER_DIV8_N6 (0x8U << ATIM_SMCR_ETF_Pos)
  441. #define FL_ATIM_ETR_FILTER_DIV8_N8 (0x9U << ATIM_SMCR_ETF_Pos)
  442. #define FL_ATIM_ETR_FILTER_DIV16_N5 (0xaU << ATIM_SMCR_ETF_Pos)
  443. #define FL_ATIM_ETR_FILTER_DIV16_N6 (0xbU << ATIM_SMCR_ETF_Pos)
  444. #define FL_ATIM_ETR_FILTER_DIV16_N8 (0xcU << ATIM_SMCR_ETF_Pos)
  445. #define FL_ATIM_ETR_FILTER_DIV32_N5 (0xdU << ATIM_SMCR_ETF_Pos)
  446. #define FL_ATIM_ETR_FILTER_DIV32_N6 (0xeU << ATIM_SMCR_ETF_Pos)
  447. #define FL_ATIM_ETR_FILTER_DIV32_N8 (0xfU << ATIM_SMCR_ETF_Pos)
  448. #define FL_ATIM_TRGI_ITR0 (0x0U << ATIM_SMCR_TS_Pos)
  449. #define FL_ATIM_TRGI_ITR1 (0x1U << ATIM_SMCR_TS_Pos)
  450. #define FL_ATIM_TRGI_ITR2 (0x2U << ATIM_SMCR_TS_Pos)
  451. #define FL_ATIM_TRGI_ITR3 (0x3U << ATIM_SMCR_TS_Pos)
  452. #define FL_ATIM_TRGI_TI1F_EDGE (0x4U << ATIM_SMCR_TS_Pos)
  453. #define FL_ATIM_TRGI_TI1FP1 (0x5U << ATIM_SMCR_TS_Pos)
  454. #define FL_ATIM_TRGI_TI2FP2 (0x6U << ATIM_SMCR_TS_Pos)
  455. #define FL_ATIM_TRGI_ETRF (0x7U << ATIM_SMCR_TS_Pos)
  456. #define FL_ATIM_SLAVE_MODE_PROHIBITED (0x0U << ATIM_SMCR_SMS_Pos)
  457. #define FL_ATIM_SLAVE_MODE_ENCODER_X2_TI1 (0x1U << ATIM_SMCR_SMS_Pos)
  458. #define FL_ATIM_SLAVE_MODE_ENCODER_X2_TI2 (0x2U << ATIM_SMCR_SMS_Pos)
  459. #define FL_ATIM_SLAVE_MODE_ENCODER_X4_TI1TI2 (0x3U << ATIM_SMCR_SMS_Pos)
  460. #define FL_ATIM_SLAVE_MODE_TRGI_RISE_RST (0x4U << ATIM_SMCR_SMS_Pos)
  461. #define FL_ATIM_SLAVE_MODE_TRGI_HIGH_RUN (0x5U << ATIM_SMCR_SMS_Pos)
  462. #define FL_ATIM_SLAVE_MODE_TRGI_RISE_RUN (0x6U << ATIM_SMCR_SMS_Pos)
  463. #define FL_ATIM_SLAVE_MODE_TRGI_CLK (0x7U << ATIM_SMCR_SMS_Pos)
  464. #define FL_ATIM_DMA_BURST_LENGTH_1 (0x0U << ATIM_DCR_DBL_Pos)
  465. #define FL_ATIM_DMA_BURST_LENGTH_2 (0x1U << ATIM_DCR_DBL_Pos)
  466. #define FL_ATIM_DMA_BURST_LENGTH_3 (0x2U << ATIM_DCR_DBL_Pos)
  467. #define FL_ATIM_DMA_BURST_LENGTH_4 (0x3U << ATIM_DCR_DBL_Pos)
  468. #define FL_ATIM_DMA_BURST_LENGTH_5 (0x4U << ATIM_DCR_DBL_Pos)
  469. #define FL_ATIM_DMA_BURST_LENGTH_6 (0x5U << ATIM_DCR_DBL_Pos)
  470. #define FL_ATIM_DMA_BURST_LENGTH_7 (0x6U << ATIM_DCR_DBL_Pos)
  471. #define FL_ATIM_DMA_BURST_LENGTH_8 (0x7U << ATIM_DCR_DBL_Pos)
  472. #define FL_ATIM_DMA_BURST_LENGTH_9 (0x8U << ATIM_DCR_DBL_Pos)
  473. #define FL_ATIM_DMA_BURST_LENGTH_10 (0x9U << ATIM_DCR_DBL_Pos)
  474. #define FL_ATIM_DMA_BURST_LENGTH_11 (0xaU << ATIM_DCR_DBL_Pos)
  475. #define FL_ATIM_DMA_BURST_LENGTH_12 (0xbU << ATIM_DCR_DBL_Pos)
  476. #define FL_ATIM_DMA_BURST_LENGTH_13 (0xcU << ATIM_DCR_DBL_Pos)
  477. #define FL_ATIM_DMA_BURST_LENGTH_14 (0xdU << ATIM_DCR_DBL_Pos)
  478. #define FL_ATIM_DMA_BURST_LENGTH_15 (0xeU << ATIM_DCR_DBL_Pos)
  479. #define FL_ATIM_DMA_BURST_LENGTH_16 (0xfU << ATIM_DCR_DBL_Pos)
  480. #define FL_ATIM_DMA_BURST_LENGTH_17 (0x10U << ATIM_DCR_DBL_Pos)
  481. #define FL_ATIM_DMA_BURST_LENGTH_18 (0x11U << ATIM_DCR_DBL_Pos)
  482. #define FL_ATIM_DMA_BURST_ADDR_CR1 (0x0U << ATIM_DCR_DBA_Pos)
  483. #define FL_ATIM_DMA_BURST_ADDR_CR2 (0x1U << ATIM_DCR_DBA_Pos)
  484. #define FL_ATIM_DMA_BURST_ADDR_SMCR (0x2U << ATIM_DCR_DBA_Pos)
  485. #define FL_ATIM_DMA_BURST_ADDR_DIER (0x3U << ATIM_DCR_DBA_Pos)
  486. #define FL_ATIM_DMA_BURST_ADDR_SR (0x4U << ATIM_DCR_DBA_Pos)
  487. #define FL_ATIM_DMA_BURST_ADDR_EGR (0x5U << ATIM_DCR_DBA_Pos)
  488. #define FL_ATIM_DMA_BURST_ADDR_CCMR1 (0x6U << ATIM_DCR_DBA_Pos)
  489. #define FL_ATIM_DMA_BURST_ADDR_CCMR2 (0x7U << ATIM_DCR_DBA_Pos)
  490. #define FL_ATIM_DMA_BURST_ADDR_CCER (0x8U << ATIM_DCR_DBA_Pos)
  491. #define FL_ATIM_DMA_BURST_ADDR_CNT (0x9U << ATIM_DCR_DBA_Pos)
  492. #define FL_ATIM_DMA_BURST_ADDR_PSC (0xaU << ATIM_DCR_DBA_Pos)
  493. #define FL_ATIM_DMA_BURST_ADDR_ARR (0xbU << ATIM_DCR_DBA_Pos)
  494. #define FL_ATIM_DMA_BURST_ADDR_RCR (0xcU << ATIM_DCR_DBA_Pos)
  495. #define FL_ATIM_DMA_BURST_ADDR_CCR1 (0xdU << ATIM_DCR_DBA_Pos)
  496. #define FL_ATIM_DMA_BURST_ADDR_CCR2 (0xeU << ATIM_DCR_DBA_Pos)
  497. #define FL_ATIM_DMA_BURST_ADDR_CCR3 (0xfU << ATIM_DCR_DBA_Pos)
  498. #define FL_ATIM_DMA_BURST_ADDR_CCR4 (0x10U << ATIM_DCR_DBA_Pos)
  499. #define FL_ATIM_DMA_BURST_ADDR_BDTR (0x11U << ATIM_DCR_DBA_Pos)
  500. #define FL_ATIM_OC_MODE_FROZEN (0x0U << ATIM_CCMR_OCM_Pos)
  501. #define FL_ATIM_OC_MODE_ACTIVE (0x1U << ATIM_CCMR_OCM_Pos)
  502. #define FL_ATIM_OC_MODE_INACTIVE (0x2U << ATIM_CCMR_OCM_Pos)
  503. #define FL_ATIM_OC_MODE_TOGGLE (0x3U << ATIM_CCMR_OCM_Pos)
  504. #define FL_ATIM_OC_MODE_FORCED_INACTIVE (0x4U << ATIM_CCMR_OCM_Pos)
  505. #define FL_ATIM_OC_MODE_FORCED_ACTIVE (0x5U << ATIM_CCMR_OCM_Pos)
  506. #define FL_ATIM_OC_MODE_PWM1 (0x6U << ATIM_CCMR_OCM_Pos)
  507. #define FL_ATIM_OC_MODE_PWM2 (0x7U << ATIM_CCMR_OCM_Pos)
  508. #define FL_ATIM_IC_FILTER_DIV1 (0x0U << ATIM_CCMR_ICF_Pos)
  509. #define FL_ATIM_IC_FILTER_DIV1_N2 (0x1U << ATIM_CCMR_ICF_Pos)
  510. #define FL_ATIM_IC_FILTER_DIV1_N4 (0x2U << ATIM_CCMR_ICF_Pos)
  511. #define FL_ATIM_IC_FILTER_DIV1_N8 (0x3U << ATIM_CCMR_ICF_Pos)
  512. #define FL_ATIM_IC_FILTER_DIV2_N6 (0x4U << ATIM_CCMR_ICF_Pos)
  513. #define FL_ATIM_IC_FILTER_DIV2_N8 (0x5U << ATIM_CCMR_ICF_Pos)
  514. #define FL_ATIM_IC_FILTER_DIV4_N6 (0x6U << ATIM_CCMR_ICF_Pos)
  515. #define FL_ATIM_IC_FILTER_DIV4_N8 (0x7U << ATIM_CCMR_ICF_Pos)
  516. #define FL_ATIM_IC_FILTER_DIV8_N6 (0x8U << ATIM_CCMR_ICF_Pos)
  517. #define FL_ATIM_IC_FILTER_DIV8_N8 (0x9U << ATIM_CCMR_ICF_Pos)
  518. #define FL_ATIM_IC_FILTER_DIV16_N5 (0xaU << ATIM_CCMR_ICF_Pos)
  519. #define FL_ATIM_IC_FILTER_DIV16_N6 (0xbU << ATIM_CCMR_ICF_Pos)
  520. #define FL_ATIM_IC_FILTER_DIV16_N8 (0xcU << ATIM_CCMR_ICF_Pos)
  521. #define FL_ATIM_IC_FILTER_DIV32_N5 (0xdU << ATIM_CCMR_ICF_Pos)
  522. #define FL_ATIM_IC_FILTER_DIV32_N6 (0xeU << ATIM_CCMR_ICF_Pos)
  523. #define FL_ATIM_IC_FILTER_DIV32_N8 (0xfU << ATIM_CCMR_ICF_Pos)
  524. #define FL_ATIM_IC_PSC_DIV1 (0x0U << ATIM_CCMR_ICPSC_Pos)
  525. #define FL_ATIM_IC_PSC_DIV2 (0x1U << ATIM_CCMR_ICPSC_Pos)
  526. #define FL_ATIM_IC_PSC_DIV4 (0x2U << ATIM_CCMR_ICPSC_Pos)
  527. #define FL_ATIM_IC_PSC_DIV8 (0x3U << ATIM_CCMR_ICPSC_Pos)
  528. #define FL_ATIM_CHANNEL_MODE_OUTPUT (0x0U << ATIM_CCMR_CCS_Pos)
  529. #define FL_ATIM_CHANNEL_MODE_INPUT_NORMAL (0x1U << ATIM_CCMR_CCS_Pos)
  530. #define FL_ATIM_CHANNEL_MODE_INPUT_CROSSOVER (0x2U << ATIM_CCMR_CCS_Pos)
  531. #define FL_ATIM_CHANNEL_MODE_INPUT_TRC (0x3U << ATIM_CCMR_CCS_Pos)
  532. #define FL_ATIM_OCN_POLARITY_NORMAL (0x0U << ATIM_CCER_CCNP_Pos)
  533. #define FL_ATIM_OCN_POLARITY_INVERT (0x1U << ATIM_CCER_CCNP_Pos)
  534. #define FL_ATIM_OC_POLARITY_NORMAL (0x0U << ATIM_CCER_CCOP_Pos)
  535. #define FL_ATIM_OC_POLARITY_INVERT (0x1U << ATIM_CCER_CCOP_Pos)
  536. #define FL_ATIM_IC_POLARITY_NORMAL (0x0U << ATIM_CCER_CCIP_Pos)
  537. #define FL_ATIM_IC_POLARITY_INVERT (0x1U << ATIM_CCER_CCIP_Pos)
  538. #define FL_ATIM_BREAK_POLARITY_LOW (0x0U << ATIM_BDTR_BKP_Pos)
  539. #define FL_ATIM_BREAK_POLARITY_HIGH (0x1U << ATIM_BDTR_BKP_Pos)
  540. #define FL_ATIM_OSSR_DISABLE (0x0U << ATIM_BDTR_OSSR_Pos)
  541. #define FL_ATIM_OSSR_ENABLE (0x1U << ATIM_BDTR_OSSR_Pos)
  542. #define FL_ATIM_OSSI_DISABLE (0x0U << ATIM_BDTR_OSSI_Pos)
  543. #define FL_ATIM_OSSI_ENABLE (0x1U << ATIM_BDTR_OSSI_Pos)
  544. #define FL_ATIM_LOCK_LEVEL_OFF (0x0U << ATIM_BDTR_LOCK_Pos)
  545. #define FL_ATIM_LOCK_LEVEL_1 (0x1U << ATIM_BDTR_LOCK_Pos)
  546. #define FL_ATIM_LOCK_LEVEL_2 (0x2U << ATIM_BDTR_LOCK_Pos)
  547. #define FL_ATIM_LOCK_LEVEL_3 (0x3U << ATIM_BDTR_LOCK_Pos)
  548. #define FL_ATIM_BREAK1_GATE_LOW (0x0U << ATIM_BKCR_BRK1GATE_Pos)
  549. #define FL_ATIM_BREAK1_GATE_AUTO (0x1U << ATIM_BKCR_BRK1GATE_Pos)
  550. #define FL_ATIM_BREAK2_GATE_LOW (0x0U << ATIM_BKCR_BRK2GATE_Pos)
  551. #define FL_ATIM_BREAK2_GATE_AUTO (0x1U << ATIM_BKCR_BRK2GATE_Pos)
  552. #define FL_ATIM_BREAK_FILTER_DIV1 (0x0U << ATIM_BKCR_BRKF_Pos)
  553. #define FL_ATIM_BREAK_FILTER_DIV1_N2 (0x1U << ATIM_BKCR_BRKF_Pos)
  554. #define FL_ATIM_BREAK_FILTER_DIV1_N4 (0x2U << ATIM_BKCR_BRKF_Pos)
  555. #define FL_ATIM_BREAK_FILTER_DIV1_N8 (0x3U << ATIM_BKCR_BRKF_Pos)
  556. #define FL_ATIM_BREAK_FILTER_DIV2_N6 (0x4U << ATIM_BKCR_BRKF_Pos)
  557. #define FL_ATIM_BREAK_FILTER_DIV2_N8 (0x5U << ATIM_BKCR_BRKF_Pos)
  558. #define FL_ATIM_BREAK_FILTER_DIV4_N6 (0x6U << ATIM_BKCR_BRKF_Pos)
  559. #define FL_ATIM_BREAK_FILTER_DIV4_N8 (0x7U << ATIM_BKCR_BRKF_Pos)
  560. #define FL_ATIM_BREAK_FILTER_DIV8_N6 (0x8U << ATIM_BKCR_BRKF_Pos)
  561. #define FL_ATIM_BREAK_FILTER_DIV8_N8 (0x9U << ATIM_BKCR_BRKF_Pos)
  562. #define FL_ATIM_BREAK_FILTER_DIV16_N5 (0xaU << ATIM_BKCR_BRKF_Pos)
  563. #define FL_ATIM_BREAK_FILTER_DIV16_N6 (0xbU << ATIM_BKCR_BRKF_Pos)
  564. #define FL_ATIM_BREAK_FILTER_DIV16_N8 (0xcU << ATIM_BKCR_BRKF_Pos)
  565. #define FL_ATIM_BREAK_FILTER_DIV32_N5 (0xdU << ATIM_BKCR_BRKF_Pos)
  566. #define FL_ATIM_BREAK_FILTER_DIV32_N6 (0xeU << ATIM_BKCR_BRKF_Pos)
  567. #define FL_ATIM_BREAK_FILTER_DIV32_N8 (0xfU << ATIM_BKCR_BRKF_Pos)
  568. #define FL_ATIM_BREAK_COMBINATION_OR (0x0U << ATIM_BKCR_BRKCOMB_Pos)
  569. #define FL_ATIM_BREAK_COMBINATION_AND (0x1U << ATIM_BKCR_BRKCOMB_Pos)
  570. /**
  571. * @}
  572. */
  573. /* Exported functions ---------------------------------------------------------------------------------*/
  574. /** @defgroup ATIM_FL_Exported_Functions ATIM Exported Functions
  575. * @{
  576. */
  577. /**
  578. * @brief 设置时钟分频因子
  579. * @rmtoll CR1 CKD FL_ATIM_SetClockDivision
  580. * @param TIMx TIM instance
  581. * @param div This parameter can be one of the following values:
  582. * @arg @ref FL_ATIM_CLK_DIVISION_DIV1
  583. * @arg @ref FL_ATIM_CLK_DIVISION_DIV2
  584. * @arg @ref FL_ATIM_CLK_DIVISION_DIV4
  585. * @retval None
  586. */
  587. __STATIC_INLINE void FL_ATIM_SetClockDivision(ATIM_Type *TIMx, uint32_t div)
  588. {
  589. MODIFY_REG(TIMx->CR1, ATIM_CR1_CKD_Msk, div);
  590. }
  591. /**
  592. * @brief 读取时钟分频因子
  593. * @rmtoll CR1 CKD FL_ATIM_GetClockDivision
  594. * @param TIMx TIM instance
  595. * @retval Returned value can be one of the following values:
  596. * @arg @ref FL_ATIM_CLK_DIVISION_DIV1
  597. * @arg @ref FL_ATIM_CLK_DIVISION_DIV2
  598. * @arg @ref FL_ATIM_CLK_DIVISION_DIV4
  599. */
  600. __STATIC_INLINE uint32_t FL_ATIM_GetClockDivision(ATIM_Type *TIMx)
  601. {
  602. return (uint32_t)(READ_BIT(TIMx->CR1, ATIM_CR1_CKD_Msk));
  603. }
  604. /**
  605. * @brief 自动重装载使能
  606. * @rmtoll CR1 ARPE FL_ATIM_EnableARRPreload
  607. * @param TIMx TIM instance
  608. * @retval None
  609. */
  610. __STATIC_INLINE void FL_ATIM_EnableARRPreload(ATIM_Type *TIMx)
  611. {
  612. SET_BIT(TIMx->CR1, ATIM_CR1_ARPE_Msk);
  613. }
  614. /**
  615. * @brief 获取自动重装载使能状态
  616. * @rmtoll CR1 ARPE FL_ATIM_IsEnabledARRPreload
  617. * @param TIMx TIM instance
  618. * @retval State of bit (1 or 0).
  619. */
  620. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledARRPreload(ATIM_Type *TIMx)
  621. {
  622. return (uint32_t)(READ_BIT(TIMx->CR1, ATIM_CR1_ARPE_Msk) == ATIM_CR1_ARPE_Msk);
  623. }
  624. /**
  625. * @brief 自动重装载禁用
  626. * @rmtoll CR1 ARPE FL_ATIM_DisableARRPreload
  627. * @param TIMx TIM instance
  628. * @retval None
  629. */
  630. __STATIC_INLINE void FL_ATIM_DisableARRPreload(ATIM_Type *TIMx)
  631. {
  632. CLEAR_BIT(TIMx->CR1, ATIM_CR1_ARPE_Msk);
  633. }
  634. /**
  635. * @brief 计数器对齐模式设置
  636. * @rmtoll CR1 CMS FL_ATIM_SetCounterAlignedMode
  637. * @param TIMx TIM instance
  638. * @param mode This parameter can be one of the following values:
  639. * @arg @ref FL_ATIM_COUNTER_ALIGNED_EDGE
  640. * @arg @ref FL_ATIM_COUNTER_ALIGNED_CENTER_DOWN
  641. * @arg @ref FL_ATIM_COUNTER_ALIGNED_CENTER_UP
  642. * @arg @ref FL_ATIM_COUNTER_ALIGNED_CENTER_UP_DOWN
  643. * @retval None
  644. */
  645. __STATIC_INLINE void FL_ATIM_SetCounterAlignedMode(ATIM_Type *TIMx, uint32_t mode)
  646. {
  647. MODIFY_REG(TIMx->CR1, ATIM_CR1_CMS_Msk, mode);
  648. }
  649. /**
  650. * @brief 读取计数器对齐模式
  651. * @rmtoll CR1 CMS FL_ATIM_GetCounterAlignedMode
  652. * @param TIMx TIM instance
  653. * @retval Returned value can be one of the following values:
  654. * @arg @ref FL_ATIM_COUNTER_ALIGNED_EDGE
  655. * @arg @ref FL_ATIM_COUNTER_ALIGNED_CENTER_DOWN
  656. * @arg @ref FL_ATIM_COUNTER_ALIGNED_CENTER_UP
  657. * @arg @ref FL_ATIM_COUNTER_ALIGNED_CENTER_UP_DOWN
  658. */
  659. __STATIC_INLINE uint32_t FL_ATIM_GetCounterAlignedMode(ATIM_Type *TIMx)
  660. {
  661. return (uint32_t)(READ_BIT(TIMx->CR1, ATIM_CR1_CMS_Msk));
  662. }
  663. /**
  664. * @brief 设置记数方向
  665. * @rmtoll CR1 DIR FL_ATIM_SetCounterDirection
  666. * @param TIMx TIM instance
  667. * @param dir This parameter can be one of the following values:
  668. * @arg @ref FL_ATIM_COUNTER_DIR_UP
  669. * @arg @ref FL_ATIM_COUNTER_DIR_DOWN
  670. * @retval None
  671. */
  672. __STATIC_INLINE void FL_ATIM_SetCounterDirection(ATIM_Type *TIMx, uint32_t dir)
  673. {
  674. MODIFY_REG(TIMx->CR1, ATIM_CR1_DIR_Msk, dir);
  675. }
  676. /**
  677. * @brief 读取记数方向
  678. * @rmtoll CR1 DIR FL_ATIM_GetCounterDirection
  679. * @param TIMx TIM instance
  680. * @retval Returned value can be one of the following values:
  681. * @arg @ref FL_ATIM_COUNTER_DIR_UP
  682. * @arg @ref FL_ATIM_COUNTER_DIR_DOWN
  683. */
  684. __STATIC_INLINE uint32_t FL_ATIM_GetCounterDirection(ATIM_Type *TIMx)
  685. {
  686. return (uint32_t)(READ_BIT(TIMx->CR1, ATIM_CR1_DIR_Msk));
  687. }
  688. /**
  689. * @brief 设置单脉冲输出模式
  690. * @rmtoll CR1 OPM FL_ATIM_SetOnePulseMode
  691. * @param TIMx TIM instance
  692. * @param mode This parameter can be one of the following values:
  693. * @arg @ref FL_ATIM_ONE_PULSE_MODE_CONTINUOUS
  694. * @arg @ref FL_ATIM_ONE_PULSE_MODE_SINGLE
  695. * @retval None
  696. */
  697. __STATIC_INLINE void FL_ATIM_SetOnePulseMode(ATIM_Type *TIMx, uint32_t mode)
  698. {
  699. MODIFY_REG(TIMx->CR1, ATIM_CR1_OPM_Msk, mode);
  700. }
  701. /**
  702. * @brief 读取单脉冲输出的模式
  703. * @rmtoll CR1 OPM FL_ATIM_GetOnePulseMode
  704. * @param TIMx TIM instance
  705. * @retval Returned value can be one of the following values:
  706. * @arg @ref FL_ATIM_ONE_PULSE_MODE_CONTINUOUS
  707. * @arg @ref FL_ATIM_ONE_PULSE_MODE_SINGLE
  708. */
  709. __STATIC_INLINE uint32_t FL_ATIM_GetOnePulseMode(ATIM_Type *TIMx)
  710. {
  711. return (uint32_t)(READ_BIT(TIMx->CR1, ATIM_CR1_OPM_Msk));
  712. }
  713. /**
  714. * @brief 设置更新请求源
  715. * @rmtoll CR1 URS FL_ATIM_SetUpdateSource
  716. * @param TIMx TIM instance
  717. * @param source This parameter can be one of the following values:
  718. * @arg @ref FL_ATIM_UPDATE_SOURCE_REGULAR
  719. * @arg @ref FL_ATIM_UPDATE_SOURCE_COUNTER
  720. * @retval None
  721. */
  722. __STATIC_INLINE void FL_ATIM_SetUpdateSource(ATIM_Type *TIMx, uint32_t source)
  723. {
  724. MODIFY_REG(TIMx->CR1, ATIM_CR1_URS_Msk, source);
  725. }
  726. /**
  727. * @brief 读取更新请求源
  728. * @rmtoll CR1 URS FL_ATIM_GetUpdateSource
  729. * @param TIMx TIM instance
  730. * @retval Returned value can be one of the following values:
  731. * @arg @ref FL_ATIM_UPDATE_SOURCE_REGULAR
  732. * @arg @ref FL_ATIM_UPDATE_SOURCE_COUNTER
  733. */
  734. __STATIC_INLINE uint32_t FL_ATIM_GetUpdateSource(ATIM_Type *TIMx)
  735. {
  736. return (uint32_t)(READ_BIT(TIMx->CR1, ATIM_CR1_URS_Msk));
  737. }
  738. /**
  739. * @brief 使能更新事件
  740. * @rmtoll CR1 UDIS FL_ATIM_EnableUpdateEvent
  741. * @param TIMx TIM instance
  742. * @retval None
  743. */
  744. __STATIC_INLINE void FL_ATIM_EnableUpdateEvent(ATIM_Type *TIMx)
  745. {
  746. CLEAR_BIT(TIMx->CR1, ATIM_CR1_UDIS_Msk);
  747. }
  748. /**
  749. * @brief 读取更新事件状态
  750. * @rmtoll CR1 UDIS FL_ATIM_IsEnabledUpdateEvent
  751. * @param TIMx TIM instance
  752. * @retval State of bit (1 or 0).
  753. */
  754. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledUpdateEvent(ATIM_Type *TIMx)
  755. {
  756. return (uint32_t)!(READ_BIT(TIMx->CR1, ATIM_CR1_UDIS_Msk) == ATIM_CR1_UDIS_Msk);
  757. }
  758. /**
  759. * @brief 禁用更新事件
  760. * @rmtoll CR1 UDIS FL_ATIM_DisableUpdateEvent
  761. * @param TIMx TIM instance
  762. * @retval None
  763. */
  764. __STATIC_INLINE void FL_ATIM_DisableUpdateEvent(ATIM_Type *TIMx)
  765. {
  766. CLEAR_BIT(TIMx->CR1, ATIM_CR1_UDIS_Msk);
  767. }
  768. /**
  769. * @brief 计数器使能
  770. * @rmtoll CR1 CEN FL_ATIM_Enable
  771. * @param TIMx TIM instance
  772. * @retval None
  773. */
  774. __STATIC_INLINE void FL_ATIM_Enable(ATIM_Type *TIMx)
  775. {
  776. SET_BIT(TIMx->CR1, ATIM_CR1_CEN_Msk);
  777. }
  778. /**
  779. * @brief 读取计数器使能状态
  780. * @rmtoll CR1 CEN FL_ATIM_IsEnabled
  781. * @param TIMx TIM instance
  782. * @retval State of bit (1 or 0).
  783. */
  784. __STATIC_INLINE uint32_t FL_ATIM_IsEnabled(ATIM_Type *TIMx)
  785. {
  786. return (uint32_t)(READ_BIT(TIMx->CR1, ATIM_CR1_CEN_Msk) == ATIM_CR1_CEN_Msk);
  787. }
  788. /**
  789. * @brief 计数器关闭
  790. * @rmtoll CR1 CEN FL_ATIM_Disable
  791. * @param TIMx TIM instance
  792. * @retval None
  793. */
  794. __STATIC_INLINE void FL_ATIM_Disable(ATIM_Type *TIMx)
  795. {
  796. CLEAR_BIT(TIMx->CR1, ATIM_CR1_CEN_Msk);
  797. }
  798. /**
  799. * @brief 设置OCN的输出空闲状态
  800. * @note
  801. * @rmtoll CR2 OISN FL_ATIM_OC_SetReverseChannelIdleState
  802. * @param TIMx TIM instance
  803. * @param OCNIdleState This parameter can be one of the following values:
  804. * @arg @ref FL_ATIM_OCN_IDLE_STATE_LOW
  805. * @arg @ref FL_ATIM_OCN_IDLE_STATE_HIGH
  806. * @param channel This parameter can be one of the following values:
  807. * @arg @ref FL_ATIM_CHANNEL_1
  808. * @arg @ref FL_ATIM_CHANNEL_2
  809. * @arg @ref FL_ATIM_CHANNEL_3
  810. * @retval None
  811. */
  812. __STATIC_INLINE void FL_ATIM_OC_SetReverseChannelIdleState(ATIM_Type *TIMx, uint32_t OCNIdleState, uint32_t channel)
  813. {
  814. MODIFY_REG(TIMx->CR2, ATIM_CR2_OISN_Msk << (channel * 2), OCNIdleState << (channel * 2));
  815. }
  816. /**
  817. * @brief 读取OCN的输出空闲状态
  818. * @note
  819. * @rmtoll CR2 OISN FL_ATIM_OC_GetReverseChannelIdleState
  820. * @param TIMx TIM instance
  821. * @param channel This parameter can be one of the following values:
  822. * @arg @ref FL_ATIM_CHANNEL_1
  823. * @arg @ref FL_ATIM_CHANNEL_2
  824. * @arg @ref FL_ATIM_CHANNEL_3
  825. * @retval Returned value can be one of the following values:
  826. * @arg @ref FL_ATIM_OCN_IDLE_STATE_LOW
  827. * @arg @ref FL_ATIM_OCN_IDLE_STATE_HIGH
  828. */
  829. __STATIC_INLINE uint32_t FL_ATIM_OC_GetReverseChannelIdleState(ATIM_Type *TIMx, uint32_t channel)
  830. {
  831. return (uint32_t)(READ_BIT(TIMx->CR2, (ATIM_CR2_OISN_Msk << (channel * 2))));
  832. }
  833. /**
  834. * @brief 设置OC的输出空闲状态
  835. * @note
  836. * @rmtoll CR2 OIS FL_ATIM_OC_SetChannelIdleState
  837. * @param TIMx TIM instance
  838. * @param OCIdleState This parameter can be one of the following values:
  839. * @arg @ref FL_ATIM_OC_IDLE_STATE_LOW
  840. * @arg @ref FL_ATIM_OC_IDLE_STATE_HIGH
  841. * @param channel This parameter can be one of the following values:
  842. * @arg @ref FL_ATIM_CHANNEL_1
  843. * @arg @ref FL_ATIM_CHANNEL_2
  844. * @arg @ref FL_ATIM_CHANNEL_3
  845. * @arg @ref FL_ATIM_CHANNEL_4
  846. * @retval None
  847. */
  848. __STATIC_INLINE void FL_ATIM_OC_SetChannelIdleState(ATIM_Type *TIMx, uint32_t OCIdleState, uint32_t channel)
  849. {
  850. MODIFY_REG(TIMx->CR2, (ATIM_CR2_OIS_Msk << (channel * 2)), OCIdleState << (channel * 2));
  851. }
  852. /**
  853. * @brief 读取OC的输出空闲状态
  854. * @note
  855. * @rmtoll CR2 OIS FL_ATIM_OC_GetChannelIdleState
  856. * @param TIMx TIM instance
  857. * @param channel This parameter can be one of the following values:
  858. * @arg @ref FL_ATIM_CHANNEL_1
  859. * @arg @ref FL_ATIM_CHANNEL_2
  860. * @arg @ref FL_ATIM_CHANNEL_3
  861. * @arg @ref FL_ATIM_CHANNEL_4
  862. * @retval Returned value can be one of the following values:
  863. * @arg @ref FL_ATIM_OC_IDLE_STATE_LOW
  864. * @arg @ref FL_ATIM_OC_IDLE_STATE_HIGH
  865. */
  866. __STATIC_INLINE uint32_t FL_ATIM_OC_GetChannelIdleState(ATIM_Type *TIMx, uint32_t channel)
  867. {
  868. return (uint32_t)(READ_BIT(TIMx->CR2, (ATIM_CR2_OIS_Msk << (channel * 2))));
  869. }
  870. /**
  871. * @brief 通道1输入源选择
  872. * @rmtoll CR2 TI1S FL_ATIM_IC_EnableXORCombination
  873. * @param TIMx TIM instance
  874. * @retval None
  875. */
  876. __STATIC_INLINE void FL_ATIM_IC_EnableXORCombination(ATIM_Type *TIMx)
  877. {
  878. SET_BIT(TIMx->CR2, ATIM_CR2_TI1S_Msk);
  879. }
  880. /**
  881. * @brief 读取通道1输入源
  882. * @rmtoll CR2 TI1S FL_ATIM_IC_IsEnabledXORCombination
  883. * @param TIMx TIM instance
  884. * @retval State of bit (1 or 0).
  885. */
  886. __STATIC_INLINE uint32_t FL_ATIM_IC_IsEnabledXORCombination(ATIM_Type *TIMx)
  887. {
  888. return (uint32_t)(READ_BIT(TIMx->CR2, ATIM_CR2_TI1S_Msk) == ATIM_CR2_TI1S_Msk);
  889. }
  890. /**
  891. * @brief 通道1输入源禁用XOR组合
  892. * @rmtoll CR2 TI1S FL_ATIM_IC_DisableXORCombination
  893. * @param TIMx TIM instance
  894. * @retval None
  895. */
  896. __STATIC_INLINE void FL_ATIM_IC_DisableXORCombination(ATIM_Type *TIMx)
  897. {
  898. CLEAR_BIT(TIMx->CR2, ATIM_CR2_TI1S_Msk);
  899. }
  900. /**
  901. * @brief 设置同步触发信号源
  902. * @rmtoll CR2 MMS FL_ATIM_SetTriggerOutput
  903. * @param TIMx TIM instance
  904. * @param triggerOutput This parameter can be one of the following values:
  905. * @arg @ref FL_ATIM_TRGO_RESET
  906. * @arg @ref FL_ATIM_TRGO_ENABLE
  907. * @arg @ref FL_ATIM_TRGO_UPDATE
  908. * @arg @ref FL_ATIM_TRGO_CC1IF
  909. * @arg @ref FL_ATIM_TRGO_OC1REF
  910. * @arg @ref FL_ATIM_TRGO_OC2REF
  911. * @arg @ref FL_ATIM_TRGO_OC3REF
  912. * @arg @ref FL_ATIM_TRGO_OC4REF
  913. * @retval None
  914. */
  915. __STATIC_INLINE void FL_ATIM_SetTriggerOutput(ATIM_Type *TIMx, uint32_t triggerOutput)
  916. {
  917. MODIFY_REG(TIMx->CR2, ATIM_CR2_MMS_Msk, triggerOutput);
  918. }
  919. /**
  920. * @brief 读取同步触发源
  921. * @rmtoll CR2 MMS FL_ATIM_GetTriggerOutput
  922. * @param TIMx TIM instance
  923. * @retval Returned value can be one of the following values:
  924. * @arg @ref FL_ATIM_TRGO_RESET
  925. * @arg @ref FL_ATIM_TRGO_ENABLE
  926. * @arg @ref FL_ATIM_TRGO_UPDATE
  927. * @arg @ref FL_ATIM_TRGO_CC1IF
  928. * @arg @ref FL_ATIM_TRGO_OC1REF
  929. * @arg @ref FL_ATIM_TRGO_OC2REF
  930. * @arg @ref FL_ATIM_TRGO_OC3REF
  931. * @arg @ref FL_ATIM_TRGO_OC4REF
  932. */
  933. __STATIC_INLINE uint32_t FL_ATIM_GetTriggerOutput(ATIM_Type *TIMx)
  934. {
  935. return (uint32_t)(READ_BIT(TIMx->CR2, ATIM_CR2_MMS_Msk));
  936. }
  937. /**
  938. * @brief 设置DMA请求触发
  939. * @rmtoll CR2 CCDS FL_ATIM_CC_SetDMAReqTrigger
  940. * @param TIMx TIM instance
  941. * @param trigger This parameter can be one of the following values:
  942. * @arg @ref FL_ATIM_DMA_REQ_CC
  943. * @arg @ref FL_ATIM_DMA_REQ_UPDATE
  944. * @retval None
  945. */
  946. __STATIC_INLINE void FL_ATIM_CC_SetDMAReqTrigger(ATIM_Type *TIMx, uint32_t trigger)
  947. {
  948. MODIFY_REG(TIMx->CR2, ATIM_CR2_CCDS_Msk, trigger);
  949. }
  950. /**
  951. * @brief 读取DMA请求触发
  952. * @rmtoll CR2 CCDS FL_ATIM_CC_GetDMAReqTrigger
  953. * @param TIMx TIM instance
  954. * @retval Returned value can be one of the following values:
  955. * @arg @ref FL_ATIM_DMA_REQ_CC
  956. * @arg @ref FL_ATIM_DMA_REQ_UPDATE
  957. */
  958. __STATIC_INLINE uint32_t FL_ATIM_CC_GetDMAReqTrigger(ATIM_Type *TIMx)
  959. {
  960. return (uint32_t)(READ_BIT(TIMx->CR2, ATIM_CR2_CCDS_Msk));
  961. }
  962. /**
  963. * @brief 设置捕捉比较寄存器更新选择
  964. * @rmtoll CR2 CCUS FL_ATIM_CC_SetUpdateSource
  965. * @param TIMx TIM instance
  966. * @param updateSource This parameter can be one of the following values:
  967. * @arg @ref FL_ATIM_UPDATE_SOURCE_COMG_ONLY
  968. * @arg @ref FL_ATIM_UPDATE_SOURCE_COMG_AND_TRGI?
  969. * @retval None
  970. */
  971. __STATIC_INLINE void FL_ATIM_CC_SetUpdateSource(ATIM_Type *TIMx, uint32_t updateSource)
  972. {
  973. MODIFY_REG(TIMx->CR2, ATIM_CR2_CCUS_Msk, updateSource);
  974. }
  975. /**
  976. * @brief 读取捕捉比较寄存器更新源
  977. * @rmtoll CR2 CCUS FL_ATIM_CC_GetUpdateSource
  978. * @param TIMx TIM instance
  979. * @retval Returned value can be one of the following values:
  980. * @arg @ref FL_ATIM_UPDATE_SOURCE_COMG_ONLY
  981. * @arg @ref FL_ATIM_UPDATE_SOURCE_COMG_AND_TRGI?
  982. */
  983. __STATIC_INLINE uint32_t FL_ATIM_CC_GetUpdateSource(ATIM_Type *TIMx)
  984. {
  985. return (uint32_t)(READ_BIT(TIMx->CR2, ATIM_CR2_CCUS_Msk));
  986. }
  987. /**
  988. * @brief 捕捉比较预装载使能
  989. * @rmtoll CR2 CCPC FL_ATIM_CC_EnablePreload
  990. * @param TIMx TIM instance
  991. * @retval None
  992. */
  993. __STATIC_INLINE void FL_ATIM_CC_EnablePreload(ATIM_Type *TIMx)
  994. {
  995. SET_BIT(TIMx->CR2, ATIM_CR2_CCPC_Msk);
  996. }
  997. /**
  998. * @brief 读取捕捉比较预装载使能状态
  999. * @rmtoll CR2 CCPC FL_ATIM_CC_IsEnabledPreload
  1000. * @param TIMx TIM instance
  1001. * @retval State of bit (1 or 0).
  1002. */
  1003. __STATIC_INLINE uint32_t FL_ATIM_CC_IsEnabledPreload(ATIM_Type *TIMx)
  1004. {
  1005. return (uint32_t)(READ_BIT(TIMx->CR2, ATIM_CR2_CCPC_Msk) == ATIM_CR2_CCPC_Msk);
  1006. }
  1007. /**
  1008. * @brief 捕捉比较预装载失能
  1009. * @rmtoll CR2 CCPC FL_ATIM_CC_DisablePreload
  1010. * @param TIMx TIM instance
  1011. * @retval None
  1012. */
  1013. __STATIC_INLINE void FL_ATIM_CC_DisablePreload(ATIM_Type *TIMx)
  1014. {
  1015. CLEAR_BIT(TIMx->CR2, ATIM_CR2_CCPC_Msk);
  1016. }
  1017. /**
  1018. * @brief 设置外部触发信号极性
  1019. * @rmtoll SMCR ETP FL_ATIM_SetETRPolarity
  1020. * @param TIMx TIM instance
  1021. * @param polarity This parameter can be one of the following values:
  1022. * @arg @ref FL_ATIM_ETR_POLARITY_NORMAL
  1023. * @arg @ref FL_ATIM_ETR_POLARITY_INVERT
  1024. * @retval None
  1025. */
  1026. __STATIC_INLINE void FL_ATIM_SetETRPolarity(ATIM_Type *TIMx, uint32_t polarity)
  1027. {
  1028. MODIFY_REG(TIMx->SMCR, ATIM_SMCR_ETP_Msk, polarity);
  1029. }
  1030. /**
  1031. * @brief 读取外部触发信号极性
  1032. * @rmtoll SMCR ETP FL_ATIM_GetETRPolarity
  1033. * @param TIMx TIM instance
  1034. * @retval Returned value can be one of the following values:
  1035. * @arg @ref FL_ATIM_ETR_POLARITY_NORMAL
  1036. * @arg @ref FL_ATIM_ETR_POLARITY_INVERT
  1037. */
  1038. __STATIC_INLINE uint32_t FL_ATIM_GetETRPolarity(ATIM_Type *TIMx)
  1039. {
  1040. return (uint32_t)(READ_BIT(TIMx->SMCR, ATIM_SMCR_ETP_Msk));
  1041. }
  1042. /**
  1043. * @brief 外部时钟使能
  1044. * @rmtoll SMCR ECE FL_ATIM_EnableExternalClock
  1045. * @param TIMx TIM instance
  1046. * @retval None
  1047. */
  1048. __STATIC_INLINE void FL_ATIM_EnableExternalClock(ATIM_Type *TIMx)
  1049. {
  1050. SET_BIT(TIMx->SMCR, ATIM_SMCR_ECE_Msk);
  1051. }
  1052. /**
  1053. * @brief 读取外部时钟使能状态
  1054. * @rmtoll SMCR ECE FL_ATIM_IsEnabledExternalClock
  1055. * @param TIMx TIM instance
  1056. * @retval State of bit (1 or 0).
  1057. */
  1058. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledExternalClock(ATIM_Type *TIMx)
  1059. {
  1060. return (uint32_t)(READ_BIT(TIMx->SMCR, ATIM_SMCR_ECE_Msk) == ATIM_SMCR_ECE_Msk);
  1061. }
  1062. /**
  1063. * @brief 外部时钟禁用
  1064. * @rmtoll SMCR ECE FL_ATIM_DisableExternalClock
  1065. * @param TIMx TIM instance
  1066. * @retval None
  1067. */
  1068. __STATIC_INLINE void FL_ATIM_DisableExternalClock(ATIM_Type *TIMx)
  1069. {
  1070. CLEAR_BIT(TIMx->SMCR, ATIM_SMCR_ECE_Msk);
  1071. }
  1072. /**
  1073. * @brief 设置外部触发信号预分频
  1074. * @rmtoll SMCR ETPS FL_ATIM_SetETRPrescaler
  1075. * @param TIMx TIM instance
  1076. * @param psc This parameter can be one of the following values:
  1077. * @arg @ref FL_ATIM_ETR_PSC_DIV1
  1078. * @arg @ref FL_ATIM_ETR_PSC_DIV2
  1079. * @arg @ref FL_ATIM_ETR_PSC_DIV4
  1080. * @arg @ref FL_ATIM_ETR_PSC_DIV8
  1081. * @retval None
  1082. */
  1083. __STATIC_INLINE void FL_ATIM_SetETRPrescaler(ATIM_Type *TIMx, uint32_t psc)
  1084. {
  1085. MODIFY_REG(TIMx->SMCR, ATIM_SMCR_ETPS_Msk, psc);
  1086. }
  1087. /**
  1088. * @brief 读取外部触发信号预分频
  1089. * @rmtoll SMCR ETPS FL_ATIM_GetETRPrescaler
  1090. * @param TIMx TIM instance
  1091. * @retval Returned value can be one of the following values:
  1092. * @arg @ref FL_ATIM_ETR_PSC_DIV1
  1093. * @arg @ref FL_ATIM_ETR_PSC_DIV2
  1094. * @arg @ref FL_ATIM_ETR_PSC_DIV4
  1095. * @arg @ref FL_ATIM_ETR_PSC_DIV8
  1096. */
  1097. __STATIC_INLINE uint32_t FL_ATIM_GetETRPrescaler(ATIM_Type *TIMx)
  1098. {
  1099. return (uint32_t)(READ_BIT(TIMx->SMCR, ATIM_SMCR_ETPS_Msk));
  1100. }
  1101. /**
  1102. * @brief 设置外部触发信号滤波时钟和长度
  1103. * @rmtoll SMCR ETF FL_ATIM_SetETRFilter
  1104. * @param TIMx TIM instance
  1105. * @param filter This parameter can be one of the following values:
  1106. * @arg @ref FL_ATIM_ETR_FILTER_DIV1
  1107. * @arg @ref FL_ATIM_ETR_FILTER_DIV1_N2
  1108. * @arg @ref FL_ATIM_ETR_FILTER_DIV1_N4
  1109. * @arg @ref FL_ATIM_ETR_FILTER_DIV1_N8
  1110. * @arg @ref FL_ATIM_ETR_FILTER_DIV2_N6
  1111. * @arg @ref FL_ATIM_ETR_FILTER_DIV2_N8
  1112. * @arg @ref FL_ATIM_ETR_FILTER_DIV4_N6
  1113. * @arg @ref FL_ATIM_ETR_FILTER_DIV4_N8
  1114. * @arg @ref FL_ATIM_ETR_FILTER_DIV8_N6
  1115. * @arg @ref FL_ATIM_ETR_FILTER_DIV8_N8
  1116. * @arg @ref FL_ATIM_ETR_FILTER_DIV16_N5
  1117. * @arg @ref FL_ATIM_ETR_FILTER_DIV16_N6
  1118. * @arg @ref FL_ATIM_ETR_FILTER_DIV16_N8
  1119. * @arg @ref FL_ATIM_ETR_FILTER_DIV32_N5
  1120. * @arg @ref FL_ATIM_ETR_FILTER_DIV32_N6
  1121. * @arg @ref FL_ATIM_ETR_FILTER_DIV32_N8
  1122. * @retval None
  1123. */
  1124. __STATIC_INLINE void FL_ATIM_SetETRFilter(ATIM_Type *TIMx, uint32_t filter)
  1125. {
  1126. MODIFY_REG(TIMx->SMCR, ATIM_SMCR_ETF_Msk, filter);
  1127. }
  1128. /**
  1129. * @brief 读取外部触发信号滤波时钟和长度
  1130. * @rmtoll SMCR ETF FL_ATIM_GetETRFilter
  1131. * @param TIMx TIM instance
  1132. * @retval Returned value can be one of the following values:
  1133. * @arg @ref FL_ATIM_ETR_FILTER_DIV1
  1134. * @arg @ref FL_ATIM_ETR_FILTER_DIV1_N2
  1135. * @arg @ref FL_ATIM_ETR_FILTER_DIV1_N4
  1136. * @arg @ref FL_ATIM_ETR_FILTER_DIV1_N8
  1137. * @arg @ref FL_ATIM_ETR_FILTER_DIV2_N6
  1138. * @arg @ref FL_ATIM_ETR_FILTER_DIV2_N8
  1139. * @arg @ref FL_ATIM_ETR_FILTER_DIV4_N6
  1140. * @arg @ref FL_ATIM_ETR_FILTER_DIV4_N8
  1141. * @arg @ref FL_ATIM_ETR_FILTER_DIV8_N6
  1142. * @arg @ref FL_ATIM_ETR_FILTER_DIV8_N8
  1143. * @arg @ref FL_ATIM_ETR_FILTER_DIV16_N5
  1144. * @arg @ref FL_ATIM_ETR_FILTER_DIV16_N6
  1145. * @arg @ref FL_ATIM_ETR_FILTER_DIV16_N8
  1146. * @arg @ref FL_ATIM_ETR_FILTER_DIV32_N5
  1147. * @arg @ref FL_ATIM_ETR_FILTER_DIV32_N6
  1148. * @arg @ref FL_ATIM_ETR_FILTER_DIV32_N8
  1149. */
  1150. __STATIC_INLINE uint32_t FL_ATIM_GetETRFilter(ATIM_Type *TIMx)
  1151. {
  1152. return (uint32_t)(READ_BIT(TIMx->SMCR, ATIM_SMCR_ETF_Msk));
  1153. }
  1154. /**
  1155. * @brief 主/从模式使能
  1156. * @rmtoll SMCR MSM FL_ATIM_EnableMasterSlaveMode
  1157. * @param TIMx TIM instance
  1158. * @retval None
  1159. */
  1160. __STATIC_INLINE void FL_ATIM_EnableMasterSlaveMode(ATIM_Type *TIMx)
  1161. {
  1162. SET_BIT(TIMx->SMCR, ATIM_SMCR_MSM_Msk);
  1163. }
  1164. /**
  1165. * @brief 读取主/从模式使能状态
  1166. * @rmtoll SMCR MSM FL_ATIM_IsEnabledMasterSlaveMode
  1167. * @param TIMx TIM instance
  1168. * @retval State of bit (1 or 0).
  1169. */
  1170. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledMasterSlaveMode(ATIM_Type *TIMx)
  1171. {
  1172. return (uint32_t)(READ_BIT(TIMx->SMCR, ATIM_SMCR_MSM_Msk) == ATIM_SMCR_MSM_Msk);
  1173. }
  1174. /**
  1175. * @brief 定时器主/从模式禁用
  1176. * @rmtoll SMCR MSM FL_ATIM_DisableMasterSlaveMode
  1177. * @param TIMx TIM instance
  1178. * @retval None
  1179. */
  1180. __STATIC_INLINE void FL_ATIM_DisableMasterSlaveMode(ATIM_Type *TIMx)
  1181. {
  1182. CLEAR_BIT(TIMx->SMCR, ATIM_SMCR_MSM_Msk);
  1183. }
  1184. /**
  1185. * @brief 设置同步计数器触发源
  1186. * @rmtoll SMCR TS FL_ATIM_SetTriggerInput
  1187. * @param TIMx TIM instance
  1188. * @param triggerInput This parameter can be one of the following values:
  1189. * @arg @ref FL_ATIM_TRGI_ITR0
  1190. * @arg @ref FL_ATIM_TRGI_ITR1
  1191. * @arg @ref FL_ATIM_TRGI_ITR2
  1192. * @arg @ref FL_ATIM_TRGI_ITR3
  1193. * @arg @ref FL_ATIM_TRGI_TI1F_EDGE
  1194. * @arg @ref FL_ATIM_TRGI_TI1FP1
  1195. * @arg @ref FL_ATIM_TRGI_TI2FP2
  1196. * @arg @ref FL_ATIM_TRGI_ETRF
  1197. * @retval None
  1198. */
  1199. __STATIC_INLINE void FL_ATIM_SetTriggerInput(ATIM_Type *TIMx, uint32_t triggerInput)
  1200. {
  1201. MODIFY_REG(TIMx->SMCR, ATIM_SMCR_TS_Msk, triggerInput);
  1202. }
  1203. /**
  1204. * @brief 读取同步计数器的触发源
  1205. * @rmtoll SMCR TS FL_ATIM_GetTriggerInput
  1206. * @param TIMx TIM instance
  1207. * @retval Returned value can be one of the following values:
  1208. * @arg @ref FL_ATIM_TRGI_ITR0
  1209. * @arg @ref FL_ATIM_TRGI_ITR1
  1210. * @arg @ref FL_ATIM_TRGI_ITR2
  1211. * @arg @ref FL_ATIM_TRGI_ITR3
  1212. * @arg @ref FL_ATIM_TRGI_TI1F_EDGE
  1213. * @arg @ref FL_ATIM_TRGI_TI1FP1
  1214. * @arg @ref FL_ATIM_TRGI_TI2FP2
  1215. * @arg @ref FL_ATIM_TRGI_ETRF
  1216. */
  1217. __STATIC_INLINE uint32_t FL_ATIM_GetTriggerInput(ATIM_Type *TIMx)
  1218. {
  1219. return (uint32_t)(READ_BIT(TIMx->SMCR, ATIM_SMCR_TS_Msk));
  1220. }
  1221. /**
  1222. * @brief 从机模式设置
  1223. * @rmtoll SMCR SMS FL_ATIM_SetSlaveMode
  1224. * @param TIMx TIM instance
  1225. * @param encoderMode This parameter can be one of the following values:
  1226. * @arg @ref FL_ATIM_SLAVE_MODE_PROHIBITED
  1227. * @arg @ref FL_ATIM_SLAVE_MODE_ENCODER_X2_TI1
  1228. * @arg @ref FL_ATIM_SLAVE_MODE_ENCODER_X2_TI2
  1229. * @arg @ref FL_ATIM_SLAVE_MODE_ENCODER_X4_TI1TI2
  1230. * @arg @ref FL_ATIM_SLAVE_MODE_TRGI_RISE_RST
  1231. * @arg @ref FL_ATIM_SLAVE_MODE_TRGI_HIGH_RUN
  1232. * @arg @ref FL_ATIM_SLAVE_MODE_TRGI_RISE_RUN
  1233. * @arg @ref FL_ATIM_SLAVE_MODE_TRGI_CLK
  1234. * @retval None
  1235. */
  1236. __STATIC_INLINE void FL_ATIM_SetSlaveMode(ATIM_Type *TIMx, uint32_t encoderMode)
  1237. {
  1238. MODIFY_REG(TIMx->SMCR, ATIM_SMCR_SMS_Msk, encoderMode);
  1239. }
  1240. /**
  1241. * @brief 读取从机模式
  1242. * @rmtoll SMCR SMS FL_ATIM_GetSlaveMode
  1243. * @param TIMx TIM instance
  1244. * @retval Returned value can be one of the following values:
  1245. * @arg @ref FL_ATIM_SLAVE_MODE_PROHIBITED
  1246. * @arg @ref FL_ATIM_SLAVE_MODE_ENCODER_X2_TI1
  1247. * @arg @ref FL_ATIM_SLAVE_MODE_ENCODER_X2_TI2
  1248. * @arg @ref FL_ATIM_SLAVE_MODE_NCODER_X4_TI1TI2
  1249. * @arg @ref FL_ATIM_SLAVE_MODE_TRGI_RISE_RST
  1250. * @arg @ref FL_ATIM_SLAVE_MODE_TRGI_HIGH_RUN
  1251. * @arg @ref FL_ATIM_SLAVE_MODE_TRGI_RISE_RUN
  1252. * @arg @ref FL_ATIM_SLAVE_MODE_TRGI_CLK
  1253. */
  1254. __STATIC_INLINE uint32_t FL_ATIM_GetSlaveMode(ATIM_Type *TIMx)
  1255. {
  1256. return (uint32_t)(READ_BIT(TIMx->SMCR, ATIM_SMCR_SMS_Msk));
  1257. }
  1258. /**
  1259. * @brief 通道1的模式配置为Burst模式
  1260. * @rmtoll DIER CC1BURSTEN FL_ATIM_EnableCC1DMABurstMode
  1261. * @param TIMx TIM instance
  1262. * @retval None
  1263. */
  1264. __STATIC_INLINE void FL_ATIM_EnableCC1DMABurstMode(ATIM_Type *TIMx)
  1265. {
  1266. SET_BIT(TIMx->DIER, ATIM_DIER_CC1BURSTEN_Msk);
  1267. }
  1268. /**
  1269. * @brief 读取通道1的模式配置
  1270. * @rmtoll DIER CC1BURSTEN FL_ATIM_IsEnabledCC1DMABurstMode
  1271. * @param TIMx TIM instance
  1272. * @retval State of bit (1 or 0).
  1273. */
  1274. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledCC1DMABurstMode(ATIM_Type *TIMx)
  1275. {
  1276. return (uint32_t)(READ_BIT(TIMx->DIER, ATIM_DIER_CC1BURSTEN_Msk) == ATIM_DIER_CC1BURSTEN_Msk);
  1277. }
  1278. /**
  1279. * @brief 通道1的Burst模式禁用
  1280. * @rmtoll DIER CC1BURSTEN FL_ATIM_DisableCC1DMABurstMode
  1281. * @param TIMx TIM instance
  1282. * @retval None
  1283. */
  1284. __STATIC_INLINE void FL_ATIM_DisableCC1DMABurstMode(ATIM_Type *TIMx)
  1285. {
  1286. CLEAR_BIT(TIMx->DIER, ATIM_DIER_CC1BURSTEN_Msk);
  1287. }
  1288. /**
  1289. * @brief 通道2的模式配置为Burst模式
  1290. * @rmtoll DIER CC2BURSTEN FL_ATIM_EnableCC2DMABurstMode
  1291. * @param TIMx TIM instance
  1292. * @retval None
  1293. */
  1294. __STATIC_INLINE void FL_ATIM_EnableCC2DMABurstMode(ATIM_Type *TIMx)
  1295. {
  1296. SET_BIT(TIMx->DIER, ATIM_DIER_CC2BURSTEN_Msk);
  1297. }
  1298. /**
  1299. * @brief 读取通道2的模式配置
  1300. * @rmtoll DIER CC2BURSTEN FL_ATIM_IsEnabledCC2DMABurstMode
  1301. * @param TIMx TIM instance
  1302. * @retval State of bit (1 or 0).
  1303. */
  1304. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledCC2DMABurstMode(ATIM_Type *TIMx)
  1305. {
  1306. return (uint32_t)(READ_BIT(TIMx->DIER, ATIM_DIER_CC2BURSTEN_Msk) == ATIM_DIER_CC2BURSTEN_Msk);
  1307. }
  1308. /**
  1309. * @brief 通道2的Burst模式禁用
  1310. * @rmtoll DIER CC2BURSTEN FL_ATIM_DisableCC2DMABurstMode
  1311. * @param TIMx TIM instance
  1312. * @retval None
  1313. */
  1314. __STATIC_INLINE void FL_ATIM_DisableCC2DMABurstMode(ATIM_Type *TIMx)
  1315. {
  1316. CLEAR_BIT(TIMx->DIER, ATIM_DIER_CC2BURSTEN_Msk);
  1317. }
  1318. /**
  1319. * @brief 通道3的模式配置为Burst模式
  1320. * @rmtoll DIER CC3BURSTEN FL_ATIM_EnableCC3DMABurstMode
  1321. * @param TIMx TIM instance
  1322. * @retval None
  1323. */
  1324. __STATIC_INLINE void FL_ATIM_EnableCC3DMABurstMode(ATIM_Type *TIMx)
  1325. {
  1326. SET_BIT(TIMx->DIER, ATIM_DIER_CC3BURSTEN_Msk);
  1327. }
  1328. /**
  1329. * @brief 读取通道3的模式配置
  1330. * @rmtoll DIER CC3BURSTEN FL_ATIM_IsEnabledCC3DMABurstMode
  1331. * @param TIMx TIM instance
  1332. * @retval State of bit (1 or 0).
  1333. */
  1334. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledCC3DMABurstMode(ATIM_Type *TIMx)
  1335. {
  1336. return (uint32_t)(READ_BIT(TIMx->DIER, ATIM_DIER_CC3BURSTEN_Msk) == ATIM_DIER_CC3BURSTEN_Msk);
  1337. }
  1338. /**
  1339. * @brief 通道3的Burst模式禁用
  1340. * @rmtoll DIER CC3BURSTEN FL_ATIM_DisableCC3DMABurstMode
  1341. * @param TIMx TIM instance
  1342. * @retval None
  1343. */
  1344. __STATIC_INLINE void FL_ATIM_DisableCC3DMABurstMode(ATIM_Type *TIMx)
  1345. {
  1346. CLEAR_BIT(TIMx->DIER, ATIM_DIER_CC3BURSTEN_Msk);
  1347. }
  1348. /**
  1349. * @brief 通道4的模式配置为Burst模式
  1350. * @rmtoll DIER CC4BURSTEN FL_ATIM_EnableCC4DMABurstMode
  1351. * @param TIMx TIM instance
  1352. * @retval None
  1353. */
  1354. __STATIC_INLINE void FL_ATIM_EnableCC4DMABurstMode(ATIM_Type *TIMx)
  1355. {
  1356. SET_BIT(TIMx->DIER, ATIM_DIER_CC4BURSTEN_Msk);
  1357. }
  1358. /**
  1359. * @brief 读取通道4的模式配置
  1360. * @rmtoll DIER CC4BURSTEN FL_ATIM_IsEnabledCC4DMABurstMode
  1361. * @param TIMx TIM instance
  1362. * @retval State of bit (1 or 0).
  1363. */
  1364. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledCC4DMABurstMode(ATIM_Type *TIMx)
  1365. {
  1366. return (uint32_t)(READ_BIT(TIMx->DIER, ATIM_DIER_CC4BURSTEN_Msk) == ATIM_DIER_CC4BURSTEN_Msk);
  1367. }
  1368. /**
  1369. * @brief 通道4的Burst模式禁用
  1370. * @rmtoll DIER CC4BURSTEN FL_ATIM_DisableCC4DMABurstMode
  1371. * @param TIMx TIM instance
  1372. * @retval None
  1373. */
  1374. __STATIC_INLINE void FL_ATIM_DisableCC4DMABurstMode(ATIM_Type *TIMx)
  1375. {
  1376. CLEAR_BIT(TIMx->DIER, ATIM_DIER_CC4BURSTEN_Msk);
  1377. }
  1378. /**
  1379. * @brief 外部触发DMA请求使能
  1380. * @rmtoll DIER TDE FL_ATIM_EnableDMAReq_Trigger
  1381. * @param TIMx TIM instance
  1382. * @retval None
  1383. */
  1384. __STATIC_INLINE void FL_ATIM_EnableDMAReq_Trigger(ATIM_Type *TIMx)
  1385. {
  1386. SET_BIT(TIMx->DIER, ATIM_DIER_TDE_Msk);
  1387. }
  1388. /**
  1389. * @brief 读取外部触发DMA请求使能状态
  1390. * @rmtoll DIER TDE FL_ATIM_IsEnabledDMAReq_Trigger
  1391. * @param TIMx TIM instance
  1392. * @retval State of bit (1 or 0).
  1393. */
  1394. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledDMAReq_Trigger(ATIM_Type *TIMx)
  1395. {
  1396. return (uint32_t)(READ_BIT(TIMx->DIER, ATIM_DIER_TDE_Msk) == ATIM_DIER_TDE_Msk);
  1397. }
  1398. /**
  1399. * @brief 外部触发DMA请求禁用
  1400. * @rmtoll DIER TDE FL_ATIM_DisableDMAReq_Trigger
  1401. * @param TIMx TIM instance
  1402. * @retval None
  1403. */
  1404. __STATIC_INLINE void FL_ATIM_DisableDMAReq_Trigger(ATIM_Type *TIMx)
  1405. {
  1406. CLEAR_BIT(TIMx->DIER, ATIM_DIER_TDE_Msk);
  1407. }
  1408. /**
  1409. * @brief COM事件DMA请求使能
  1410. * @note
  1411. * @rmtoll DIER COMDE FL_ATIM_EnableDMAReq_COM
  1412. * @param TIMx TIM instance
  1413. * @retval None
  1414. */
  1415. __STATIC_INLINE void FL_ATIM_EnableDMAReq_COM(ATIM_Type *TIMx)
  1416. {
  1417. SET_BIT(TIMx->DIER, ATIM_DIER_COMDE_Msk);
  1418. }
  1419. /**
  1420. * @brief 读取COM事件DMA请求使能状态
  1421. * @note
  1422. * @rmtoll DIER COMDE FL_ATIM_IsEnabledDMAReq_COM
  1423. * @param TIMx TIM instance
  1424. * @retval State of bit (1 or 0).
  1425. */
  1426. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledDMAReq_COM(ATIM_Type *TIMx)
  1427. {
  1428. return (uint32_t)(READ_BIT(TIMx->DIER, ATIM_DIER_COMDE_Msk) == ATIM_DIER_COMDE_Msk);
  1429. }
  1430. /**
  1431. * @brief COM事件DMA请求禁用
  1432. * @note
  1433. * @rmtoll DIER COMDE FL_ATIM_DisableDMAReq_COM
  1434. * @param TIMx TIM instance
  1435. * @retval None
  1436. */
  1437. __STATIC_INLINE void FL_ATIM_DisableDMAReq_COM(ATIM_Type *TIMx)
  1438. {
  1439. CLEAR_BIT(TIMx->DIER, ATIM_DIER_COMDE_Msk);
  1440. }
  1441. /**
  1442. * @brief 捕捉比较通道的DMA请求使能
  1443. * @rmtoll DIER CCDE FL_ATIM_EnableDMAReq_CC
  1444. * @param TIMx TIM instance
  1445. * @param channel This parameter can be one of the following values:
  1446. * @arg @ref FL_ATIM_CHANNEL_1
  1447. * @arg @ref FL_ATIM_CHANNEL_2
  1448. * @arg @ref FL_ATIM_CHANNEL_3
  1449. * @arg @ref FL_ATIM_CHANNEL_4
  1450. * @retval None
  1451. */
  1452. __STATIC_INLINE void FL_ATIM_EnableDMAReq_CC(ATIM_Type *TIMx, uint32_t channel)
  1453. {
  1454. SET_BIT(TIMx->DIER, ATIM_DIER_CCDE_Msk << channel);
  1455. }
  1456. /**
  1457. * @brief 读取捕捉比较通道的DMA请求使能
  1458. * @rmtoll DIER CCDE FL_ATIM_IsEnabledDMAReq_CC
  1459. * @param TIMx TIM instance
  1460. * @param channel This parameter can be one of the following values:
  1461. * @arg @ref FL_ATIM_CHANNEL_1
  1462. * @arg @ref FL_ATIM_CHANNEL_2
  1463. * @arg @ref FL_ATIM_CHANNEL_3
  1464. * @arg @ref FL_ATIM_CHANNEL_4
  1465. * @retval State of bit (1 or 0).
  1466. */
  1467. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledDMAReq_CC(ATIM_Type *TIMx, uint32_t channel)
  1468. {
  1469. return (uint32_t)(READ_BIT(TIMx->DIER, (ATIM_DIER_CCDE_Msk << channel)) == (ATIM_DIER_CCDE_Msk << channel));
  1470. }
  1471. /**
  1472. * @brief 捕捉比较通道的DMA请求禁用
  1473. * @rmtoll DIER CCDE FL_ATIM_DisableDMAReq_CC
  1474. * @param TIMx TIM instance
  1475. * @param channel This parameter can be one of the following values:
  1476. * @arg @ref FL_ATIM_CHANNEL_1
  1477. * @arg @ref FL_ATIM_CHANNEL_2
  1478. * @arg @ref FL_ATIM_CHANNEL_3
  1479. * @arg @ref FL_ATIM_CHANNEL_4
  1480. * @retval None
  1481. */
  1482. __STATIC_INLINE void FL_ATIM_DisableDMAReq_CC(ATIM_Type *TIMx, uint32_t channel)
  1483. {
  1484. CLEAR_BIT(TIMx->DIER, ATIM_DIER_CCDE_Msk << channel);
  1485. }
  1486. /**
  1487. * @brief 更新事件DMA请求使能
  1488. * @rmtoll DIER UDE FL_ATIM_EnableDMAReq_Update
  1489. * @param TIMx TIM instance
  1490. * @retval None
  1491. */
  1492. __STATIC_INLINE void FL_ATIM_EnableDMAReq_Update(ATIM_Type *TIMx)
  1493. {
  1494. SET_BIT(TIMx->DIER, ATIM_DIER_UDE_Msk);
  1495. }
  1496. /**
  1497. * @brief 读取更新事件DMA请求使能状态
  1498. * @rmtoll DIER UDE FL_ATIM_IsEnabledDMAReq_Update
  1499. * @param TIMx TIM instance
  1500. * @retval State of bit (1 or 0).
  1501. */
  1502. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledDMAReq_Update(ATIM_Type *TIMx)
  1503. {
  1504. return (uint32_t)(READ_BIT(TIMx->DIER, ATIM_DIER_UDE_Msk) == ATIM_DIER_UDE_Msk);
  1505. }
  1506. /**
  1507. * @brief 更新事件DMA请求禁用
  1508. * @rmtoll DIER UDE FL_ATIM_DisableDMAReq_Update
  1509. * @param TIMx TIM instance
  1510. * @retval None
  1511. */
  1512. __STATIC_INLINE void FL_ATIM_DisableDMAReq_Update(ATIM_Type *TIMx)
  1513. {
  1514. CLEAR_BIT(TIMx->DIER, ATIM_DIER_UDE_Msk);
  1515. }
  1516. /**
  1517. * @brief 刹车事件中断使能
  1518. * @note
  1519. * @rmtoll DIER BIE FL_ATIM_EnableIT_Break
  1520. * @param TIMx TIM instance
  1521. * @retval None
  1522. */
  1523. __STATIC_INLINE void FL_ATIM_EnableIT_Break(ATIM_Type *TIMx)
  1524. {
  1525. SET_BIT(TIMx->DIER, ATIM_DIER_BIE_Msk);
  1526. }
  1527. /**
  1528. * @brief 读取刹车事件中断使能状态
  1529. * @note
  1530. * @rmtoll DIER BIE FL_ATIM_IsEnabledIT_Break
  1531. * @param TIMx TIM instance
  1532. * @retval State of bit (1 or 0).
  1533. */
  1534. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledIT_Break(ATIM_Type *TIMx)
  1535. {
  1536. return (uint32_t)(READ_BIT(TIMx->DIER, ATIM_DIER_BIE_Msk) == ATIM_DIER_BIE_Msk);
  1537. }
  1538. /**
  1539. * @brief 刹车事件中断禁用
  1540. * @note
  1541. * @rmtoll DIER BIE FL_ATIM_DisableIT_Break
  1542. * @param TIMx TIM instance
  1543. * @retval None
  1544. */
  1545. __STATIC_INLINE void FL_ATIM_DisableIT_Break(ATIM_Type *TIMx)
  1546. {
  1547. CLEAR_BIT(TIMx->DIER, ATIM_DIER_BIE_Msk);
  1548. }
  1549. /**
  1550. * @brief 触发事件中断使能
  1551. * @rmtoll DIER TIE FL_ATIM_EnableIT_Trigger
  1552. * @param TIMx TIM instance
  1553. * @retval None
  1554. */
  1555. __STATIC_INLINE void FL_ATIM_EnableIT_Trigger(ATIM_Type *TIMx)
  1556. {
  1557. SET_BIT(TIMx->DIER, ATIM_DIER_TIE_Msk);
  1558. }
  1559. /**
  1560. * @brief 读取触发事件中断使能
  1561. * @rmtoll DIER TIE FL_ATIM_IsEnabledIT_Trigger
  1562. * @param TIMx TIM instance
  1563. * @retval State of bit (1 or 0).
  1564. */
  1565. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledIT_Trigger(ATIM_Type *TIMx)
  1566. {
  1567. return (uint32_t)(READ_BIT(TIMx->DIER, ATIM_DIER_TIE_Msk) == ATIM_DIER_TIE_Msk);
  1568. }
  1569. /**
  1570. * @brief 触发事件中断禁用
  1571. * @rmtoll DIER TIE FL_ATIM_DisableIT_Trigger
  1572. * @param TIMx TIM instance
  1573. * @retval None
  1574. */
  1575. __STATIC_INLINE void FL_ATIM_DisableIT_Trigger(ATIM_Type *TIMx)
  1576. {
  1577. CLEAR_BIT(TIMx->DIER, ATIM_DIER_TIE_Msk);
  1578. }
  1579. /**
  1580. * @brief COM事件中断使能
  1581. * @note
  1582. * @rmtoll DIER COMIE FL_ATIM_EnableIT_COM
  1583. * @param TIMx TIM instance
  1584. * @retval None
  1585. */
  1586. __STATIC_INLINE void FL_ATIM_EnableIT_COM(ATIM_Type *TIMx)
  1587. {
  1588. SET_BIT(TIMx->DIER, ATIM_DIER_COMIE_Msk);
  1589. }
  1590. /**
  1591. * @brief 读取COM事件中断使能状态
  1592. * @note
  1593. * @rmtoll DIER COMIE FL_ATIM_IsEnabledIT_COM
  1594. * @param TIMx TIM instance
  1595. * @retval State of bit (1 or 0).
  1596. */
  1597. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledIT_COM(ATIM_Type *TIMx)
  1598. {
  1599. return (uint32_t)(READ_BIT(TIMx->DIER, ATIM_DIER_COMIE_Msk) == ATIM_DIER_COMIE_Msk);
  1600. }
  1601. /**
  1602. * @brief COM事件中断禁用
  1603. * @note
  1604. * @rmtoll DIER COMIE FL_ATIM_DisableIT_COM
  1605. * @param TIMx TIM instance
  1606. * @retval None
  1607. */
  1608. __STATIC_INLINE void FL_ATIM_DisableIT_COM(ATIM_Type *TIMx)
  1609. {
  1610. CLEAR_BIT(TIMx->DIER, ATIM_DIER_COMIE_Msk);
  1611. }
  1612. /**
  1613. * @brief 捕捉/比较通道中断使能
  1614. * @rmtoll DIER CCIE FL_ATIM_EnableIT_CC
  1615. * @param TIMx TIM instance
  1616. * @param channel This parameter can be one of the following values:
  1617. * @arg @ref FL_ATIM_CHANNEL_1
  1618. * @arg @ref FL_ATIM_CHANNEL_2
  1619. * @arg @ref FL_ATIM_CHANNEL_3
  1620. * @arg @ref FL_ATIM_CHANNEL_4
  1621. * @retval None
  1622. */
  1623. __STATIC_INLINE void FL_ATIM_EnableIT_CC(ATIM_Type *TIMx, uint32_t channel)
  1624. {
  1625. SET_BIT(TIMx->DIER, ATIM_DIER_CCIE_Msk << channel);
  1626. }
  1627. /**
  1628. * @brief 读取捕捉/比较通道中断使能状态
  1629. * @rmtoll DIER CCIE FL_ATIM_IsEnabledIT_CC
  1630. * @param TIMx TIM instance
  1631. * @param channel This parameter can be one of the following values:
  1632. * @arg @ref FL_ATIM_CHANNEL_1
  1633. * @arg @ref FL_ATIM_CHANNEL_2
  1634. * @arg @ref FL_ATIM_CHANNEL_3
  1635. * @arg @ref FL_ATIM_CHANNEL_4
  1636. * @retval State of bit (1 or 0).
  1637. */
  1638. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledIT_CC(ATIM_Type *TIMx, uint32_t channel)
  1639. {
  1640. return (uint32_t)(READ_BIT(TIMx->DIER, (ATIM_DIER_CCIE_Msk << channel)) == (ATIM_DIER_CCIE_Msk << channel));
  1641. }
  1642. /**
  1643. * @brief 捕捉/比较通道中断禁用
  1644. * @rmtoll DIER CCIE FL_ATIM_DisableIT_CC
  1645. * @param TIMx TIM instance
  1646. * @param channel This parameter can be one of the following values:
  1647. * @arg @ref FL_ATIM_CHANNEL_1
  1648. * @arg @ref FL_ATIM_CHANNEL_2
  1649. * @arg @ref FL_ATIM_CHANNEL_3
  1650. * @arg @ref FL_ATIM_CHANNEL_4
  1651. * @retval None
  1652. */
  1653. __STATIC_INLINE void FL_ATIM_DisableIT_CC(ATIM_Type *TIMx, uint32_t channel)
  1654. {
  1655. CLEAR_BIT(TIMx->DIER, ATIM_DIER_CCIE_Msk << channel);
  1656. }
  1657. /**
  1658. * @brief 更新事件中断使能
  1659. * @rmtoll DIER UIE FL_ATIM_EnableIT_Update
  1660. * @param TIMx TIM instance
  1661. * @retval None
  1662. */
  1663. __STATIC_INLINE void FL_ATIM_EnableIT_Update(ATIM_Type *TIMx)
  1664. {
  1665. SET_BIT(TIMx->DIER, ATIM_DIER_UIE_Msk);
  1666. }
  1667. /**
  1668. * @brief 读取更新事件中断使能状态
  1669. * @rmtoll DIER UIE FL_ATIM_IsEnabledIT_Update
  1670. * @param TIMx TIM instance
  1671. * @retval State of bit (1 or 0).
  1672. */
  1673. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledIT_Update(ATIM_Type *TIMx)
  1674. {
  1675. return (uint32_t)(READ_BIT(TIMx->DIER, ATIM_DIER_UIE_Msk) == ATIM_DIER_UIE_Msk);
  1676. }
  1677. /**
  1678. * @brief 更新事件中断禁用
  1679. * @rmtoll DIER UIE FL_ATIM_DisableIT_Update
  1680. * @param TIMx TIM instance
  1681. * @retval None
  1682. */
  1683. __STATIC_INLINE void FL_ATIM_DisableIT_Update(ATIM_Type *TIMx)
  1684. {
  1685. CLEAR_BIT(TIMx->DIER, ATIM_DIER_UIE_Msk);
  1686. }
  1687. /**
  1688. * @brief 捕捉/比较通道的Overcapture中断标志
  1689. * @rmtoll ISR CCOF FL_ATIM_IsActiveFlag_CCOverflow
  1690. * @param TIMx TIM instance
  1691. * @param channel This parameter can be one of the following values:
  1692. * @arg @ref FL_ATIM_CHANNEL_1
  1693. * @arg @ref FL_ATIM_CHANNEL_2
  1694. * @arg @ref FL_ATIM_CHANNEL_3
  1695. * @arg @ref FL_ATIM_CHANNEL_4
  1696. * @retval State of bit (1 or 0).
  1697. */
  1698. __STATIC_INLINE uint32_t FL_ATIM_IsActiveFlag_CCOverflow(ATIM_Type *TIMx, uint32_t channel)
  1699. {
  1700. return (uint32_t)(READ_BIT(TIMx->ISR, (ATIM_ISR_CCOF_Msk << channel)) == (ATIM_ISR_CCOF_Msk << channel));
  1701. }
  1702. /**
  1703. * @brief 清除Overcapture中断标志
  1704. * @rmtoll ISR CCOF FL_ATIM_ClearFlag_CCOverflow
  1705. * @param TIMx TIM instance
  1706. * @param channel This parameter can be one of the following values:
  1707. * @arg @ref FL_ATIM_CHANNEL_1
  1708. * @arg @ref FL_ATIM_CHANNEL_2
  1709. * @arg @ref FL_ATIM_CHANNEL_3
  1710. * @arg @ref FL_ATIM_CHANNEL_4
  1711. * @retval None
  1712. */
  1713. __STATIC_INLINE void FL_ATIM_ClearFlag_CCOverflow(ATIM_Type *TIMx, uint32_t channel)
  1714. {
  1715. WRITE_REG(TIMx->ISR, (ATIM_ISR_CCOF_Msk << channel));
  1716. }
  1717. /**
  1718. * @brief 读取刹车事件中断标志
  1719. * @note
  1720. * @rmtoll ISR BIF FL_ATIM_IsActiveFlag_Break
  1721. * @param TIMx TIM instance
  1722. * @retval State of bit (1 or 0).
  1723. */
  1724. __STATIC_INLINE uint32_t FL_ATIM_IsActiveFlag_Break(ATIM_Type *TIMx)
  1725. {
  1726. return (uint32_t)(READ_BIT(TIMx->ISR, ATIM_ISR_BIF_Msk) == (ATIM_ISR_BIF_Msk));
  1727. }
  1728. /**
  1729. * @brief 清除刹车事件中断标志
  1730. * @note
  1731. * @rmtoll ISR BIF FL_ATIM_ClearFlag_Break
  1732. * @param TIMx TIM instance
  1733. * @retval None
  1734. */
  1735. __STATIC_INLINE void FL_ATIM_ClearFlag_Break(ATIM_Type *TIMx)
  1736. {
  1737. WRITE_REG(TIMx->ISR, ATIM_ISR_BIF_Msk);
  1738. }
  1739. /**
  1740. * @brief 触发事件中断标志
  1741. * @rmtoll ISR TIF FL_ATIM_IsActiveFlag_Trigger
  1742. * @param TIMx TIM instance
  1743. * @retval State of bit (1 or 0).
  1744. */
  1745. __STATIC_INLINE uint32_t FL_ATIM_IsActiveFlag_Trigger(ATIM_Type *TIMx)
  1746. {
  1747. return (uint32_t)(READ_BIT(TIMx->ISR, ATIM_ISR_TIF_Msk) == (ATIM_ISR_TIF_Msk));
  1748. }
  1749. /**
  1750. * @brief 清除触发事件中断标志
  1751. * @rmtoll ISR TIF FL_ATIM_ClearFlag_Trigger
  1752. * @param TIMx TIM instance
  1753. * @retval None
  1754. */
  1755. __STATIC_INLINE void FL_ATIM_ClearFlag_Trigger(ATIM_Type *TIMx)
  1756. {
  1757. WRITE_REG(TIMx->ISR, ATIM_ISR_TIF_Msk);
  1758. }
  1759. /**
  1760. * @brief 读取COM事件中断标志
  1761. * @note
  1762. * @rmtoll ISR COMIF FL_ATIM_IsActiveFlag_COM
  1763. * @param TIMx TIM instance
  1764. * @retval State of bit (1 or 0).
  1765. */
  1766. __STATIC_INLINE uint32_t FL_ATIM_IsActiveFlag_COM(ATIM_Type *TIMx)
  1767. {
  1768. return (uint32_t)(READ_BIT(TIMx->ISR, ATIM_ISR_COMIF_Msk) == (ATIM_ISR_COMIF_Msk));
  1769. }
  1770. /**
  1771. * @brief 清除COM事件中断标志
  1772. * @note
  1773. * @rmtoll ISR COMIF FL_ATIM_ClearFlag_COM
  1774. * @param TIMx TIM instance
  1775. * @retval None
  1776. */
  1777. __STATIC_INLINE void FL_ATIM_ClearFlag_COM(ATIM_Type *TIMx)
  1778. {
  1779. WRITE_REG(TIMx->ISR, ATIM_ISR_COMIF_Msk);
  1780. }
  1781. /**
  1782. * @brief 读取捕捉/比较通道中断标志
  1783. * @rmtoll ISR CCIF FL_ATIM_IsActiveFlag_CC
  1784. * @param TIMx TIM instance
  1785. * @param channel This parameter can be one of the following values:
  1786. * @arg @ref FL_ATIM_CHANNEL_1
  1787. * @arg @ref FL_ATIM_CHANNEL_2
  1788. * @arg @ref FL_ATIM_CHANNEL_3
  1789. * @arg @ref FL_ATIM_CHANNEL_4
  1790. * @retval State of bit (1 or 0).
  1791. */
  1792. __STATIC_INLINE uint32_t FL_ATIM_IsActiveFlag_CC(ATIM_Type *TIMx, uint32_t channel)
  1793. {
  1794. return (uint32_t)(READ_BIT(TIMx->ISR, (ATIM_ISR_CCIF_Msk << channel)) == (ATIM_ISR_CCIF_Msk << channel));
  1795. }
  1796. /**
  1797. * @brief 清除捕捉/比较通道中断标志
  1798. * @rmtoll ISR CCIF FL_ATIM_ClearFlag_CC
  1799. * @param TIMx TIM instance
  1800. * @param channel This parameter can be one of the following values:
  1801. * @arg @ref FL_ATIM_CHANNEL_1
  1802. * @arg @ref FL_ATIM_CHANNEL_2
  1803. * @arg @ref FL_ATIM_CHANNEL_3
  1804. * @arg @ref FL_ATIM_CHANNEL_4
  1805. * @retval None
  1806. */
  1807. __STATIC_INLINE void FL_ATIM_ClearFlag_CC(ATIM_Type *TIMx, uint32_t channel)
  1808. {
  1809. WRITE_REG(TIMx->ISR, (ATIM_ISR_CCIF_Msk << channel));
  1810. }
  1811. /**
  1812. * @brief 读取更新事件中断标志
  1813. * @rmtoll ISR UIF FL_ATIM_IsActiveFlag_Update
  1814. * @param TIMx TIM instance
  1815. * @retval State of bit (1 or 0).
  1816. */
  1817. __STATIC_INLINE uint32_t FL_ATIM_IsActiveFlag_Update(ATIM_Type *TIMx)
  1818. {
  1819. return (uint32_t)(READ_BIT(TIMx->ISR, ATIM_ISR_UIF_Msk) == (ATIM_ISR_UIF_Msk));
  1820. }
  1821. /**
  1822. * @brief 清除更新事件中断标志
  1823. * @rmtoll ISR UIF FL_ATIM_ClearFlag_Update
  1824. * @param TIMx TIM instance
  1825. * @retval None
  1826. */
  1827. __STATIC_INLINE void FL_ATIM_ClearFlag_Update(ATIM_Type *TIMx)
  1828. {
  1829. WRITE_REG(TIMx->ISR, ATIM_ISR_UIF_Msk);
  1830. }
  1831. /**
  1832. * @brief 软件刹车使能
  1833. * @note
  1834. * @rmtoll EGR BG FL_ATIM_GenerateBreakEvent
  1835. * @param TIMx TIM instance
  1836. * @retval None
  1837. */
  1838. __STATIC_INLINE void FL_ATIM_GenerateBreakEvent(ATIM_Type *TIMx)
  1839. {
  1840. SET_BIT(TIMx->EGR, ATIM_EGR_BG_Msk);
  1841. }
  1842. /**
  1843. * @brief 软件触发使能
  1844. * @rmtoll EGR TG FL_ATIM_GenerateTriggerEvent
  1845. * @param TIMx TIM instance
  1846. * @retval None
  1847. */
  1848. __STATIC_INLINE void FL_ATIM_GenerateTriggerEvent(ATIM_Type *TIMx)
  1849. {
  1850. SET_BIT(TIMx->EGR, ATIM_EGR_TG_Msk);
  1851. }
  1852. /**
  1853. * @brief 软件COM事件使能
  1854. * @note
  1855. * @rmtoll EGR COMG FL_ATIM_GenerateCOMEvent
  1856. * @param TIMx TIM instance
  1857. * @retval None
  1858. */
  1859. __STATIC_INLINE void FL_ATIM_GenerateCOMEvent(ATIM_Type *TIMx)
  1860. {
  1861. SET_BIT(TIMx->EGR, ATIM_EGR_COMG_Msk);
  1862. }
  1863. /**
  1864. * @brief 捕捉/比较通道软件触发使能
  1865. * @rmtoll EGR CCG FL_ATIM_GenerateCCEvent
  1866. * @param TIMx TIM instance
  1867. * @param channel This parameter can be one of the following values:
  1868. * @arg @ref FL_ATIM_CHANNEL_1
  1869. * @arg @ref FL_ATIM_CHANNEL_2
  1870. * @arg @ref FL_ATIM_CHANNEL_3
  1871. * @arg @ref FL_ATIM_CHANNEL_4
  1872. * @retval None
  1873. */
  1874. __STATIC_INLINE void FL_ATIM_GenerateCCEvent(ATIM_Type *TIMx, uint32_t channel)
  1875. {
  1876. SET_BIT(TIMx->EGR, ATIM_EGR_CCG_Msk << channel);
  1877. }
  1878. /**
  1879. * @brief 软件更新事件使能
  1880. * @rmtoll EGR UG FL_ATIM_GenerateUpdateEvent
  1881. * @param TIMx TIM instance
  1882. * @retval None
  1883. */
  1884. __STATIC_INLINE void FL_ATIM_GenerateUpdateEvent(ATIM_Type *TIMx)
  1885. {
  1886. SET_BIT(TIMx->EGR, ATIM_EGR_UG_Msk);
  1887. }
  1888. /**
  1889. * @brief 设置计数器值
  1890. * @rmtoll CNT FL_ATIM_WriteCounter
  1891. * @param TIMx TIM instance
  1892. * @param counter
  1893. * @retval None
  1894. */
  1895. __STATIC_INLINE void FL_ATIM_WriteCounter(ATIM_Type *TIMx, uint32_t counter)
  1896. {
  1897. MODIFY_REG(TIMx->CNT, (0xffffU << 0U), (counter << 0U));
  1898. }
  1899. /**
  1900. * @brief 读取计数器值
  1901. * @rmtoll CNT FL_ATIM_ReadCounter
  1902. * @param TIMx TIM instance
  1903. * @retval
  1904. */
  1905. __STATIC_INLINE uint32_t FL_ATIM_ReadCounter(ATIM_Type *TIMx)
  1906. {
  1907. return (uint32_t)(READ_BIT(TIMx->CNT, 0xffffU) >> 0U);
  1908. }
  1909. /**
  1910. * @brief 设置计数器时钟预分频值
  1911. * @rmtoll PSC FL_ATIM_WritePrescaler
  1912. * @param TIMx TIM instance
  1913. * @param psc
  1914. * @retval None
  1915. */
  1916. __STATIC_INLINE void FL_ATIM_WritePrescaler(ATIM_Type *TIMx, uint32_t psc)
  1917. {
  1918. MODIFY_REG(TIMx->PSC, (0xffffU << 0U), (psc << 0U));
  1919. }
  1920. /**
  1921. * @brief 读取计数器时钟预分频值
  1922. * @rmtoll PSC FL_ATIM_ReadPrescaler
  1923. * @param TIMx TIM instance
  1924. * @retval
  1925. */
  1926. __STATIC_INLINE uint32_t FL_ATIM_ReadPrescaler(ATIM_Type *TIMx)
  1927. {
  1928. return (uint32_t)(READ_BIT(TIMx->PSC, 0xffffU) >> 0U);
  1929. }
  1930. /**
  1931. * @brief 设置计数溢出时的自动重载值
  1932. * @rmtoll ARR FL_ATIM_WriteAutoReload
  1933. * @param TIMx TIM instance
  1934. * @param autoReload
  1935. * @retval None
  1936. */
  1937. __STATIC_INLINE void FL_ATIM_WriteAutoReload(ATIM_Type *TIMx, uint32_t autoReload)
  1938. {
  1939. MODIFY_REG(TIMx->ARR, (0xffffU << 0U), (autoReload << 0U));
  1940. }
  1941. /**
  1942. * @brief 读取计数溢出时的自动重载值
  1943. * @rmtoll ARR FL_ATIM_ReadAutoReload
  1944. * @param TIMx TIM instance
  1945. * @retval
  1946. */
  1947. __STATIC_INLINE uint32_t FL_ATIM_ReadAutoReload(ATIM_Type *TIMx)
  1948. {
  1949. return (uint32_t)(READ_BIT(TIMx->ARR, 0xffffU) >> 0U);
  1950. }
  1951. /**
  1952. * @brief 捕捉/比较通道1寄存器配置
  1953. * @rmtoll CCR1 FL_ATIM_WriteCompareCH1
  1954. * @param TIMx TIM instance
  1955. * @param compareValue
  1956. * @retval None
  1957. */
  1958. __STATIC_INLINE void FL_ATIM_WriteCompareCH1(ATIM_Type *TIMx, uint32_t compareValue)
  1959. {
  1960. MODIFY_REG(TIMx->CCR1, (0xffffU << 0U), (compareValue << 0U));
  1961. }
  1962. /**
  1963. * @brief 读取捕捉/比较通道1寄存器值
  1964. * @rmtoll CCR1 FL_ATIM_ReadCompareCH1
  1965. * @param TIMx TIM instance
  1966. * @retval
  1967. */
  1968. __STATIC_INLINE uint32_t FL_ATIM_ReadCompareCH1(ATIM_Type *TIMx)
  1969. {
  1970. return (uint32_t)(READ_BIT(TIMx->CCR1, 0xffffU) >> 0U);
  1971. }
  1972. /**
  1973. * @brief 捕捉/比较通道2寄存器配置
  1974. * @rmtoll CCR2 FL_ATIM_WriteCompareCH2
  1975. * @param TIMx TIM instance
  1976. * @param compareValue
  1977. * @retval None
  1978. */
  1979. __STATIC_INLINE void FL_ATIM_WriteCompareCH2(ATIM_Type *TIMx, uint32_t compareValue)
  1980. {
  1981. MODIFY_REG(TIMx->CCR2, (0xffffU << 0U), (compareValue << 0U));
  1982. }
  1983. /**
  1984. * @brief 读取捕捉/比较通道2寄存器值
  1985. * @rmtoll CCR2 FL_ATIM_ReadCompareCH2
  1986. * @param TIMx TIM instance
  1987. * @retval
  1988. */
  1989. __STATIC_INLINE uint32_t FL_ATIM_ReadCompareCH2(ATIM_Type *TIMx)
  1990. {
  1991. return (uint32_t)(READ_BIT(TIMx->CCR2, 0xffffU) >> 0U);
  1992. }
  1993. /**
  1994. * @brief 捕捉/比较通道3寄存器配置
  1995. * @rmtoll CCR3 FL_ATIM_WriteCompareCH3
  1996. * @param TIMx TIM instance
  1997. * @param compareValue
  1998. * @retval None
  1999. */
  2000. __STATIC_INLINE void FL_ATIM_WriteCompareCH3(ATIM_Type *TIMx, uint32_t compareValue)
  2001. {
  2002. MODIFY_REG(TIMx->CCR3, (0xffffU << 0U), (compareValue << 0U));
  2003. }
  2004. /**
  2005. * @brief 读取捕捉/比较通道3寄存器值
  2006. * @rmtoll CCR3 FL_ATIM_ReadCompareCH3
  2007. * @param TIMx TIM instance
  2008. * @retval
  2009. */
  2010. __STATIC_INLINE uint32_t FL_ATIM_ReadCompareCH3(ATIM_Type *TIMx)
  2011. {
  2012. return (uint32_t)(READ_BIT(TIMx->CCR3, 0xffffU) >> 0U);
  2013. }
  2014. /**
  2015. * @brief 捕捉/比较通道4寄存器配置
  2016. * @rmtoll CCR4 FL_ATIM_WriteCompareCH4
  2017. * @param TIMx TIM instance
  2018. * @param compareValue
  2019. * @retval None
  2020. */
  2021. __STATIC_INLINE void FL_ATIM_WriteCompareCH4(ATIM_Type *TIMx, uint32_t compareValue)
  2022. {
  2023. MODIFY_REG(TIMx->CCR4, (0xffffU << 0U), (compareValue << 0U));
  2024. }
  2025. /**
  2026. * @brief 读取捕捉/比较通道4寄存器值
  2027. * @rmtoll CCR4 FL_ATIM_ReadCompareCH4
  2028. * @param TIMx TIM instance
  2029. * @retval
  2030. */
  2031. __STATIC_INLINE uint32_t FL_ATIM_ReadCompareCH4(ATIM_Type *TIMx)
  2032. {
  2033. return (uint32_t)(READ_BIT(TIMx->CCR4, 0xffffU) >> 0U);
  2034. }
  2035. /**
  2036. * @brief 设置DMA Burst长度
  2037. * @rmtoll DCR DBL FL_ATIM_SetDMABurstLength
  2038. * @param TIMx TIM instance
  2039. * @param length This parameter can be one of the following values:
  2040. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_1
  2041. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_2
  2042. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_3
  2043. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_4
  2044. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_5
  2045. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_6
  2046. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_7
  2047. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_8
  2048. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_9
  2049. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_10
  2050. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_11
  2051. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_12
  2052. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_13
  2053. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_14
  2054. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_15
  2055. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_16
  2056. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_17
  2057. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_18
  2058. * @retval None
  2059. */
  2060. __STATIC_INLINE void FL_ATIM_SetDMABurstLength(ATIM_Type *TIMx, uint32_t length)
  2061. {
  2062. MODIFY_REG(TIMx->DCR, ATIM_DCR_DBL_Msk, length);
  2063. }
  2064. /**
  2065. * @brief 读取DMA Burst长度
  2066. * @rmtoll DCR DBL FL_ATIM_GetDMABurstLength
  2067. * @param TIMx TIM instance
  2068. * @retval Returned value can be one of the following values:
  2069. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_1
  2070. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_2
  2071. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_3
  2072. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_4
  2073. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_5
  2074. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_6
  2075. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_7
  2076. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_8
  2077. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_9
  2078. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_10
  2079. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_11
  2080. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_12
  2081. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_13
  2082. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_14
  2083. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_15
  2084. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_16
  2085. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_17
  2086. * @arg @ref FL_ATIM_DMA_BURST_LENGTH_18
  2087. */
  2088. __STATIC_INLINE uint32_t FL_ATIM_GetDMABurstLength(ATIM_Type *TIMx)
  2089. {
  2090. return (uint32_t)(READ_BIT(TIMx->DCR, ATIM_DCR_DBL_Msk));
  2091. }
  2092. /**
  2093. * @brief 设置指向DMA寄存器的偏移地址
  2094. * @rmtoll DCR DBA FL_ATIM_SetDMABurstAddress
  2095. * @param TIMx TIM instance
  2096. * @param address This parameter can be one of the following values:
  2097. * @arg @ref FL_ATIM_DMA_BURST_ADDR_CR1
  2098. * @arg @ref FL_ATIM_DMA_BURST_ADDR_CR2
  2099. * @arg @ref FL_ATIM_DMA_BURST_ADDR_SMCR
  2100. * @arg @ref FL_ATIM_DMA_BURST_ADDR_DIER
  2101. * @arg @ref FL_ATIM_DMA_BURST_ADDR_SR
  2102. * @arg @ref FL_ATIM_DMA_BURST_ADDR_EGR
  2103. * @arg @ref FL_ATIM_DMA_BURST_ADDR_CCMR1
  2104. * @arg @ref FL_ATIM_DMA_BURST_ADDR_CCMR2
  2105. * @arg @ref FL_ATIM_DMA_BURST_ADDR_CCER
  2106. * @arg @ref FL_ATIM_DMA_BURST_ADDR_CNT
  2107. * @arg @ref FL_ATIM_DMA_BURST_ADDR_PSC
  2108. * @arg @ref FL_ATIM_DMA_BURST_ADDR_ARR
  2109. * @arg @ref FL_ATIM_DMA_BURST_ADDR_RCR
  2110. * @arg @ref FL_ATIM_DMA_BURST_ADDR_CCR1
  2111. * @arg @ref FL_ATIM_DMA_BURST_ADDR_CCR2
  2112. * @arg @ref FL_ATIM_DMA_BURST_ADDR_CCR3
  2113. * @arg @ref FL_ATIM_DMA_BURST_ADDR_CCR4
  2114. * @arg @ref FL_ATIM_DMA_BURST_ADDR_BDTR
  2115. * @retval None
  2116. */
  2117. __STATIC_INLINE void FL_ATIM_SetDMABurstAddress(ATIM_Type *TIMx, uint32_t address)
  2118. {
  2119. MODIFY_REG(TIMx->DCR, ATIM_DCR_DBA_Msk, address);
  2120. }
  2121. /**
  2122. * @brief 读取指向DMA寄存器的偏移地址
  2123. * @rmtoll DCR DBA FL_ATIM_GetDMABurstAddress
  2124. * @param TIMx TIM instance
  2125. * @retval Returned value can be one of the following values:
  2126. * @arg @ref FL_ATIM_DMA_BURST_ADDR_CR1
  2127. * @arg @ref FL_ATIM_DMA_BURST_ADDR_CR2
  2128. * @arg @ref FL_ATIM_DMA_BURST_ADDR_SMCR
  2129. * @arg @ref FL_ATIM_DMA_BURST_ADDR_DIER
  2130. * @arg @ref FL_ATIM_DMA_BURST_ADDR_SR
  2131. * @arg @ref FL_ATIM_DMA_BURST_ADDR_EGR
  2132. * @arg @ref FL_ATIM_DMA_BURST_ADDR_CCMR1
  2133. * @arg @ref FL_ATIM_DMA_BURST_ADDR_CCMR2
  2134. * @arg @ref FL_ATIM_DMA_BURST_ADDR_CCER
  2135. * @arg @ref FL_ATIM_DMA_BURST_ADDR_CNT
  2136. * @arg @ref FL_ATIM_DMA_BURST_ADDR_PSC
  2137. * @arg @ref FL_ATIM_DMA_BURST_ADDR_ARR
  2138. * @arg @ref FL_ATIM_DMA_BURST_ADDR_RCR
  2139. * @arg @ref FL_ATIM_DMA_BURST_ADDR_CCR1
  2140. * @arg @ref FL_ATIM_DMA_BURST_ADDR_CCR2
  2141. * @arg @ref FL_ATIM_DMA_BURST_ADDR_CCR3
  2142. * @arg @ref FL_ATIM_DMA_BURST_ADDR_CCR4
  2143. * @arg @ref FL_ATIM_DMA_BURST_ADDR_BDTR
  2144. */
  2145. __STATIC_INLINE uint32_t FL_ATIM_GetDMABurstAddress(ATIM_Type *TIMx)
  2146. {
  2147. return (uint32_t)(READ_BIT(TIMx->DCR, ATIM_DCR_DBA_Msk));
  2148. }
  2149. /**
  2150. * @brief 配置DMA burst访问寄存器
  2151. * @rmtoll DMAR FL_ATIM_WriteDMAAddress
  2152. * @param TIMx TIM instance
  2153. * @param address
  2154. * @retval None
  2155. */
  2156. __STATIC_INLINE void FL_ATIM_WriteDMAAddress(ATIM_Type *TIMx, uint32_t address)
  2157. {
  2158. MODIFY_REG(TIMx->DMAR, (0xffffU << 0U), (address << 0U));
  2159. }
  2160. /**
  2161. * @brief 读取DMA burst访问寄存器值
  2162. * @rmtoll DMAR FL_ATIM_ReadDMAAddress
  2163. * @param TIMx TIM instance
  2164. * @retval
  2165. */
  2166. __STATIC_INLINE uint32_t FL_ATIM_ReadDMAAddress(ATIM_Type *TIMx)
  2167. {
  2168. return (uint32_t)(READ_BIT(TIMx->DMAR, 0xffffU) >> 0U);
  2169. }
  2170. /**
  2171. * @brief 输出比较清零使能
  2172. * @rmtoll CCMR OCCE FL_ATIM_OC_EnableClear
  2173. * @param TIMx TIM instance
  2174. * @param channel This parameter can be one of the following values:
  2175. * @arg @ref FL_ATIM_CHANNEL_1
  2176. * @arg @ref FL_ATIM_CHANNEL_2
  2177. * @arg @ref FL_ATIM_CHANNEL_3
  2178. * @arg @ref FL_ATIM_CHANNEL_4
  2179. * @retval None
  2180. */
  2181. __STATIC_INLINE void FL_ATIM_OC_EnableClear(ATIM_Type *TIMx, uint32_t channel)
  2182. {
  2183. if(channel < FL_ATIM_CHANNEL_3)
  2184. {
  2185. SET_BIT(TIMx->CCMR1, (ATIM_CCMR_OCCE_Msk << (channel * 8)));
  2186. }
  2187. else
  2188. {
  2189. SET_BIT(TIMx->CCMR2, (ATIM_CCMR_OCCE_Msk << ((channel - 2) * 8)));
  2190. }
  2191. }
  2192. /**
  2193. * @brief 读取输出比较清零使能状态
  2194. * @rmtoll CCMR OCCE FL_ATIM_OC_IsEnabledClear
  2195. * @param TIMx TIM instance
  2196. * @param channel This parameter can be one of the following values:
  2197. * @arg @ref FL_ATIM_CHANNEL_1
  2198. * @arg @ref FL_ATIM_CHANNEL_2
  2199. * @arg @ref FL_ATIM_CHANNEL_3
  2200. * @arg @ref FL_ATIM_CHANNEL_4
  2201. * @retval State of bit (1 or 0).
  2202. */
  2203. __STATIC_INLINE uint32_t FL_ATIM_OC_IsEnabledClear(ATIM_Type *TIMx, uint32_t channel)
  2204. {
  2205. if(channel < FL_ATIM_CHANNEL_3)
  2206. {
  2207. return (uint32_t)(READ_BIT(TIMx->CCMR1, (ATIM_CCMR_OCCE_Msk << (channel * 8))) == (ATIM_CCMR_OCCE_Msk << (channel * 8)));
  2208. }
  2209. else
  2210. {
  2211. return (uint32_t)(READ_BIT(TIMx->CCMR2, (ATIM_CCMR_OCCE_Msk << ((channel - 2) * 8))) == (ATIM_CCMR_OCCE_Msk << ((channel - 2) * 8)));
  2212. }
  2213. }
  2214. /**
  2215. * @brief 输出比较清零禁用
  2216. * @rmtoll CCMR OCCE FL_ATIM_OC_DisableClear
  2217. * @param TIMx TIM instance
  2218. * @param channel This parameter can be one of the following values:
  2219. * @arg @ref FL_ATIM_CHANNEL_1
  2220. * @arg @ref FL_ATIM_CHANNEL_2
  2221. * @arg @ref FL_ATIM_CHANNEL_3
  2222. * @arg @ref FL_ATIM_CHANNEL_4
  2223. * @retval None
  2224. */
  2225. __STATIC_INLINE void FL_ATIM_OC_DisableClear(ATIM_Type *TIMx, uint32_t channel)
  2226. {
  2227. if(channel < FL_ATIM_CHANNEL_3)
  2228. {
  2229. CLEAR_BIT(TIMx->CCMR1, (ATIM_CCMR_OCCE_Msk << (channel * 8)));
  2230. }
  2231. else
  2232. {
  2233. CLEAR_BIT(TIMx->CCMR2, (ATIM_CCMR_OCCE_Msk << ((channel - 2) * 8)));
  2234. }
  2235. }
  2236. /**
  2237. * @brief 输出比较模式配置
  2238. * @rmtoll CCMR OCM FL_ATIM_OC_SetMode
  2239. * @param TIMx TIM instance
  2240. * @param mode This parameter can be one of the following values:
  2241. * @arg @ref FL_ATIM_OC_MODE_FROZEN
  2242. * @arg @ref FL_ATIM_OC_MODE_ACTIVE
  2243. * @arg @ref FL_ATIM_OC_MODE_INACTIVE
  2244. * @arg @ref FL_ATIM_OC_MODE_TOGGLE
  2245. * @arg @ref FL_ATIM_OC_MODE_FORCED_INACTIVE
  2246. * @arg @ref FL_ATIM_OC_MODE_FORCED_ACTIVE
  2247. * @arg @ref FL_ATIM_OC_MODE_PWM1
  2248. * @arg @ref FL_ATIM_OC_MODE_PWM2
  2249. * @param channel This parameter can be one of the following values:
  2250. * @arg @ref FL_ATIM_CHANNEL_1
  2251. * @arg @ref FL_ATIM_CHANNEL_2
  2252. * @arg @ref FL_ATIM_CHANNEL_3
  2253. * @arg @ref FL_ATIM_CHANNEL_4
  2254. * @retval None
  2255. */
  2256. __STATIC_INLINE void FL_ATIM_OC_SetMode(ATIM_Type *TIMx, uint32_t mode, uint32_t channel)
  2257. {
  2258. if(channel < FL_ATIM_CHANNEL_3)
  2259. {
  2260. MODIFY_REG(TIMx->CCMR1, (ATIM_CCMR_OCM_Msk << (channel * 8)), (mode << (channel * 8)));
  2261. }
  2262. else
  2263. {
  2264. MODIFY_REG(TIMx->CCMR2, (ATIM_CCMR_OCM_Msk << ((channel - 2) * 8)), (mode << ((channel - 2) * 8)));
  2265. }
  2266. }
  2267. /**
  2268. * @brief 读取输出比较模式配置值
  2269. * @rmtoll CCMR OCM FL_ATIM_OC_GetMode
  2270. * @param TIMx TIM instance
  2271. * @param channel This parameter can be one of the following values:
  2272. * @arg @ref FL_ATIM_CHANNEL_1
  2273. * @arg @ref FL_ATIM_CHANNEL_2
  2274. * @arg @ref FL_ATIM_CHANNEL_3
  2275. * @arg @ref FL_ATIM_CHANNEL_4
  2276. * @retval Returned value can be one of the following values:
  2277. * @arg @ref FL_ATIM_OC_MODE_FROZEN
  2278. * @arg @ref FL_ATIM_OC_MODE_ACTIVE
  2279. * @arg @ref FL_ATIM_OC_MODE_INACTIVE
  2280. * @arg @ref FL_ATIM_OC_MODE_TOGGLE
  2281. * @arg @ref FL_ATIM_OC_MODE_FORCED_INACTIVE
  2282. * @arg @ref FL_ATIM_OC_MODE_FORCED_ACTIVE
  2283. * @arg @ref FL_ATIM_OC_MODE_PWM1
  2284. * @arg @ref FL_ATIM_OC_MODE_PWM2
  2285. */
  2286. __STATIC_INLINE uint32_t FL_ATIM_OC_GetMode(ATIM_Type *TIMx, uint32_t channel)
  2287. {
  2288. if(channel < FL_ATIM_CHANNEL_3)
  2289. {
  2290. return (uint32_t)(READ_BIT(TIMx->CCMR1, (ATIM_CCMR_OCM_Msk << (channel * 8))));
  2291. }
  2292. else
  2293. {
  2294. return (uint32_t)(READ_BIT(TIMx->CCMR2, (ATIM_CCMR_OCM_Msk << ((channel - 2) * 8))));
  2295. }
  2296. }
  2297. /**
  2298. * @brief 输出比较预装载使能
  2299. * @rmtoll CCMR OCPE FL_ATIM_OC_EnablePreload
  2300. * @param TIMx TIM instance
  2301. * @param channel This parameter can be one of the following values:
  2302. * @arg @ref FL_ATIM_CHANNEL_1
  2303. * @arg @ref FL_ATIM_CHANNEL_2
  2304. * @arg @ref FL_ATIM_CHANNEL_3
  2305. * @arg @ref FL_ATIM_CHANNEL_4
  2306. * @retval None
  2307. */
  2308. __STATIC_INLINE void FL_ATIM_OC_EnablePreload(ATIM_Type *TIMx, uint32_t channel)
  2309. {
  2310. if(channel < FL_ATIM_CHANNEL_3)
  2311. {
  2312. SET_BIT(TIMx->CCMR1, (ATIM_CCMR_OCPE_Msk << (channel * 8)));
  2313. }
  2314. else
  2315. {
  2316. SET_BIT(TIMx->CCMR2, (ATIM_CCMR_OCPE_Msk << ((channel - 2) * 8)));
  2317. }
  2318. }
  2319. /**
  2320. * @brief 读取输出比较预装载使能状态
  2321. * @rmtoll CCMR OCPE FL_ATIM_OC_IsEnabledPreload
  2322. * @param TIMx TIM instance
  2323. * @param channel This parameter can be one of the following values:
  2324. * @arg @ref FL_ATIM_CHANNEL_1
  2325. * @arg @ref FL_ATIM_CHANNEL_2
  2326. * @arg @ref FL_ATIM_CHANNEL_3
  2327. * @arg @ref FL_ATIM_CHANNEL_4
  2328. * @retval State of bit (1 or 0).
  2329. */
  2330. __STATIC_INLINE uint32_t FL_ATIM_OC_IsEnabledPreload(ATIM_Type *TIMx, uint32_t channel)
  2331. {
  2332. if(channel < FL_ATIM_CHANNEL_3)
  2333. {
  2334. return (uint32_t)(READ_BIT(TIMx->CCMR1, (ATIM_CCMR_OCPE_Msk << (channel * 8))) == (ATIM_CCMR_OCPE_Msk << (channel * 8)));
  2335. }
  2336. else
  2337. {
  2338. return (uint32_t)(READ_BIT(TIMx->CCMR2, (ATIM_CCMR_OCPE_Msk << ((channel - 2) * 8))) == (ATIM_CCMR_OCPE_Msk << ((channel - 2) * 8)));
  2339. }
  2340. }
  2341. /**
  2342. * @brief 输出比较预装载禁用
  2343. * @rmtoll CCMR OCPE FL_ATIM_OC_DisablePreload
  2344. * @param TIMx TIM instance
  2345. * @param channel This parameter can be one of the following values:
  2346. * @arg @ref FL_ATIM_CHANNEL_1
  2347. * @arg @ref FL_ATIM_CHANNEL_2
  2348. * @arg @ref FL_ATIM_CHANNEL_3
  2349. * @arg @ref FL_ATIM_CHANNEL_4
  2350. * @retval None
  2351. */
  2352. __STATIC_INLINE void FL_ATIM_OC_DisablePreload(ATIM_Type *TIMx, uint32_t channel)
  2353. {
  2354. if(channel < FL_ATIM_CHANNEL_3)
  2355. {
  2356. CLEAR_BIT(TIMx->CCMR1, (ATIM_CCMR_OCPE_Msk << (channel * 8)));
  2357. }
  2358. else
  2359. {
  2360. CLEAR_BIT(TIMx->CCMR2, (ATIM_CCMR_OCPE_Msk << ((channel - 2) * 8)));
  2361. }
  2362. }
  2363. /**
  2364. * @brief 输出比较快速使能
  2365. * @rmtoll CCMR OCFE FL_ATIM_OC_EnableFastMode
  2366. * @param TIMx TIM instance
  2367. * @param channel This parameter can be one of the following values:
  2368. * @arg @ref FL_ATIM_CHANNEL_1
  2369. * @arg @ref FL_ATIM_CHANNEL_2
  2370. * @arg @ref FL_ATIM_CHANNEL_3
  2371. * @arg @ref FL_ATIM_CHANNEL_4
  2372. * @retval None
  2373. */
  2374. __STATIC_INLINE void FL_ATIM_OC_EnableFastMode(ATIM_Type *TIMx, uint32_t channel)
  2375. {
  2376. if(channel < FL_ATIM_CHANNEL_3)
  2377. {
  2378. SET_BIT(TIMx->CCMR1, (ATIM_CCMR_OCFE_Msk << (channel * 8)));
  2379. }
  2380. else
  2381. {
  2382. SET_BIT(TIMx->CCMR2, (ATIM_CCMR_OCFE_Msk << ((channel - 2) * 8)));
  2383. }
  2384. }
  2385. /**
  2386. * @brief 获取输出比较快速使能状态
  2387. * @rmtoll CCMR OCFE FL_ATIM_OC_IsEnabledFastMode
  2388. * @param TIMx TIM instance
  2389. * @param channel This parameter can be one of the following values:
  2390. * @arg @ref FL_ATIM_CHANNEL_1
  2391. * @arg @ref FL_ATIM_CHANNEL_2
  2392. * @arg @ref FL_ATIM_CHANNEL_3
  2393. * @arg @ref FL_ATIM_CHANNEL_4
  2394. * @retval State of bit (1 or 0).
  2395. */
  2396. __STATIC_INLINE uint32_t FL_ATIM_OC_IsEnabledFastMode(ATIM_Type *TIMx, uint32_t channel)
  2397. {
  2398. if(channel < FL_ATIM_CHANNEL_3)
  2399. {
  2400. return (uint32_t)(READ_BIT(TIMx->CCMR1, (ATIM_CCMR_OCFE_Msk << (channel * 8))) == (ATIM_CCMR_OCFE_Msk << (channel * 8)));
  2401. }
  2402. else
  2403. {
  2404. return (uint32_t)(READ_BIT(TIMx->CCMR2, (ATIM_CCMR_OCFE_Msk << ((channel - 2) * 8))) == (ATIM_CCMR_OCFE_Msk << ((channel - 2) * 8)));
  2405. }
  2406. }
  2407. /**
  2408. * @brief 输出比较快速禁用
  2409. * @rmtoll CCMR OCFE FL_ATIM_OC_DisableFastMode
  2410. * @param TIMx TIM instance
  2411. * @param channel This parameter can be one of the following values:
  2412. * @arg @ref FL_ATIM_CHANNEL_1
  2413. * @arg @ref FL_ATIM_CHANNEL_2
  2414. * @arg @ref FL_ATIM_CHANNEL_3
  2415. * @arg @ref FL_ATIM_CHANNEL_4
  2416. * @retval None
  2417. */
  2418. __STATIC_INLINE void FL_ATIM_OC_DisableFastMode(ATIM_Type *TIMx, uint32_t channel)
  2419. {
  2420. if(channel < FL_ATIM_CHANNEL_3)
  2421. {
  2422. CLEAR_BIT(TIMx->CCMR1, (ATIM_CCMR_OCFE_Msk << (channel * 8)));
  2423. }
  2424. else
  2425. {
  2426. CLEAR_BIT(TIMx->CCMR2, (ATIM_CCMR_OCFE_Msk << ((channel - 2) * 8)));
  2427. }
  2428. }
  2429. /**
  2430. * @brief 设置输入捕捉滤波器
  2431. * @rmtoll CCMR ICF FL_ATIM_IC_SetFilter
  2432. * @param TIMx TIM instance
  2433. * @param filter This parameter can be one of the following values:
  2434. * @arg @ref FL_ATIM_IC_FILTER_DIV1
  2435. * @arg @ref FL_ATIM_IC_FILTER_DIV1_N2
  2436. * @arg @ref FL_ATIM_IC_FILTER_DIV1_N4
  2437. * @arg @ref FL_ATIM_IC_FILTER_DIV1_N8
  2438. * @arg @ref FL_ATIM_IC_FILTER_DIV2_N6
  2439. * @arg @ref FL_ATIM_IC_FILTER_DIV2_N8
  2440. * @arg @ref FL_ATIM_IC_FILTER_DIV4_N6
  2441. * @arg @ref FL_ATIM_IC_FILTER_DIV4_N8
  2442. * @arg @ref FL_ATIM_IC_FILTER_DIV8_N6
  2443. * @arg @ref FL_ATIM_IC_FILTER_DIV8_N8
  2444. * @arg @ref FL_ATIM_IC_FILTER_DIV16_N5
  2445. * @arg @ref FL_ATIM_IC_FILTER_DIV16_N6
  2446. * @arg @ref FL_ATIM_IC_FILTER_DIV16_N8
  2447. * @arg @ref FL_ATIM_IC_FILTER_DIV32_N5
  2448. * @arg @ref FL_ATIM_IC_FILTER_DIV32_N6
  2449. * @arg @ref FL_ATIM_IC_FILTER_DIV32_N8
  2450. * @param channel This parameter can be one of the following values:
  2451. * @arg @ref FL_ATIM_CHANNEL_1
  2452. * @arg @ref FL_ATIM_CHANNEL_2
  2453. * @arg @ref FL_ATIM_CHANNEL_3
  2454. * @arg @ref FL_ATIM_CHANNEL_4
  2455. * @retval None
  2456. */
  2457. __STATIC_INLINE void FL_ATIM_IC_SetFilter(ATIM_Type *TIMx, uint32_t filter, uint32_t channel)
  2458. {
  2459. if(channel < FL_ATIM_CHANNEL_3)
  2460. {
  2461. MODIFY_REG(TIMx->CCMR1, (ATIM_CCMR_ICF_Msk << (channel * 8)), (filter << (channel * 8)));
  2462. }
  2463. else
  2464. {
  2465. MODIFY_REG(TIMx->CCMR2, (ATIM_CCMR_ICF_Msk << ((channel - 2) * 8)), (filter << ((channel - 2) * 8)));
  2466. }
  2467. }
  2468. /**
  2469. * @brief 读取输入滤波器值
  2470. * @rmtoll CCMR ICF FL_ATIM_IC_GetFilter
  2471. * @param TIMx TIM instance
  2472. * @param channel This parameter can be one of the following values:
  2473. * @arg @ref FL_ATIM_CHANNEL_1
  2474. * @arg @ref FL_ATIM_CHANNEL_2
  2475. * @arg @ref FL_ATIM_CHANNEL_3
  2476. * @arg @ref FL_ATIM_CHANNEL_4
  2477. * @retval Returned value can be one of the following values:
  2478. * @arg @ref FL_ATIM_IC_FILTER_DIV1
  2479. * @arg @ref FL_ATIM_IC_FILTER_DIV1_N2
  2480. * @arg @ref FL_ATIM_IC_FILTER_DIV1_N4
  2481. * @arg @ref FL_ATIM_IC_FILTER_DIV1_N8
  2482. * @arg @ref FL_ATIM_IC_FILTER_DIV2_N6
  2483. * @arg @ref FL_ATIM_IC_FILTER_DIV2_N8
  2484. * @arg @ref FL_ATIM_IC_FILTER_DIV4_N6
  2485. * @arg @ref FL_ATIM_IC_FILTER_DIV4_N8
  2486. * @arg @ref FL_ATIM_IC_FILTER_DIV8_N6
  2487. * @arg @ref FL_ATIM_IC_FILTER_DIV8_N8
  2488. * @arg @ref FL_ATIM_IC_FILTER_DIV16_N5
  2489. * @arg @ref FL_ATIM_IC_FILTER_DIV16_N6
  2490. * @arg @ref FL_ATIM_IC_FILTER_DIV16_N8
  2491. * @arg @ref FL_ATIM_IC_FILTER_DIV32_N5
  2492. * @arg @ref FL_ATIM_IC_FILTER_DIV32_N6
  2493. * @arg @ref FL_ATIM_IC_FILTER_DIV32_N8
  2494. */
  2495. __STATIC_INLINE uint32_t FL_ATIM_IC_GetFilter(ATIM_Type *TIMx, uint32_t channel)
  2496. {
  2497. if(channel < FL_ATIM_CHANNEL_3)
  2498. {
  2499. return (uint32_t)(READ_BIT(TIMx->CCMR1, (ATIM_CCMR_ICF_Msk << (channel * 8))));
  2500. }
  2501. else
  2502. {
  2503. return (uint32_t)(READ_BIT(TIMx->CCMR2, (ATIM_CCMR_ICF_Msk << ((channel - 2) * 8))));
  2504. }
  2505. }
  2506. /**
  2507. * @brief 设置输入捕捉预分频
  2508. * @rmtoll CCMR ICPSC FL_ATIM_IC_SetPrescaler
  2509. * @param TIMx TIM instance
  2510. * @param psc This parameter can be one of the following values:
  2511. * @arg @ref FL_ATIM_IC_PSC_DIV1
  2512. * @arg @ref FL_ATIM_IC_PSC_DIV2
  2513. * @arg @ref FL_ATIM_IC_PSC_DIV4
  2514. * @arg @ref FL_ATIM_IC_PSC_DIV8
  2515. * @param channel This parameter can be one of the following values:
  2516. * @arg @ref FL_ATIM_CHANNEL_1
  2517. * @arg @ref FL_ATIM_CHANNEL_2
  2518. * @arg @ref FL_ATIM_CHANNEL_3
  2519. * @arg @ref FL_ATIM_CHANNEL_4
  2520. * @retval None
  2521. */
  2522. __STATIC_INLINE void FL_ATIM_IC_SetPrescaler(ATIM_Type *TIMx, uint32_t psc, uint32_t channel)
  2523. {
  2524. if(channel < FL_ATIM_CHANNEL_3)
  2525. {
  2526. MODIFY_REG(TIMx->CCMR1, (ATIM_CCMR_ICPSC_Msk << (channel * 8)), (psc << (channel * 8)));
  2527. }
  2528. else
  2529. {
  2530. MODIFY_REG(TIMx->CCMR2, (ATIM_CCMR_ICPSC_Msk << ((channel - 2) * 8)), (psc << ((channel - 2) * 8)));
  2531. }
  2532. }
  2533. /**
  2534. * @brief 读取输入捕捉预分频值
  2535. * @rmtoll CCMR ICPSC FL_ATIM_IC_GetPrescaler
  2536. * @param TIMx TIM instance
  2537. * @param channel This parameter can be one of the following values:
  2538. * @arg @ref FL_ATIM_CHANNEL_1
  2539. * @arg @ref FL_ATIM_CHANNEL_2
  2540. * @arg @ref FL_ATIM_CHANNEL_3
  2541. * @arg @ref FL_ATIM_CHANNEL_4
  2542. * @retval Returned value can be one of the following values:
  2543. * @arg @ref FL_ATIM_IC_PSC_DIV1
  2544. * @arg @ref FL_ATIM_IC_PSC_DIV2
  2545. * @arg @ref FL_ATIM_IC_PSC_DIV4
  2546. * @arg @ref FL_ATIM_IC_PSC_DIV8
  2547. */
  2548. __STATIC_INLINE uint32_t FL_ATIM_IC_GetPrescaler(ATIM_Type *TIMx, uint32_t channel)
  2549. {
  2550. if(channel < FL_ATIM_CHANNEL_3)
  2551. {
  2552. return (uint32_t)(READ_BIT(TIMx->CCMR1, (ATIM_CCMR_ICPSC_Msk << (channel * 8))));
  2553. }
  2554. else
  2555. {
  2556. return (uint32_t)(READ_BIT(TIMx->CCMR2, (ATIM_CCMR_ICPSC_Msk << ((channel - 2) * 8))));
  2557. }
  2558. }
  2559. /**
  2560. * @brief 捕捉/比较通道选择
  2561. * @rmtoll CCMR CCS FL_ATIM_CC_SetChannelMode
  2562. * @param TIMx TIM instance
  2563. * @param mode This parameter can be one of the following values:
  2564. * @arg @ref FL_ATIM_CHANNEL_MODE_OUTPUT
  2565. * @arg @ref FL_ATIM_CHANNEL_MODE_INPUT_NORMAL
  2566. * @arg @ref FL_ATIM_CHANNEL_MODE_INPUT_CROSSOVER
  2567. * @arg @ref FL_ATIM_CHANNEL_MODE_INPUT_TRC
  2568. * @param channel This parameter can be one of the following values:
  2569. * @arg @ref FL_ATIM_CHANNEL_1
  2570. * @arg @ref FL_ATIM_CHANNEL_2
  2571. * @arg @ref FL_ATIM_CHANNEL_3
  2572. * @arg @ref FL_ATIM_CHANNEL_4
  2573. * @retval None
  2574. */
  2575. __STATIC_INLINE void FL_ATIM_CC_SetChannelMode(ATIM_Type *TIMx, uint32_t mode, uint32_t channel)
  2576. {
  2577. if(channel < FL_ATIM_CHANNEL_3)
  2578. {
  2579. MODIFY_REG(TIMx->CCMR1, (ATIM_CCMR_CCS_Msk << (channel * 8)), (mode << (channel * 8)));
  2580. }
  2581. else
  2582. {
  2583. MODIFY_REG(TIMx->CCMR2, (ATIM_CCMR_CCS_Msk << ((channel - 2) * 8)), (mode << ((channel - 2) * 8)));
  2584. }
  2585. }
  2586. /**
  2587. * @brief 获取捕捉/比较通道
  2588. * @rmtoll CCMR CCS FL_ATIM_CC_GetChannelMode
  2589. * @param TIMx TIM instance
  2590. * @param channel This parameter can be one of the following values:
  2591. * @arg @ref FL_ATIM_CHANNEL_1
  2592. * @arg @ref FL_ATIM_CHANNEL_2
  2593. * @arg @ref FL_ATIM_CHANNEL_3
  2594. * @arg @ref FL_ATIM_CHANNEL_4
  2595. * @retval Returned value can be one of the following values:
  2596. * @arg @ref FL_ATIM_CHANNEL_MODE_OUTPUT
  2597. * @arg @ref FL_ATIM_CHANNEL_MODE_INPUT_NORMAL
  2598. * @arg @ref FL_ATIM_CHANNEL_MODE_INPUT_CROSSOVER
  2599. * @arg @ref FL_ATIM_CHANNEL_MODE_INPUT_TRC
  2600. */
  2601. __STATIC_INLINE uint32_t FL_ATIM_CC_GetChannelMode(ATIM_Type *TIMx, uint32_t channel)
  2602. {
  2603. if(channel < FL_ATIM_CHANNEL_3)
  2604. {
  2605. return (uint32_t)(READ_BIT(TIMx->CCMR1, (ATIM_CCMR_CCS_Msk << (channel * 8))));
  2606. }
  2607. else
  2608. {
  2609. return (uint32_t)(READ_BIT(TIMx->CCMR2, (ATIM_CCMR_CCS_Msk << ((channel - 2) * 8))));
  2610. }
  2611. }
  2612. /**
  2613. * @brief 设置捕捉/比较互补输出极性
  2614. * @note
  2615. * @rmtoll CCER CCNP FL_ATIM_OC_SetReverseChannelPolarity
  2616. * @param TIMx TIM instance
  2617. * @param polarity This parameter can be one of the following values:
  2618. * @arg @ref FL_ATIM_OCN_POLARITY_NORMAL
  2619. * @arg @ref FL_ATIM_OCN_POLARITY_INVERT
  2620. * @param channel This parameter can be one of the following values:
  2621. * @arg @ref FL_ATIM_CHANNEL_1
  2622. * @arg @ref FL_ATIM_CHANNEL_2
  2623. * @arg @ref FL_ATIM_CHANNEL_3
  2624. * @arg @ref FL_ATIM_CHANNEL_4
  2625. * @retval None
  2626. */
  2627. __STATIC_INLINE void FL_ATIM_OC_SetReverseChannelPolarity(ATIM_Type *TIMx, uint32_t polarity, uint32_t channel)
  2628. {
  2629. MODIFY_REG(TIMx->CCER, (ATIM_CCER_CCNP_Msk << (channel * 4)), (polarity << (channel * 4)));
  2630. }
  2631. /**
  2632. * @brief 读取捕捉/比较互补输出极性
  2633. * @note
  2634. * @rmtoll CCER CCNP FL_ATIM_OC_GetReverseChannelPolarty
  2635. * @param TIMx TIM instance
  2636. * @param channel This parameter can be one of the following values:
  2637. * @arg @ref FL_ATIM_CHANNEL_1
  2638. * @arg @ref FL_ATIM_CHANNEL_2
  2639. * @arg @ref FL_ATIM_CHANNEL_3
  2640. * @arg @ref FL_ATIM_CHANNEL_4
  2641. * @retval Returned value can be one of the following values:
  2642. * @arg @ref FL_ATIM_OCN_POLARITY_NORMAL
  2643. * @arg @ref FL_ATIM_OCN_POLARITY_INVERT
  2644. */
  2645. __STATIC_INLINE uint32_t FL_ATIM_OC_GetReverseChannelPolarity(ATIM_Type *TIMx, uint32_t channel)
  2646. {
  2647. return (uint32_t)(READ_BIT(TIMx->CCER, (ATIM_CCER_CCNP_Msk << (channel * 4))));
  2648. }
  2649. /**
  2650. * @brief 捕捉/比较互补输出使能
  2651. * @note
  2652. * @rmtoll CCER CCNE FL_ATIM_OC_EnableReverseChannel
  2653. * @param TIMx TIM instance
  2654. * @param channel This parameter can be one of the following values:
  2655. * @arg @ref FL_ATIM_CHANNEL_1
  2656. * @arg @ref FL_ATIM_CHANNEL_2
  2657. * @arg @ref FL_ATIM_CHANNEL_3
  2658. * @arg @ref FL_ATIM_CHANNEL_4
  2659. * @retval None
  2660. */
  2661. __STATIC_INLINE void FL_ATIM_OC_EnableReverseChannel(ATIM_Type *TIMx, uint32_t channel)
  2662. {
  2663. SET_BIT(TIMx->CCER, (ATIM_CCER_CCNE_Msk << (channel * 4)));
  2664. }
  2665. /**
  2666. * @brief 读取捕捉/比较互补输出使能状态
  2667. * @note
  2668. * @rmtoll CCER CCNE FL_ATIM_OC_IsEnabledReverseChannel
  2669. * @param TIMx TIM instance
  2670. * @param channel This parameter can be one of the following values:
  2671. * @arg @ref FL_ATIM_CHANNEL_1
  2672. * @arg @ref FL_ATIM_CHANNEL_2
  2673. * @arg @ref FL_ATIM_CHANNEL_3
  2674. * @arg @ref FL_ATIM_CHANNEL_4
  2675. * @retval State of bit (1 or 0).
  2676. */
  2677. __STATIC_INLINE uint32_t FL_ATIM_OC_IsEnabledReverseChannel(ATIM_Type *TIMx, uint32_t channel)
  2678. {
  2679. return (uint32_t)(READ_BIT(TIMx->CCER, (ATIM_CCER_CCNE_Msk << (channel * 4))) == (ATIM_CCER_CCNE_Msk << (channel * 4)));
  2680. }
  2681. /**
  2682. * @brief 捕捉/比较互补输出禁用
  2683. * @note
  2684. * @rmtoll CCER CCNE FL_ATIM_OC_DisableReverseChannel
  2685. * @param TIMx TIM instance
  2686. * @param channel This parameter can be one of the following values:
  2687. * @arg @ref FL_ATIM_CHANNEL_1
  2688. * @arg @ref FL_ATIM_CHANNEL_2
  2689. * @arg @ref FL_ATIM_CHANNEL_3
  2690. * @arg @ref FL_ATIM_CHANNEL_4
  2691. * @retval None
  2692. */
  2693. __STATIC_INLINE void FL_ATIM_OC_DisableReverseChannel(ATIM_Type *TIMx, uint32_t channel)
  2694. {
  2695. CLEAR_BIT(TIMx->CCER, (ATIM_CCER_CCNE_Msk << (channel * 4)));
  2696. }
  2697. /**
  2698. * @brief CC1通道配置为输出时,设置捕捉/比较输出极性
  2699. * @rmtoll CCER CCOP FL_ATIM_OC_SetChannelPolarity
  2700. * @param TIMx TIM instance
  2701. * @param polarity This parameter can be one of the following values:
  2702. * @arg @ref FL_ATIM_OC_POLARITY_NORMAL
  2703. * @arg @ref FL_ATIM_OC_POLARITY_INVERT
  2704. * @param channel This parameter can be one of the following values:
  2705. * @arg @ref FL_ATIM_CHANNEL_1
  2706. * @arg @ref FL_ATIM_CHANNEL_2
  2707. * @arg @ref FL_ATIM_CHANNEL_3
  2708. * @arg @ref FL_ATIM_CHANNEL_4
  2709. * @retval None
  2710. */
  2711. __STATIC_INLINE void FL_ATIM_OC_SetChannelPolarity(ATIM_Type *TIMx, uint32_t polarity, uint32_t channel)
  2712. {
  2713. MODIFY_REG(TIMx->CCER, (ATIM_CCER_CCOP_Msk << (channel * 4)), (polarity << (channel * 4)));
  2714. }
  2715. /**
  2716. * @brief CC1通道配置为输出时,读取捕捉/比较输出极性
  2717. * @rmtoll CCER CCOP FL_ATIM_OC_GetChannelPolarity
  2718. * @param TIMx TIM instance
  2719. * @param channel This parameter can be one of the following values:
  2720. * @arg @ref FL_ATIM_CHANNEL_1
  2721. * @arg @ref FL_ATIM_CHANNEL_2
  2722. * @arg @ref FL_ATIM_CHANNEL_3
  2723. * @arg @ref FL_ATIM_CHANNEL_4
  2724. * @retval Returned value can be one of the following values:
  2725. * @arg @ref FL_ATIM_OC_POLARITY_NORMAL
  2726. * @arg @ref FL_ATIM_OC_POLARITY_INVERT
  2727. */
  2728. __STATIC_INLINE uint32_t FL_ATIM_OC_GetChannelPolarity(ATIM_Type *TIMx, uint32_t channel)
  2729. {
  2730. return (uint32_t)(READ_BIT(TIMx->CCER, (ATIM_CCER_CCOP_Msk << (channel * 4))));
  2731. }
  2732. /**
  2733. * @brief CC1通道配置为输入时,设置捕捉/比较输出极性
  2734. * @rmtoll CCER CCIP FL_ATIM_IC_SetChannelPolarity
  2735. * @param TIMx TIM instance
  2736. * @param polarity This parameter can be one of the following values:
  2737. * @arg @ref FL_ATIM_IC_POLARITY_NORMAL
  2738. * @arg @ref FL_ATIM_IC_POLARITY_INVERT
  2739. * @param channel This parameter can be one of the following values:
  2740. * @arg @ref FL_ATIM_CHANNEL_1
  2741. * @arg @ref FL_ATIM_CHANNEL_2
  2742. * @arg @ref FL_ATIM_CHANNEL_3
  2743. * @arg @ref FL_ATIM_CHANNEL_4
  2744. * @retval None
  2745. */
  2746. __STATIC_INLINE void FL_ATIM_IC_SetChannelPolarity(ATIM_Type *TIMx, uint32_t polarity, uint32_t channel)
  2747. {
  2748. MODIFY_REG(TIMx->CCER, (ATIM_CCER_CCIP_Msk << (channel * 4)), (polarity << (channel * 4)));
  2749. }
  2750. /**
  2751. * @brief CC1通道配置为输入时,设置捕捉/比较输出极性
  2752. * @rmtoll CCER CCIP FL_ATIM_IC_GetChannelPolarity
  2753. * @param TIMx TIM instance
  2754. * @param channel This parameter can be one of the following values:
  2755. * @arg @ref FL_ATIM_CHANNEL_1
  2756. * @arg @ref FL_ATIM_CHANNEL_2
  2757. * @arg @ref FL_ATIM_CHANNEL_3
  2758. * @arg @ref FL_ATIM_CHANNEL_4
  2759. * @retval Returned value can be one of the following values:
  2760. * @arg @ref FL_ATIM_IC_POLARITY_NORMAL
  2761. * @arg @ref FL_ATIM_IC_POLARITY_INVERT
  2762. */
  2763. __STATIC_INLINE uint32_t FL_ATIM_IC_GetChannelPolarity(ATIM_Type *TIMx, uint32_t channel)
  2764. {
  2765. return (uint32_t)(READ_BIT(TIMx->CCER, (ATIM_CCER_CCIP_Msk << (channel * 4))));
  2766. }
  2767. /**
  2768. * @brief CC1通道配置为输出时,捕捉/比较输出使能
  2769. * @rmtoll CCER CCOE FL_ATIM_OC_EnableChannel
  2770. * @param TIMx TIM instance
  2771. * @param channel This parameter can be one of the following values:
  2772. * @arg @ref FL_ATIM_CHANNEL_1
  2773. * @arg @ref FL_ATIM_CHANNEL_2
  2774. * @arg @ref FL_ATIM_CHANNEL_3
  2775. * @arg @ref FL_ATIM_CHANNEL_4
  2776. * @retval None
  2777. */
  2778. __STATIC_INLINE void FL_ATIM_OC_EnableChannel(ATIM_Type *TIMx, uint32_t channel)
  2779. {
  2780. SET_BIT(TIMx->CCER, (ATIM_CCER_CCOE_Msk << (channel * 4)));
  2781. }
  2782. /**
  2783. * @brief CC1通道配置为输出时,读取捕捉/比较输出使能状态
  2784. * @rmtoll CCER CCOE FL_ATIM_OC_IsEnabledChannel
  2785. * @param TIMx TIM instance
  2786. * @param channel This parameter can be one of the following values:
  2787. * @arg @ref FL_ATIM_CHANNEL_1
  2788. * @arg @ref FL_ATIM_CHANNEL_2
  2789. * @arg @ref FL_ATIM_CHANNEL_3
  2790. * @arg @ref FL_ATIM_CHANNEL_4
  2791. * @retval State of bit (1 or 0).
  2792. */
  2793. __STATIC_INLINE uint32_t FL_ATIM_OC_IsEnabledChannel(ATIM_Type *TIMx, uint32_t channel)
  2794. {
  2795. return (uint32_t)(READ_BIT(TIMx->CCER, (ATIM_CCER_CCOE_Msk << (channel * 4))) == (ATIM_CCER_CCOE_Msk << (channel * 4)));
  2796. }
  2797. /**
  2798. * @brief CC1通道配置为输出时,捕捉/比较输出禁用
  2799. * @rmtoll CCER CCOE FL_ATIM_OC_DisableChannel
  2800. * @param TIMx TIM instance
  2801. * @param channel This parameter can be one of the following values:
  2802. * @arg @ref FL_ATIM_CHANNEL_1
  2803. * @arg @ref FL_ATIM_CHANNEL_2
  2804. * @arg @ref FL_ATIM_CHANNEL_3
  2805. * @arg @ref FL_ATIM_CHANNEL_4
  2806. * @retval None
  2807. */
  2808. __STATIC_INLINE void FL_ATIM_OC_DisableChannel(ATIM_Type *TIMx, uint32_t channel)
  2809. {
  2810. CLEAR_BIT(TIMx->CCER, (ATIM_CCER_CCOE_Msk << (channel * 4)));
  2811. }
  2812. /**
  2813. * @brief CC1通道配置为输入时,捕捉/比较输出使能
  2814. * @rmtoll CCER CCIE FL_ATIM_IC_EnableChannel
  2815. * @param TIMx TIM instance
  2816. * @param channel This parameter can be one of the following values:
  2817. * @arg @ref FL_ATIM_CHANNEL_1
  2818. * @arg @ref FL_ATIM_CHANNEL_2
  2819. * @arg @ref FL_ATIM_CHANNEL_3
  2820. * @arg @ref FL_ATIM_CHANNEL_4
  2821. * @retval None
  2822. */
  2823. __STATIC_INLINE void FL_ATIM_IC_EnableChannel(ATIM_Type *TIMx, uint32_t channel)
  2824. {
  2825. SET_BIT(TIMx->CCER, (ATIM_CCER_CCIE_Msk << (channel * 4)));
  2826. }
  2827. /**
  2828. * @brief CC1通道配置为输入时,读取捕捉/比较输出使能状态
  2829. * @rmtoll CCER CCIE FL_ATIM_IC_IsEnabledChannel
  2830. * @param TIMx TIM instance
  2831. * @param channel This parameter can be one of the following values:
  2832. * @arg @ref FL_ATIM_CHANNEL_1
  2833. * @arg @ref FL_ATIM_CHANNEL_2
  2834. * @arg @ref FL_ATIM_CHANNEL_3
  2835. * @arg @ref FL_ATIM_CHANNEL_4
  2836. * @retval State of bit (1 or 0).
  2837. */
  2838. __STATIC_INLINE uint32_t FL_ATIM_IC_IsEnabledChannel(ATIM_Type *TIMx, uint32_t channel)
  2839. {
  2840. return (uint32_t)(READ_BIT(TIMx->CCER, (ATIM_CCER_CCIE_Msk << (channel * 4))) == (ATIM_CCER_CCIE_Msk << (channel * 4)));
  2841. }
  2842. /**
  2843. * @brief CC1通道配置为输入时,捕捉/比较输出禁用
  2844. * @rmtoll CCER CCIE FL_ATIM_IC_DisableChannel
  2845. * @param TIMx TIM instance
  2846. * @param channel This parameter can be one of the following values:
  2847. * @arg @ref FL_ATIM_CHANNEL_1
  2848. * @arg @ref FL_ATIM_CHANNEL_2
  2849. * @arg @ref FL_ATIM_CHANNEL_3
  2850. * @arg @ref FL_ATIM_CHANNEL_4
  2851. * @retval None
  2852. */
  2853. __STATIC_INLINE void FL_ATIM_IC_DisableChannel(ATIM_Type *TIMx, uint32_t channel)
  2854. {
  2855. CLEAR_BIT(TIMx->CCER, (ATIM_CCER_CCIE_Msk << (channel * 4)));
  2856. }
  2857. /**
  2858. * @brief 设置重复计数值
  2859. * @note
  2860. * @rmtoll RCR FL_ATIM_WriteRepetitionCounter
  2861. * @param TIMx TIM instance
  2862. * @param repeatCounter
  2863. * @retval None
  2864. */
  2865. __STATIC_INLINE void FL_ATIM_WriteRepetitionCounter(ATIM_Type *TIMx, uint32_t repeatCounter)
  2866. {
  2867. MODIFY_REG(TIMx->RCR, (0xffU << 0U), (repeatCounter << 0U));
  2868. }
  2869. /**
  2870. * @brief 读取重复计数值
  2871. * @note
  2872. * @rmtoll RCR FL_ATIM_ReadRepetitionCounter
  2873. * @param TIMx TIM instance
  2874. * @retval
  2875. */
  2876. __STATIC_INLINE uint32_t FL_ATIM_ReadRepetitionCounter(ATIM_Type *TIMx)
  2877. {
  2878. return (uint32_t)(READ_BIT(TIMx->RCR, 0xffU) >> 0U);
  2879. }
  2880. /**
  2881. * @brief 主控输出使能
  2882. * @note
  2883. * @rmtoll BDTR MOE FL_ATIM_EnableALLOutput
  2884. * @param TIMx TIM instance
  2885. * @retval None
  2886. */
  2887. __STATIC_INLINE void FL_ATIM_EnableALLOutput(ATIM_Type *TIMx)
  2888. {
  2889. SET_BIT(TIMx->BDTR, ATIM_BDTR_MOE_Msk);
  2890. }
  2891. /**
  2892. * @brief 读取主控输出使能状态
  2893. * @note
  2894. * @rmtoll BDTR MOE FL_ATIM_IsEnabledALLOutput
  2895. * @param TIMx TIM instance
  2896. * @retval State of bit (1 or 0).
  2897. */
  2898. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledALLOutput(ATIM_Type *TIMx)
  2899. {
  2900. return (uint32_t)(READ_BIT(TIMx->BDTR, ATIM_BDTR_MOE_Msk) == ATIM_BDTR_MOE_Msk);
  2901. }
  2902. /**
  2903. * @brief 主控输出禁用
  2904. * @note
  2905. * @rmtoll BDTR MOE FL_ATIM_DisableALLOutput
  2906. * @param TIMx TIM instance
  2907. * @retval None
  2908. */
  2909. __STATIC_INLINE void FL_ATIM_DisableALLOutput(ATIM_Type *TIMx)
  2910. {
  2911. CLEAR_BIT(TIMx->BDTR, ATIM_BDTR_MOE_Msk);
  2912. }
  2913. /**
  2914. * @brief 自动输出使能
  2915. * @note
  2916. * @rmtoll BDTR AOE FL_ATIM_EnableAutomaticOutput
  2917. * @param TIMx TIM instance
  2918. * @retval None
  2919. */
  2920. __STATIC_INLINE void FL_ATIM_EnableAutomaticOutput(ATIM_Type *TIMx)
  2921. {
  2922. SET_BIT(TIMx->BDTR, ATIM_BDTR_AOE_Msk);
  2923. }
  2924. /**
  2925. * @brief 读取自动输出使能状态
  2926. * @note
  2927. * @rmtoll BDTR AOE FL_ATIM_IsEnabledAutomaticOutput
  2928. * @param TIMx TIM instance
  2929. * @retval State of bit (1 or 0).
  2930. */
  2931. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledAutomaticOutput(ATIM_Type *TIMx)
  2932. {
  2933. return (uint32_t)(READ_BIT(TIMx->BDTR, ATIM_BDTR_AOE_Msk) == ATIM_BDTR_AOE_Msk);
  2934. }
  2935. /**
  2936. * @brief 自动输出禁用
  2937. * @note
  2938. * @rmtoll BDTR AOE FL_ATIM_DisableAutomaticOutput
  2939. * @param TIMx TIM instance
  2940. * @retval None
  2941. */
  2942. __STATIC_INLINE void FL_ATIM_DisableAutomaticOutput(ATIM_Type *TIMx)
  2943. {
  2944. CLEAR_BIT(TIMx->BDTR, ATIM_BDTR_AOE_Msk);
  2945. }
  2946. /**
  2947. * @brief 设置刹车极性
  2948. * @note
  2949. * @rmtoll BDTR BKP FL_ATIM_SetBreakPolarity
  2950. * @param TIMx TIM instance
  2951. * @param polarity This parameter can be one of the following values:
  2952. * @arg @ref FL_ATIM_BREAK_POLARITY_LOW
  2953. * @arg @ref FL_ATIM_BREAK_POLARITY_HIGH
  2954. * @retval None
  2955. */
  2956. __STATIC_INLINE void FL_ATIM_SetBreakPolarity(ATIM_Type *TIMx, uint32_t polarity)
  2957. {
  2958. MODIFY_REG(TIMx->BDTR, ATIM_BDTR_BKP_Msk, polarity);
  2959. }
  2960. /**
  2961. * @brief 读取刹车极性
  2962. * @note
  2963. * @rmtoll BDTR BKP FL_ATIM_GetBreakPolarity
  2964. * @param TIMx TIM instance
  2965. * @retval Returned value can be one of the following values:
  2966. * @arg @ref FL_ATIM_BREAK_POLARITY_LOW
  2967. * @arg @ref FL_ATIM_BREAK_POLARITY_HIGH
  2968. */
  2969. __STATIC_INLINE uint32_t FL_ATIM_GetBreakPolarity(ATIM_Type *TIMx)
  2970. {
  2971. return (uint32_t)(READ_BIT(TIMx->BDTR, ATIM_BDTR_BKP_Msk));
  2972. }
  2973. /**
  2974. * @brief 刹车使能
  2975. * @note
  2976. * @rmtoll BDTR BKE FL_ATIM_EnableBreak
  2977. * @param TIMx TIM instance
  2978. * @retval None
  2979. */
  2980. __STATIC_INLINE void FL_ATIM_EnableBreak(ATIM_Type *TIMx)
  2981. {
  2982. SET_BIT(TIMx->BDTR, ATIM_BDTR_BKE_Msk);
  2983. }
  2984. /**
  2985. * @brief 读取刹车使能状态
  2986. * @note
  2987. * @rmtoll BDTR BKE FL_ATIM_IsEnabledBreak
  2988. * @param TIMx TIM instance
  2989. * @retval State of bit (1 or 0).
  2990. */
  2991. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledBreak(ATIM_Type *TIMx)
  2992. {
  2993. return (uint32_t)(READ_BIT(TIMx->BDTR, ATIM_BDTR_BKE_Msk) == ATIM_BDTR_BKE_Msk);
  2994. }
  2995. /**
  2996. * @brief 刹车禁用
  2997. * @note
  2998. * @rmtoll BDTR BKE FL_ATIM_DisableBreak
  2999. * @param TIMx TIM instance
  3000. * @retval None
  3001. */
  3002. __STATIC_INLINE void FL_ATIM_DisableBreak(ATIM_Type *TIMx)
  3003. {
  3004. CLEAR_BIT(TIMx->BDTR, ATIM_BDTR_BKE_Msk);
  3005. }
  3006. /**
  3007. * @brief 运行状态下的输出关闭状态选择
  3008. * @note
  3009. * @rmtoll BDTR OSSR FL_ATIM_SetOffStateRun
  3010. * @param TIMx TIM instance
  3011. * @param state This parameter can be one of the following values:
  3012. * @arg @ref FL_ATIM_OSSR_DISABLE
  3013. * @arg @ref FL_ATIM_OSSR_ENABLE
  3014. * @retval None
  3015. */
  3016. __STATIC_INLINE void FL_ATIM_SetOffStateRun(ATIM_Type *TIMx, uint32_t state)
  3017. {
  3018. MODIFY_REG(TIMx->BDTR, ATIM_BDTR_OSSR_Msk, state);
  3019. }
  3020. /**
  3021. * @brief 读取运行状态下的输出关闭状态选择
  3022. * @note
  3023. * @rmtoll BDTR OSSR FL_ATIM_GetOffStateRun
  3024. * @param TIMx TIM instance
  3025. * @retval Returned value can be one of the following values:
  3026. * @arg @ref FL_ATIM_OSSR_DISABLE
  3027. * @arg @ref FL_ATIM_OSSR_ENABLE
  3028. */
  3029. __STATIC_INLINE uint32_t FL_ATIM_GetOffStateRun(ATIM_Type *TIMx)
  3030. {
  3031. return (uint32_t)(READ_BIT(TIMx->BDTR, ATIM_BDTR_OSSR_Msk));
  3032. }
  3033. /**
  3034. * @brief IDLE状态下的输出关闭状态选择
  3035. * @note
  3036. * @rmtoll BDTR OSSI FL_ATIM_SetOffStateIdle
  3037. * @param TIMx TIM instance
  3038. * @param state This parameter can be one of the following values:
  3039. * @arg @ref FL_ATIM_OSSI_DISABLE
  3040. * @arg @ref FL_ATIM_OSSI_ENABLE
  3041. * @retval None
  3042. */
  3043. __STATIC_INLINE void FL_ATIM_SetOffStateIdle(ATIM_Type *TIMx, uint32_t state)
  3044. {
  3045. MODIFY_REG(TIMx->BDTR, ATIM_BDTR_OSSI_Msk, state);
  3046. }
  3047. /**
  3048. * @brief IDLE状态下的输出关闭状态选择
  3049. * @note
  3050. * @rmtoll BDTR OSSI FL_ATIM_GetOffStateIdle
  3051. * @param TIMx TIM instance
  3052. * @retval Returned value can be one of the following values:
  3053. * @arg @ref FL_ATIM_OSSI_DISABLE
  3054. * @arg @ref FL_ATIM_OSSI_ENABLE
  3055. */
  3056. __STATIC_INLINE uint32_t FL_ATIM_GetOffStateIdle(ATIM_Type *TIMx)
  3057. {
  3058. return (uint32_t)(READ_BIT(TIMx->BDTR, ATIM_BDTR_OSSI_Msk));
  3059. }
  3060. /**
  3061. * @brief 设置寄存器写保护等级
  3062. * @note
  3063. * @rmtoll BDTR LOCK FL_ATIM_SetLockLevel
  3064. * @param TIMx TIM instance
  3065. * @param lockLevel This parameter can be one of the following values:
  3066. * @arg @ref FL_ATIM_LOCK_LEVEL_OFF
  3067. * @arg @ref FL_ATIM_LOCK_LEVEL_1
  3068. * @arg @ref FL_ATIM_LOCK_LEVEL_2
  3069. * @arg @ref FL_ATIM_LOCK_LEVEL_3
  3070. * @retval None
  3071. */
  3072. __STATIC_INLINE void FL_ATIM_SetLockLevel(ATIM_Type *TIMx, uint32_t lockLevel)
  3073. {
  3074. MODIFY_REG(TIMx->BDTR, ATIM_BDTR_LOCK_Msk, lockLevel);
  3075. }
  3076. /**
  3077. * @brief 读取寄存器写保护配置状态
  3078. * @note
  3079. * @rmtoll BDTR LOCK FL_ATIM_GetLockLevel
  3080. * @param TIMx TIM instance
  3081. * @retval Returned value can be one of the following values:
  3082. * @arg @ref FL_ATIM_LOCK_LEVEL_OFF
  3083. * @arg @ref FL_ATIM_LOCK_LEVEL_1
  3084. * @arg @ref FL_ATIM_LOCK_LEVEL_2
  3085. * @arg @ref FL_ATIM_LOCK_LEVEL_3
  3086. */
  3087. __STATIC_INLINE uint32_t FL_ATIM_GetLockLevel(ATIM_Type *TIMx)
  3088. {
  3089. return (uint32_t)(READ_BIT(TIMx->BDTR, ATIM_BDTR_LOCK_Msk));
  3090. }
  3091. /**
  3092. * @brief 设置死区时间长度
  3093. * @note
  3094. * @rmtoll BDTR DTG FL_ATIM_WriteDeadTime
  3095. * @param TIMx TIM instance
  3096. * @param deadTime
  3097. * @retval None
  3098. */
  3099. __STATIC_INLINE void FL_ATIM_WriteDeadTime(ATIM_Type *TIMx, uint32_t deadTime)
  3100. {
  3101. MODIFY_REG(TIMx->BDTR, (0xffU << 0U), (deadTime << 0U));
  3102. }
  3103. /**
  3104. * @brief 读取死区时间长度
  3105. * @note
  3106. * @rmtoll BDTR DTG FL_ATIM_ReadDeadTime
  3107. * @param TIMx TIM instance
  3108. * @retval
  3109. */
  3110. __STATIC_INLINE uint32_t FL_ATIM_ReadDeadTime(ATIM_Type *TIMx)
  3111. {
  3112. return (uint32_t)(READ_BIT(TIMx->BDTR, 0xffU) >> 0U);
  3113. }
  3114. /**
  3115. * @brief 设置ATIM_BRK1引脚输入门控信号
  3116. * @note
  3117. * @rmtoll BKCR BRK1GATE FL_ATIM_SetBreak1GateState
  3118. * @param TIMx TIM instance
  3119. * @param state This parameter can be one of the following values:
  3120. * @arg @ref FL_ATIM_BREAK1_GATE_LOW
  3121. * @arg @ref FL_ATIM_BREAK1_GATE_AUTO
  3122. * @retval None
  3123. */
  3124. __STATIC_INLINE void FL_ATIM_SetBreak1GateState(ATIM_Type *TIMx, uint32_t state)
  3125. {
  3126. MODIFY_REG(TIMx->BKCR, ATIM_BKCR_BRK1GATE_Msk, state);
  3127. }
  3128. /**
  3129. * @brief 读取ATIM_BRK1引脚输入门控信号
  3130. * @note
  3131. * @rmtoll BKCR BRK1GATE FL_ATIM_GetBreak1GateState
  3132. * @param TIMx TIM instance
  3133. * @retval Returned value can be one of the following values:
  3134. * @arg @ref FL_ATIM_BREAK1_GATE_LOW
  3135. * @arg @ref FL_ATIM_BREAK1_GATE_AUTO
  3136. */
  3137. __STATIC_INLINE uint32_t FL_ATIM_GetBreak1GateState(ATIM_Type *TIMx)
  3138. {
  3139. return (uint32_t)(READ_BIT(TIMx->BKCR, ATIM_BKCR_BRK1GATE_Msk));
  3140. }
  3141. /**
  3142. * @brief 设置ATIM_BRK2引脚输入门控信号
  3143. * @note
  3144. * @rmtoll BKCR BRK2GATE FL_ATIM_SetBreak2GateState
  3145. * @param TIMx TIM instance
  3146. * @param state This parameter can be one of the following values:
  3147. * @arg @ref FL_ATIM_BREAK2_GATE_LOW
  3148. * @arg @ref FL_ATIM_BREAK2_GATE_AUTO
  3149. * @retval None
  3150. */
  3151. __STATIC_INLINE void FL_ATIM_SetBreak2GateState(ATIM_Type *TIMx, uint32_t state)
  3152. {
  3153. MODIFY_REG(TIMx->BKCR, ATIM_BKCR_BRK2GATE_Msk, state);
  3154. }
  3155. /**
  3156. * @brief 读取ATIM_BRK2引脚输入门控信号
  3157. * @note
  3158. * @rmtoll BKCR BRK2GATE FL_ATIM_GetBreak2GateState
  3159. * @param TIMx TIM instance
  3160. * @retval Returned value can be one of the following values:
  3161. * @arg @ref FL_ATIM_BREAK2_GATE_LOW
  3162. * @arg @ref FL_ATIM_BREAK2_GATE_AUTO
  3163. */
  3164. __STATIC_INLINE uint32_t FL_ATIM_GetBreak2GateState(ATIM_Type *TIMx)
  3165. {
  3166. return (uint32_t)(READ_BIT(TIMx->BKCR, ATIM_BKCR_BRK2GATE_Msk));
  3167. }
  3168. /**
  3169. * @brief 设置刹车信号的滤波时钟和长度选择
  3170. * @note
  3171. * @rmtoll BKCR BRKF FL_ATIM_SetBreakFilter
  3172. * @param TIMx TIM instance
  3173. * @param filter This parameter can be one of the following values:
  3174. * @arg @ref FL_ATIM_BREAK_FILTER_DIV1
  3175. * @arg @ref FL_ATIM_BREAK_FILTER_DIV1_N2
  3176. * @arg @ref FL_ATIM_BREAK_FILTER_DIV1_N4
  3177. * @arg @ref FL_ATIM_BREAK_FILTER_DIV1_N8
  3178. * @arg @ref FL_ATIM_BREAK_FILTER_DIV2_N6
  3179. * @arg @ref FL_ATIM_BREAK_FILTER_DIV2_N8
  3180. * @arg @ref FL_ATIM_BREAK_FILTER_DIV4_N6
  3181. * @arg @ref FL_ATIM_BREAK_FILTER_DIV4_N8
  3182. * @arg @ref FL_ATIM_BREAK_FILTER_DIV8_N6
  3183. * @arg @ref FL_ATIM_BREAK_FILTER_DIV8_N8
  3184. * @arg @ref FL_ATIM_BREAK_FILTER_DIV16_N5
  3185. * @arg @ref FL_ATIM_BREAK_FILTER_DIV16_N6
  3186. * @arg @ref FL_ATIM_BREAK_FILTER_DIV16_N8
  3187. * @arg @ref FL_ATIM_BREAK_FILTER_DIV32_N5
  3188. * @arg @ref FL_ATIM_BREAK_FILTER_DIV32_N6
  3189. * @arg @ref FL_ATIM_BREAK_FILTER_DIV32_N8
  3190. * @retval None
  3191. */
  3192. __STATIC_INLINE void FL_ATIM_SetBreakFilter(ATIM_Type *TIMx, uint32_t filter)
  3193. {
  3194. MODIFY_REG(TIMx->BKCR, ATIM_BKCR_BRKF_Msk, filter);
  3195. }
  3196. /**
  3197. * @brief 读取刹车信号的滤波时钟和长度选择
  3198. * @note
  3199. * @rmtoll BKCR BRKF FL_ATIM_GetBreakFilter
  3200. * @param TIMx TIM instance
  3201. * @retval Returned value can be one of the following values:
  3202. * @arg @ref FL_ATIM_BREAK_FILTER_DIV1
  3203. * @arg @ref FL_ATIM_BREAK_FILTER_DIV1_N2
  3204. * @arg @ref FL_ATIM_BREAK_FILTER_DIV1_N4
  3205. * @arg @ref FL_ATIM_BREAK_FILTER_DIV1_N8
  3206. * @arg @ref FL_ATIM_BREAK_FILTER_DIV2_N6
  3207. * @arg @ref FL_ATIM_BREAK_FILTER_DIV2_N8
  3208. * @arg @ref FL_ATIM_BREAK_FILTER_DIV4_N6
  3209. * @arg @ref FL_ATIM_BREAK_FILTER_DIV4_N8
  3210. * @arg @ref FL_ATIM_BREAK_FILTER_DIV8_N6
  3211. * @arg @ref FL_ATIM_BREAK_FILTER_DIV8_N8
  3212. * @arg @ref FL_ATIM_BREAK_FILTER_DIV16_N5
  3213. * @arg @ref FL_ATIM_BREAK_FILTER_DIV16_N6
  3214. * @arg @ref FL_ATIM_BREAK_FILTER_DIV16_N8
  3215. * @arg @ref FL_ATIM_BREAK_FILTER_DIV32_N5
  3216. * @arg @ref FL_ATIM_BREAK_FILTER_DIV32_N6
  3217. * @arg @ref FL_ATIM_BREAK_FILTER_DIV32_N8
  3218. */
  3219. __STATIC_INLINE uint32_t FL_ATIM_GetBreakFilter(ATIM_Type *TIMx)
  3220. {
  3221. return (uint32_t)(READ_BIT(TIMx->BKCR, ATIM_BKCR_BRKF_Msk));
  3222. }
  3223. /**
  3224. * @brief 刹车组合控制
  3225. * @note
  3226. * @rmtoll BKCR BRKCOMB FL_ATIM_SetBreakSignalCombination
  3227. * @param TIMx TIM instance
  3228. * @param filter This parameter can be one of the following values:
  3229. * @arg @ref FL_ATIM_BREAK_COMBINATION_OR
  3230. * @arg @ref FL_ATIM_BREAK_COMBINATION_AND
  3231. * @retval None
  3232. */
  3233. __STATIC_INLINE void FL_ATIM_SetBreakSignalCombination(ATIM_Type *TIMx, uint32_t filter)
  3234. {
  3235. MODIFY_REG(TIMx->BKCR, ATIM_BKCR_BRKCOMB_Msk, filter);
  3236. }
  3237. /**
  3238. * @brief 读取刹车组合控制状态
  3239. * @note
  3240. * @rmtoll BKCR BRKCOMB FL_ATIM_GetBreakSignalCombination
  3241. * @param TIMx TIM instance
  3242. * @retval Returned value can be one of the following values:
  3243. * @arg @ref FL_ATIM_BREAK_COMBINATION_OR
  3244. * @arg @ref FL_ATIM_BREAK_COMBINATION_AND
  3245. */
  3246. __STATIC_INLINE uint32_t FL_ATIM_GetBreakSignalCombination(ATIM_Type *TIMx)
  3247. {
  3248. return (uint32_t)(READ_BIT(TIMx->BKCR, ATIM_BKCR_BRKCOMB_Msk));
  3249. }
  3250. /**
  3251. * @brief XTHF停振检测刹车信号使能
  3252. * @note
  3253. * @rmtoll BKCR HFDET_BRKEN FL_ATIM_EnableHFDETBreak
  3254. * @param TIMx TIM instance
  3255. * @retval None
  3256. */
  3257. __STATIC_INLINE void FL_ATIM_EnableHFDETBreak(ATIM_Type *TIMx)
  3258. {
  3259. SET_BIT(TIMx->BKCR, ATIM_BKCR_HFDET_BRKEN_Msk);
  3260. }
  3261. /**
  3262. * @brief 读取XTHF停振检测刹车信号使能状态
  3263. * @note
  3264. * @rmtoll BKCR HFDET_BRKEN FL_ATIM_IsEnabledHFDETBreak
  3265. * @param TIMx TIM instance
  3266. * @retval State of bit (1 or 0).
  3267. */
  3268. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledHFDETBreak(ATIM_Type *TIMx)
  3269. {
  3270. return (uint32_t)(READ_BIT(TIMx->BKCR, ATIM_BKCR_HFDET_BRKEN_Msk) == ATIM_BKCR_HFDET_BRKEN_Msk);
  3271. }
  3272. /**
  3273. * @brief XTHF停振检测刹车信号禁用
  3274. * @note
  3275. * @rmtoll BKCR HFDET_BRKEN FL_ATIM_DisableHFDETBreak
  3276. * @param TIMx TIM instance
  3277. * @retval None
  3278. */
  3279. __STATIC_INLINE void FL_ATIM_DisableHFDETBreak(ATIM_Type *TIMx)
  3280. {
  3281. CLEAR_BIT(TIMx->BKCR, ATIM_BKCR_HFDET_BRKEN_Msk);
  3282. }
  3283. /**
  3284. * @brief SVD刹车信号使能
  3285. * @note
  3286. * @rmtoll BKCR SVD_BRKEN FL_ATIM_EnableSVDBreak
  3287. * @param TIMx TIM instance
  3288. * @retval None
  3289. */
  3290. __STATIC_INLINE void FL_ATIM_EnableSVDBreak(ATIM_Type *TIMx)
  3291. {
  3292. SET_BIT(TIMx->BKCR, ATIM_BKCR_SVD_BRKEN_Msk);
  3293. }
  3294. /**
  3295. * @brief 读取SVD刹车信号使能状态
  3296. * @note
  3297. * @rmtoll BKCR SVD_BRKEN FL_ATIM_IsEnabledSVDBreak
  3298. * @param TIMx TIM instance
  3299. * @retval State of bit (1 or 0).
  3300. */
  3301. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledSVDBreak(ATIM_Type *TIMx)
  3302. {
  3303. return (uint32_t)(READ_BIT(TIMx->BKCR, ATIM_BKCR_SVD_BRKEN_Msk) == ATIM_BKCR_SVD_BRKEN_Msk);
  3304. }
  3305. /**
  3306. * @brief SVD刹车信号禁用
  3307. * @note
  3308. * @rmtoll BKCR SVD_BRKEN FL_ATIM_DisableSVDBreak
  3309. * @param TIMx TIM instance
  3310. * @retval None
  3311. */
  3312. __STATIC_INLINE void FL_ATIM_DisableSVDBreak(ATIM_Type *TIMx)
  3313. {
  3314. CLEAR_BIT(TIMx->BKCR, ATIM_BKCR_SVD_BRKEN_Msk);
  3315. }
  3316. /**
  3317. * @brief 比较器输出刹车信号使能
  3318. * @note
  3319. * @rmtoll BKCR COMP_BRKEN FL_ATIM_EnableCOMPBreak
  3320. * @param TIMx TIM instance
  3321. * @retval None
  3322. */
  3323. __STATIC_INLINE void FL_ATIM_EnableCOMPBreak(ATIM_Type *TIMx)
  3324. {
  3325. SET_BIT(TIMx->BKCR, ATIM_BKCR_COMP_BRKEN_Msk);
  3326. }
  3327. /**
  3328. * @brief 读取比较器输出刹车信号使能状态
  3329. * @note
  3330. * @rmtoll BKCR COMP_BRKEN FL_ATIM_IsEnabledCOMPBreak
  3331. * @param TIMx TIM instance
  3332. * @retval State of bit (1 or 0).
  3333. */
  3334. __STATIC_INLINE uint32_t FL_ATIM_IsEnabledCOMPBreak(ATIM_Type *TIMx)
  3335. {
  3336. return (uint32_t)(READ_BIT(TIMx->BKCR, ATIM_BKCR_COMP_BRKEN_Msk) == ATIM_BKCR_COMP_BRKEN_Msk);
  3337. }
  3338. /**
  3339. * @brief 比较器输出刹车信号禁用
  3340. * @note
  3341. * @rmtoll BKCR COMP_BRKEN FL_ATIM_DisableCOMPBreak
  3342. * @param TIMx TIM instance
  3343. * @retval None
  3344. */
  3345. __STATIC_INLINE void FL_ATIM_DisableCOMPBreak(ATIM_Type *TIMx)
  3346. {
  3347. CLEAR_BIT(TIMx->BKCR, ATIM_BKCR_COMP_BRKEN_Msk);
  3348. }
  3349. /**
  3350. * @}
  3351. */
  3352. /** @defgroup ATIM_FL_EF_Init Initialization and de-initialization functions
  3353. * @{
  3354. */
  3355. FL_ErrorStatus FL_ATIM_DeInit(ATIM_Type *TIMx);
  3356. void FL_ATIM_StructInit(FL_ATIM_InitTypeDef *TIM_InitStruct);
  3357. void FL_ATIM_SlaveModeStructInit(FL_ATIM_SlaveInitTypeDef *TIM_InitStruct);
  3358. void FL_ATIM_IC_StructInit(FL_ATIM_IC_InitTypeDef *TIM_ICInitStruct);
  3359. void FL_ATIM_OC_StructInit(FL_ATIM_OC_InitTypeDef *TIM_OC_InitStruct);
  3360. void FL_ATIM_ETRStructInit(FL_ATIM_ETR_InitTypeDef *TIM_InitStruct);
  3361. void FL_ATIM_BDTR_StructInit(FL_ATIM_BDTR_InitTypeDef *TIM_BDTR_InitStruct);
  3362. FL_ErrorStatus FL_ATIM_Init(ATIM_Type *TIMx, FL_ATIM_InitTypeDef *TIM_InitStruct);
  3363. FL_ErrorStatus FL_ATIM_IC_Init(ATIM_Type *TIMx, uint32_t Channel, FL_ATIM_IC_InitTypeDef *IC_InitStruct);
  3364. FL_ErrorStatus FL_ATIM_ETR_Init(ATIM_Type *TIMx, FL_ATIM_ETR_InitTypeDef *TIM_InitStruct);
  3365. FL_ErrorStatus FL_ATIM_SlaveMode_Init(ATIM_Type *TIMx, FL_ATIM_SlaveInitTypeDef *TIM_InitStruct);
  3366. FL_ErrorStatus FL_ATIM_OC_Init(ATIM_Type *TIMx, uint32_t Channel, FL_ATIM_OC_InitTypeDef *TIM_OC_InitStruct);
  3367. FL_ErrorStatus FL_ATIM_BDTR_Init(ATIM_Type *TIMx, FL_ATIM_BDTR_InitTypeDef *TIM_BDTR_InitStruct);
  3368. /**
  3369. * @}
  3370. */
  3371. /**
  3372. * @}
  3373. */
  3374. /**
  3375. * @}
  3376. */
  3377. #ifdef __cplusplus
  3378. }
  3379. #endif
  3380. #endif /* __FM33LC0XX_FL_ATIM_H*/
  3381. /*************************Py_Code_Generator Version: 0.1-0.11-0.1 @ 2020-09-12*************************/
  3382. /********************** (C) COPYRIGHT Fudan Microelectronics **** END OF FILE ***********************/