apm32f10x_tmr.h 18 KB

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