apm32f10x_tmr.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659
  1. /*!
  2. * @file apm32f10x_tmr.h
  3. *
  4. * @brief This file contains all the functions prototypes for the TMR firmware library.
  5. *
  6. * @version V1.0.1
  7. *
  8. * @date 2021-03-23
  9. *
  10. */
  11. #ifndef __APM32F10X_TMR_H
  12. #define __APM32F10X_TMR_H
  13. #include "apm32f10x.h"
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. /** @addtogroup Peripherals_Library Standard Peripheral Library
  18. @{
  19. */
  20. /** @addtogroup TMR_Driver TMR Driver
  21. @{
  22. */
  23. /** @addtogroup TMR_Enumerations Enumerations
  24. @{
  25. */
  26. /**
  27. * @brief TMR Counter Mode
  28. */
  29. typedef enum
  30. {
  31. TMR_COUNTER_MODE_UP = 0x0000,
  32. TMR_COUNTER_MODE_DOWN = 0x0010,
  33. TMR_COUNTER_MODE_CENTERALIGNED1 = 0x0020,
  34. TMR_COUNTER_MODE_CENTERALIGNED2 = 0x0040,
  35. TMR_COUNTER_MODE_CENTERALIGNED3 = 0x0060
  36. } TMR_COUNTER_MODE_T;
  37. /**
  38. * @brief TMR Clock division
  39. */
  40. typedef enum
  41. {
  42. TMR_CLOCK_DIV_1,
  43. TMR_CLOCK_DIV_2,
  44. TMR_CLOCK_DIV_4
  45. } TMR_CLOCK_DIV_T;
  46. /**
  47. * @brief TMR Output Compare and PWM modes
  48. */
  49. typedef enum
  50. {
  51. TMR_OC_MODE_TMRING = 0x00,
  52. TMR_OC_MODE_ACTIVE = 0x01,
  53. TMR_OC_MODE_INACTIVE = 0x02,
  54. TMR_OC_MODE_TOGGEL = 0x03,
  55. TMR_OC_MODE_LOWLEVEL = 0x04,
  56. TMR_OC_MODE_HIGHLEVEL = 0x05,
  57. TMR_OC_MODE_PWM1 = 0x06,
  58. TMR_OC_MODE_PWM2 = 0x07,
  59. } TMR_OC_MODE_T;
  60. /**
  61. * @brief TMR Output Compare state
  62. */
  63. typedef enum
  64. {
  65. TMR_OC_STATE_DISABLE,
  66. TMR_OC_STATE_ENABLE
  67. } TMR_OC_STATE_T;
  68. /**
  69. * @brief TMR Output Compare N state
  70. */
  71. typedef enum
  72. {
  73. TMR_OC_NSTATE_DISABLE,
  74. TMR_OC_NSTATE_ENABLE
  75. } TMR_OC_NSTATE_T;
  76. /**
  77. * @brief TMR Output Compare Polarity
  78. */
  79. typedef enum
  80. {
  81. TMR_OC_POLARITY_HIGH,
  82. TMR_OC_POLARITY_LOW
  83. } TMR_OC_POLARITY_T;
  84. /**
  85. * @brief TMR Output Compare N Polarity
  86. */
  87. typedef enum
  88. {
  89. TMR_OC_NPOLARITY_HIGH,
  90. TMR_OC_NPOLARITY_LOW
  91. } TMR_OC_NPOLARITY_T;
  92. /**
  93. * @brief TMR Output Compare Idle State
  94. */
  95. typedef enum
  96. {
  97. TMR_OC_IDLE_STATE_RESET,
  98. TMR_OC_IDLE_STATE_SET
  99. } TMR_OC_IDLE_STATE_T;
  100. /**
  101. * @brief TMR Output Compare N Idle State
  102. */
  103. typedef enum
  104. {
  105. TMR_OC_NIDLE_STATE_RESET,
  106. TMR_OC_NIDLE_STATE_SET
  107. } TMR_OC_NIDLE_STATE_T;
  108. /**
  109. * @brief TMR Input Capture Init structure definition
  110. */
  111. typedef enum
  112. {
  113. TMR_CHANNEL_1 = 0x0000,
  114. TMR_CHANNEL_2 = 0x0004,
  115. TMR_CHANNEL_3 = 0x0008,
  116. TMR_CHANNEL_4 = 0x000C
  117. } TMR_CHANNEL_T;
  118. /**
  119. * @brief TMR Input Capture Polarity
  120. */
  121. typedef enum
  122. {
  123. TMR_IC_POLARITY_RISING = 0x00,
  124. TMR_IC_POLARITY_FALLING = 0x02,
  125. TMR_IC_POLARITY_BOTHEDGE = 0x0A
  126. } TMR_IC_POLARITY_T;
  127. /**
  128. * @brief TMR Input Capture Selection
  129. */
  130. typedef enum
  131. {
  132. TMR_IC_SELECTION_DIRECT_TI = 0x01,
  133. TMR_IC_SELECTION_INDIRECT_TI = 0x02,
  134. TMR_IC_SELECTION_TRC = 0x03
  135. } TMR_IC_SELECTION_T;
  136. /**
  137. * @brief TMR Input Capture Prescaler
  138. */
  139. typedef enum
  140. {
  141. TMR_IC_PSC_1,
  142. TMR_IC_PSC_2,
  143. TMR_IC_PSC_4,
  144. TMR_IC_PSC_8
  145. } TMR_IC_PSC_T;
  146. /**
  147. * @brief TMR Specifies the Off-State selection used in Run mode
  148. */
  149. typedef enum
  150. {
  151. TMR_RMOS_STATE_DISABLE,
  152. TMR_RMOS_STATE_ENABLE
  153. } TMR_RMOS_STATE_T;
  154. /**
  155. * @brief TMR Closed state configuration in idle mode
  156. */
  157. typedef enum
  158. {
  159. TMR_IMOS_STATE_DISABLE,
  160. TMR_IMOS_STATE_ENABLE
  161. } TMR_IMOS_STATE_T;
  162. /**
  163. * @brief TMR Protect mode configuration values
  164. */
  165. typedef enum
  166. {
  167. TMR_LOCK_LEVEL_OFF,
  168. TMR_LOCK_LEVEL_1,
  169. TMR_LOCK_LEVEL_2,
  170. TMR_LOCK_LEVEL_3
  171. } TMR_LOCK_LEVEL_T;
  172. /**
  173. * @brief TMR BRK state
  174. */
  175. typedef enum
  176. {
  177. TMR_BRK_STATE_DISABLE,
  178. TMR_BRK_STATE_ENABLE
  179. } TMR_BRK_STATE_T;
  180. /**
  181. * @brief TMR Specifies the Break Input pin polarity.
  182. */
  183. typedef enum
  184. {
  185. TMR_BRK_POLARITY_LOW,
  186. TMR_BRK_POLARITY_HIGH
  187. } TMR_BRK_POLARITY_T;
  188. /**
  189. * @brief TMR Specifies the Break Input pin polarity.
  190. */
  191. typedef enum
  192. {
  193. TMR_AUTOMATIC_OUTPUT_DISABLE,
  194. TMR_AUTOMATIC_OUTPUT_ENABLE
  195. } TMR_AUTOMATIC_OUTPUT_T;
  196. /**
  197. * @brief TMR_interrupt_sources
  198. */
  199. typedef enum
  200. {
  201. TMR_INT_UPDATE = 0x0001,
  202. TMR_INT_CC1 = 0x0002,
  203. TMR_INT_CC2 = 0x0004,
  204. TMR_INT_CC3 = 0x0008,
  205. TMR_INT_CC4 = 0x0010,
  206. TMR_INT_COM = 0x0020,
  207. TMR_INT_TRG = 0x0040,
  208. TMR_INT_BRK = 0x0080
  209. } TMR_INT_T;
  210. /**
  211. * @brief TMR event sources
  212. */
  213. typedef enum
  214. {
  215. TMR_EVENT_UPDATE = 0x001,
  216. TMR_EVENT_CC1 = 0x002,
  217. TMR_EVENT_CC2 = 0x004,
  218. TMR_EVENT_CC3 = 0x008,
  219. TMR_EVENT_CC4 = 0x010,
  220. TMR_EVENT_COM = 0x020,
  221. TMR_EVENT_TRG = 0x040,
  222. TMR_EVENT_BRK = 0x080
  223. } TMR_EVENT_T;
  224. /**
  225. * @brief TMR DMA Base Address
  226. */
  227. typedef enum
  228. {
  229. TMR_DMA_BASE_CTRL1 = 0x0000,
  230. TMR_DMA_BASE_CTRL2 = 0x0001,
  231. TMR_DMA_BASE_SMCTRL = 0x0002,
  232. TMR_DMA_BASE_DIEN = 0x0003,
  233. TMR_DMA_BASE_STS = 0x0004,
  234. TMR_DMA_BASE_CEG = 0x0005,
  235. TMR_DMA_BASE_CCM1 = 0x0006,
  236. TMR_DMA_BASE_CCM2 = 0x0007,
  237. TMR_DMA_BASE_CCEN = 0x0008,
  238. TMR_DMA_BASE_CNT = 0x0009,
  239. TMR_DMA_BASE_PSC = 0x000A,
  240. TMR_DMA_BASE_AUTORLD = 0x000B,
  241. TMR_DMA_BASE_REPCNT = 0x000C,
  242. TMR_DMA_BASE_CC1 = 0x000D,
  243. TMR_DMA_BASE_CC2 = 0x000E,
  244. TMR_DMA_BASE_CC3 = 0x000F,
  245. TMR_DMA_BASE_CC4 = 0x0010,
  246. TMR_DMA_BASE_BDT = 0x0011,
  247. TMR_DMA_BASE_DCTRL = 0x0012
  248. } TMR_DMA_BASE_T;
  249. /**
  250. * @brief TMR DMA Burst Length
  251. */
  252. typedef enum
  253. {
  254. TMR_DMA_BURSTLENGTH_1TRANSFER = 0x0000,
  255. TMR_DMA_BURSTLENGTH_2TRANSFERS = 0x0100,
  256. TMR_DMA_BURSTLENGTH_3TRANSFERS = 0x0200,
  257. TMR_DMA_BURSTLENGTH_4TRANSFERS = 0x0300,
  258. TMR_DMA_BURSTLENGTH_5TRANSFERS = 0x0400,
  259. TMR_DMA_BURSTLENGTH_6TRANSFERS = 0x0500,
  260. TMR_DMA_BURSTLENGTH_7TRANSFERS = 0x0600,
  261. TMR_DMA_BURSTLENGTH_8TRANSFERS = 0x0700,
  262. TMR_DMA_BURSTLENGTH_9TRANSFERS = 0x0800,
  263. TMR_DMA_BURSTLENGTH_10TRANSFERS = 0x0900,
  264. TMR_DMA_BURSTLENGTH_11TRANSFERS = 0x0A00,
  265. TMR_DMA_BURSTLENGTH_12TRANSFERS = 0x0B00,
  266. TMR_DMA_BURSTLENGTH_13TRANSFERS = 0x0C00,
  267. TMR_DMA_BURSTLENGTH_14TRANSFERS = 0x0D00,
  268. TMR_DMA_BURSTLENGTH_15TRANSFERS = 0x0E00,
  269. TMR_DMA_BURSTLENGTH_16TRANSFERS = 0x0F00,
  270. TMR_DMA_BURSTLENGTH_17TRANSFERS = 0x1000,
  271. TMR_DMA_BURSTLENGTH_18TRANSFERS = 0x1100,
  272. } TMR_DMA_BURSTLENGTH_T;
  273. /**
  274. * @brief TMR DMA Soueces
  275. */
  276. typedef enum
  277. {
  278. TMR_DMA_SOURCE_UPDATE = 0x0100,
  279. TMR_DMA_SOURCE_CC1 = 0x0200,
  280. TMR_DMA_SOURCE_CC2 = 0x0400,
  281. TMR_DMA_SOURCE_CC3 = 0x0800,
  282. TMR_DMA_SOURCE_CC4 = 0x1000,
  283. TMR_DMA_SOURCE_COM = 0x2000,
  284. TMR_DMA_SOURCE_TRG = 0x4000
  285. } TMR_DMA_SOURCE_T;
  286. /**
  287. * @brief TMR Internal Trigger Selection
  288. */
  289. typedef enum
  290. {
  291. TMR_TRIGGER_SOURCE_ITR0 = 0x00,
  292. TMR_TRIGGER_SOURCE_ITR1 = 0x01,
  293. TMR_TRIGGER_SOURCE_ITR2 = 0x02,
  294. TMR_TRIGGER_SOURCE_ITR3 = 0x03,
  295. TMR_TRIGGER_SOURCE_TI1F_ED = 0x04,
  296. TMR_TRIGGER_SOURCE_TI1FP1 = 0x05,
  297. TMR_TRIGGER_SOURCE_TI2FP2 = 0x06,
  298. TMR_TRIGGER_SOURCE_ETRF = 0x07
  299. } TMR_TRIGGER_SOURCE_T;
  300. /**
  301. * @brief TMR The external Trigger Prescaler.
  302. */
  303. typedef enum
  304. {
  305. TMR_EXTTRG_PSC_OFF = 0x00,
  306. TMR_EXTTRG_PSC_DIV2 = 0x01,
  307. TMR_EXTTRG_PSC_DIV4 = 0x02,
  308. TMR_EXTTRG_PSC_DIV8 = 0x03
  309. } TMR_EXTTRG_PSC_T;
  310. /**
  311. * @brief TMR External Trigger Polarity
  312. */
  313. typedef enum
  314. {
  315. TMR_EXTTGR_POL_NONINVERTED,
  316. TMR_EXTTRG_POL_INVERTED
  317. } TMR_EXTTRG_POL_T;
  318. /**
  319. * @brief TMR Prescaler Reload Mode
  320. */
  321. typedef enum
  322. {
  323. TMR_PRESCALER_RELOAD_UPDATA,
  324. TMR_PRESCALER_RELOAD_IMMEDIATE
  325. } TMR_PRESCALER_RELOAD_T;
  326. /**
  327. * @brief TMR Encoder Mode
  328. */
  329. typedef enum
  330. {
  331. TMR_ENCODER_MODE_TI1 = 0x01,
  332. TMR_ENCODER_MODE_TI2 = 0x02,
  333. TMR_ENCODER_MODE_TI12 = 0x03
  334. } TMR_ENCODER_MODE_T;
  335. /**
  336. * @brief TMR Forced Action
  337. */
  338. typedef enum
  339. {
  340. TMR_FORCED_ACTION_INACTIVE = 0x04,
  341. TMR_FORCED_ACTION_ACTIVE = 0x05
  342. } TMR_FORCED_ACTION_T;
  343. /**
  344. * @brief TMR Output Compare Preload State
  345. */
  346. typedef enum
  347. {
  348. TMR_OC_PRELOAD_DISABLE,
  349. TMR_OC_PRELOAD_ENABLE
  350. } TMR_OC_PRELOAD_T;
  351. /**
  352. * @brief TMR Output Compare Preload State
  353. */
  354. typedef enum
  355. {
  356. TMR_OC_FAST_DISABLE,
  357. TMR_OC_FAST_ENABLE
  358. } TMR_OC_FAST_T;
  359. /**
  360. * @brief TMR Output Compare Preload State
  361. */
  362. typedef enum
  363. {
  364. TMR_OC_CLEAR_DISABLE,
  365. TMR_OC_CLEAR_ENABLE
  366. } TMR_OC_CLEAR_T;
  367. /**
  368. * @brief TMR UpdateSource
  369. */
  370. typedef enum
  371. {
  372. TMR_UPDATE_SOURCE_GLOBAL,
  373. TMR_UPDATE_SOURCE_REGULAR,
  374. } TMR_UPDATE_SOURCE_T;
  375. /**
  376. * @brief TMR Single Pulse Mode
  377. */
  378. typedef enum
  379. {
  380. TMR_SPM_REPETITIVE,
  381. TMR_SPM_SINGLE,
  382. } TMR_SPM_T;
  383. /**
  384. * @brief TMR Trigger Output Source
  385. */
  386. typedef enum
  387. {
  388. TMR_TRGO_SOURCE_RESET,
  389. TMR_TRGO_SOURCE_ENABLE,
  390. TMR_TRGO_SOURCE_UPDATE,
  391. TMR_TRGO_SOURCE_OC1,
  392. TMR_TRGO_SOURCE_OC1REF,
  393. TMR_TRGO_SOURCE_OC2REF,
  394. TMR_TRGO_SOURCE_OC3REF,
  395. TMR_TRGO_SOURCE_OC4REF
  396. } TMR_TRGO_SOURCE_T;
  397. /**
  398. * @brief TMR Slave Mode
  399. */
  400. typedef enum
  401. {
  402. TMR_SLAVE_MODE_RESET = 0x04,
  403. TMR_SLAVE_MODE_GATED = 0x05,
  404. TMR_SLAVE_MODE_TRIGGER = 0x06,
  405. TMR_SLAVE_MODE_EXTERNALL = 0x07
  406. } TMR_SLAVE_MODE_T;
  407. /**
  408. * @brief TMR Flag
  409. */
  410. typedef enum
  411. {
  412. TMR_FLAG_UPDATE = 0x0001,
  413. TMR_FLAG_CC1 = 0x0002,
  414. TMR_FLAG_CC2 = 0x0004,
  415. TMR_FLAG_CC3 = 0x0008,
  416. TMR_FLAG_CC4 = 0x0010,
  417. TMR_FLAG_COM = 0x0020,
  418. TMR_FLAG_TRG = 0x0040,
  419. TMR_FLAG_BRK = 0x0080,
  420. TMR_FLAG_CC1RC = 0x0200,
  421. TMR_FLAG_CC2RC = 0x0400,
  422. TMR_FLAG_CC3RC = 0x0800,
  423. TMR_FLAG_CC4RC = 0x1000
  424. } TMR_FLAG_T;
  425. /**@} end of group TMR_Enumerations*/
  426. /** @addtogroup TMR_Structure Data Structure
  427. @{
  428. */
  429. /**
  430. * @brief TMR Config struct definition
  431. */
  432. typedef struct
  433. {
  434. TMR_COUNTER_MODE_T countMode;
  435. TMR_CLOCK_DIV_T clockDivision;
  436. uint16_t period; //!< This must between 0x0000 and 0xFFFF
  437. uint16_t division; //!< This must between 0x0000 and 0xFFFF
  438. uint8_t repetitionCounter; //!< This must between 0x00 and 0xFF, only for TMR1 and TMR8.
  439. } TMR_BaseConfig_T; ;
  440. /**
  441. * @brief TMR Config struct definition
  442. */
  443. typedef struct
  444. {
  445. TMR_OC_MODE_T mode;
  446. TMR_OC_STATE_T outputState;
  447. TMR_OC_NSTATE_T outputNState;
  448. TMR_OC_POLARITY_T polarity;
  449. TMR_OC_NPOLARITY_T nPolarity;
  450. TMR_OC_IDLE_STATE_T idleState;
  451. TMR_OC_NIDLE_STATE_T nIdleState;
  452. uint16_t pulse; //!< This must between 0x0000 and 0xFFFF
  453. } TMR_OCConfig_T;
  454. /**
  455. * @brief TMR BDT structure definition
  456. */
  457. typedef struct
  458. {
  459. TMR_RMOS_STATE_T RMOS;
  460. TMR_IMOS_STATE_T IMOS;
  461. TMR_LOCK_LEVEL_T lockLevel;
  462. uint16_t deadTime;
  463. TMR_BRK_STATE_T BRKState;
  464. TMR_BRK_POLARITY_T BRKPolarity;
  465. TMR_AUTOMATIC_OUTPUT_T automaticOutput;
  466. } TMR_BDTConfig_T;
  467. /**
  468. * @brief TMR Input Capture Config struct definition
  469. */
  470. typedef struct
  471. {
  472. TMR_CHANNEL_T channel;
  473. TMR_IC_POLARITY_T polarity;
  474. TMR_IC_SELECTION_T selection;
  475. TMR_IC_PSC_T prescaler;
  476. uint16_t filter; //!< This must between 0x00 and 0x0F
  477. } TMR_ICConfig_T;
  478. /**@} end of group TMR_Structure*/
  479. /** @addtogroup TMR_Fuctions Fuctions
  480. @{
  481. */
  482. /** Reset and Configuration */
  483. void TMR_Reset(TMR_T* tmr);
  484. void TMR_ConfigTimeBase(TMR_T* tmr, TMR_BaseConfig_T *baseConfig);
  485. void TMR_ConfigOC1(TMR_T* tmr, TMR_OCConfig_T *OC1Config);
  486. void TMR_ConfigOC2(TMR_T* tmr, TMR_OCConfig_T *OC2Config);
  487. void TMR_ConfigOC3(TMR_T* tmr, TMR_OCConfig_T *OC3Config);
  488. void TMR_ConfigOC4(TMR_T* tmr, TMR_OCConfig_T *OC4Config);
  489. void TMR_ConfigIC(TMR_T* tmr, TMR_ICConfig_T *ICConfig);
  490. void TMR_ConfigBDT(TMR_T* tmr, TMR_BDTConfig_T *BDTConfig);
  491. void TMR_ConfigTimeBaseStructInit(TMR_BaseConfig_T *baseConfig);
  492. void TMR_ConfigOCStructInit(TMR_OCConfig_T *OCConfig);
  493. void TMR_ConfigICStructInit(TMR_ICConfig_T *ICConfig);
  494. void TMR_ConfigBDTStructInit( TMR_BDTConfig_T *BDTConfig);
  495. void TMR_Enable(TMR_T* tmr);
  496. void TMR_Disable(TMR_T* tmr);
  497. /* PWM Configuration */
  498. void TMR_ConfigPWM(TMR_T* tmr, TMR_ICConfig_T *PWMConfig);
  499. void TMR_EnablePWMOutputs(TMR_T* tmr);
  500. void TMR_DisablePWMOutputs(TMR_T* tmr);
  501. /** DMA */
  502. void TMR_ConfigDMA(TMR_T* tmr, TMR_DMA_BASE_T baseAddress, TMR_DMA_BURSTLENGTH_T burstLength);
  503. void TMR_EnableDMASoure(TMR_T* tmr, uint16_t dmaSource);
  504. void TMR_DisableDMASoure(TMR_T* tmr, uint16_t dmaSource);
  505. /** Configuration */
  506. void TMR_ConfigInternalClock(TMR_T* tmr);
  507. void TMR_ConfigIntTrigExternalClock(TMR_T* tmr, TMR_TRIGGER_SOURCE_T triggerSource);
  508. void TMR_ConfigTrigExternalClock(TMR_T* tmr, TMR_TRIGGER_SOURCE_T triggerSource,
  509. TMR_IC_POLARITY_T ICpolarity, uint16_t ICfilter);
  510. void TMR_ConfigETRClockMode1(TMR_T* tmr, TMR_EXTTRG_PSC_T prescaler,
  511. TMR_EXTTRG_POL_T polarity, uint16_t filter);
  512. void TMR_ConfigETRClockMode2(TMR_T* tmr, TMR_EXTTRG_PSC_T prescaler,
  513. TMR_EXTTRG_POL_T polarity, uint16_t filter);
  514. void TMR_ConfigETR(TMR_T* tmr, TMR_EXTTRG_PSC_T prescaler,
  515. TMR_EXTTRG_POL_T polarity, uint16_t filter);
  516. void TMR_ConfigPrescaler(TMR_T* tmr, uint16_t prescaler, TMR_PRESCALER_RELOAD_T pscReloadMode);
  517. void TMR_ConfigCounterMode(TMR_T* tmr, TMR_COUNTER_MODE_T countMode);
  518. void TMR_SelectInputTrigger(TMR_T* tmr, TMR_TRIGGER_SOURCE_T triggerSouce);
  519. void TMR_ConfigEncodeInterface(TMR_T* tmr, TMR_ENCODER_MODE_T encodeMode, TMR_IC_POLARITY_T IC1Polarity,
  520. TMR_IC_POLARITY_T IC2Polarity);
  521. void TMR_ConfigForcedOC1(TMR_T* tmr,TMR_FORCED_ACTION_T forcesAction);
  522. void TMR_ConfigForcedOC2(TMR_T* tmr,TMR_FORCED_ACTION_T forcesAction);
  523. void TMR_ConfigForcedOC3(TMR_T* tmr,TMR_FORCED_ACTION_T forcesAction);
  524. void TMR_ConfigForcedOC4(TMR_T* tmr,TMR_FORCED_ACTION_T forcesAction);
  525. void TMR_EnableAUTOReload(TMR_T* tmr);
  526. void TMR_DisableAUTOReload(TMR_T* tmr);
  527. void TMR_EnableSelectCOM(TMR_T* tmr);
  528. void TMR_DisableSelectCOM(TMR_T* tmr);
  529. void TMR_EnableCCDMA(TMR_T* tmr);
  530. void TMR_DisableCCDMA(TMR_T* tmr);
  531. void TMR_EnableCCPreload(TMR_T* tmr);
  532. void TMR_DisableCCPreload(TMR_T* tmr);
  533. void TMR_ConfigOC1Preload(TMR_T* tmr, TMR_OC_PRELOAD_T OCPreload);
  534. void TMR_ConfigOC2Preload(TMR_T* tmr, TMR_OC_PRELOAD_T OCPreload);
  535. void TMR_ConfigOC3Preload(TMR_T* tmr, TMR_OC_PRELOAD_T OCPreload);
  536. void TMR_ConfigOC4Preload(TMR_T* tmr, TMR_OC_PRELOAD_T OCPreload);
  537. void TMR_ConfigOC1Fast(TMR_T* tmr, TMR_OC_FAST_T OCFast);
  538. void TMR_ConfigOC2Fast(TMR_T* tmr, TMR_OC_FAST_T OCFast);
  539. void TMR_ConfigOC3Fast(TMR_T* tmr, TMR_OC_FAST_T OCFast);
  540. void TMR_ConfigOC4Fast(TMR_T* tmr, TMR_OC_FAST_T OCFast);
  541. void TMR_ClearOC1Ref(TMR_T* tmr, TMR_OC_CLEAR_T OCClear);
  542. void TMR_ClearOC2Ref(TMR_T* tmr, TMR_OC_CLEAR_T OCClear);
  543. void TMR_ClearOC3Ref(TMR_T* tmr, TMR_OC_CLEAR_T OCClear);
  544. void TMR_ClearOC4Ref(TMR_T* tmr, TMR_OC_CLEAR_T OCClear);
  545. void TMR_ConfigOC1Polarity(TMR_T* tmr, TMR_OC_POLARITY_T OCPolarity);
  546. void TMR_ConfigOC1NPolarity(TMR_T* tmr, TMR_OC_NPOLARITY_T OCNPolarity);
  547. void TMR_ConfigOC2Polarity(TMR_T* tmr, TMR_OC_POLARITY_T OCPolarity);
  548. void TMR_ConfigOC2NPolarity(TMR_T* tmr, TMR_OC_NPOLARITY_T OCNPolarity);
  549. void TMR_ConfigOC3Polarity(TMR_T* tmr, TMR_OC_POLARITY_T OCPolarity);
  550. void TMR_ConfigOC3NPolarity(TMR_T* tmr, TMR_OC_NPOLARITY_T OCNPolarity);
  551. void TMR_ConfigOC4Polarity(TMR_T* tmr, TMR_OC_POLARITY_T OCPolarity);
  552. void TMR_EnableCCxChannel(TMR_T* tmr,TMR_CHANNEL_T channel);
  553. void TMR_DisableCCxChannel(TMR_T* tmr,TMR_CHANNEL_T channel);
  554. void TMR_EnableCCxNChannel(TMR_T* tmr,TMR_CHANNEL_T channel);
  555. void TMR_DisableCCxNChannel(TMR_T* tmr,TMR_CHANNEL_T channel);
  556. void TMR_SelectOCxMode(TMR_T* tmr, TMR_CHANNEL_T channel, TMR_OC_MODE_T OCMode);
  557. void TMR_EnableNoUpdate(TMR_T* tmr);
  558. void TMR_DisableNoUpdate(TMR_T* tmr);
  559. void TMR_ConfigUPdateRequest(TMR_T* tmr, TMR_UPDATE_SOURCE_T updateSource);
  560. void TMR_EnableHallSensor(TMR_T* tmr);
  561. void TMR_DisableHallSensor(TMR_T* tmr);
  562. void TMR_SelectSinglePulseMode(TMR_T* tmr, TMR_SPM_T singlePulseMode);
  563. void TMR_SelectOutputTrigger(TMR_T* tmr, TMR_TRGO_SOURCE_T TRGOSource);
  564. void TMR_SelectSlaveMode(TMR_T* tmr, TMR_SLAVE_MODE_T slaveMode);
  565. void TMR_EnableMasterSlaveMode(TMR_T* tmr);
  566. void TMR_DisableMasterSlaveMode(TMR_T* tmr);
  567. void TMR_ConfigCounter(TMR_T* tmr, uint16_t counter);
  568. void TMR_ConfigAutoreload(TMR_T* tmr, uint16_t autoReload);
  569. void TMR_ConfigCompare1(TMR_T* tmr, uint16_t compare1);
  570. void TMR_ConfigCompare2(TMR_T* tmr, uint16_t compare2);
  571. void TMR_ConfigCompare3(TMR_T* tmr, uint16_t compare3);
  572. void TMR_ConfigCompare4(TMR_T* tmr, uint16_t compare4);
  573. void TMR_ConfigIC1Prescal(TMR_T* tmr, TMR_IC_PSC_T prescaler);
  574. void TMR_ConfigIC2Prescal(TMR_T* tmr, TMR_IC_PSC_T prescaler);
  575. void TMR_ConfigIC3Prescal(TMR_T* tmr, TMR_IC_PSC_T prescaler);
  576. void TMR_ConfigIC4Prescal(TMR_T* tmr, TMR_IC_PSC_T prescaler);
  577. void TMR_ConfigClockDivision(TMR_T* tmr, TMR_CLOCK_DIV_T clockDivision);
  578. uint16_t TMR_ReadCaputer1(TMR_T* tmr);
  579. uint16_t TMR_ReadCaputer2(TMR_T* tmr);
  580. uint16_t TMR_ReadCaputer3(TMR_T* tmr);
  581. uint16_t TMR_ReadCaputer4(TMR_T* tmr);
  582. uint16_t TMR_ReadCounter(TMR_T* tmr);
  583. uint16_t TMR_ReadPrescaler(TMR_T* tmr);
  584. /** Interrupts and Event */
  585. void TMR_EnableInterrupt(TMR_T* tmr, uint16_t interrupt);
  586. void TMR_DisableInterrupt(TMR_T* tmr, uint16_t interrupt);
  587. void TMR_GenerateEvent(TMR_T* tmr,uint16_t eventSources);
  588. /** flags */
  589. uint16_t TMR_ReadStatusFlag(TMR_T* tmr, TMR_FLAG_T flag);
  590. void TMR_ClearStatusFlag(TMR_T* tmr, uint16_t flag);
  591. uint16_t TMR_ReadIntFlag(TMR_T* tmr, TMR_INT_T flag);
  592. void TMR_ClearIntFlag(TMR_T* tmr, uint16_t flag);
  593. /**@} end of group TMR_Fuctions*/
  594. /**@} end of group TMR_Driver */
  595. /**@} end of group Peripherals_Library*/
  596. #ifdef __cplusplus
  597. }
  598. #endif
  599. #endif /* __APM32F10X_TMR_H */