apm32f10x_tmr.h 18 KB

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