You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

779 lines
27 KiB

4 years ago
  1. /*********************************************************
  2. *Copyright (C), 2015, Shanghai Eastsoft Microelectronics Co., Ltd.
  3. *: lib_timer.c
  4. * : AE Team
  5. * : V1.01
  6. * : 2021/06/09
  7. * : Timer模块库函数
  8. * :
  9. 使
  10. **********************************************************/
  11. #include "lib_timer.h"
  12. /***************************************************************
  13. T16Nx_BaseInit
  14. T16Nx基本初始化,
  15. T16NxT16N0/1/2/3 T16Nx_BaseInitStruct
  16. ***************************************************************/
  17. void T16Nx_BaseInit(T16N_TypeDef *T16Nx, T16Nx_BaseInitStruType *T16Nx_BaseInitStruct)
  18. {
  19. T16Nx->CON0.CS = T16Nx_BaseInitStruct->T16Nx_ClkS; /* 计数时钟源选择 */
  20. T16Nx->CON0.SYNC = T16Nx_BaseInitStruct->T16Nx_SYNC; /* 外部时钟同步使能 Disable:不同步外部时钟,为异步计数模式。Enable:通过PCLK对外部时钟同步,为同步计数模式,外部时钟的高低电平平均至少保持2个时钟周期 */
  21. T16Nx->CON0.EDGE = T16Nx_BaseInitStruct->T16Nx_EDGE; /* 外部时钟计数边沿选择 */
  22. T16Nx->CON0.MOD = T16Nx_BaseInitStruct->T16Nx_Mode; /* 工作模式选择 */
  23. T16Nx->PREMAT.PREMAT = T16Nx_BaseInitStruct->T16Nx_PREMAT - 1; /* 预分频比设置,范围:1-256 */
  24. T16Nx->CON2.REGBUF_EN = Disable; /* 配置缓冲寄存器禁止 */
  25. }
  26. /***************************************************************
  27. T16Nx_CapInit
  28. T16Nx捕捉初始化
  29. T16NxT16N0/1/2/3 T16Nx_CapInitStruct
  30. ***************************************************************/
  31. void T16Nx_CapInit(T16N_TypeDef *T16Nx, T16Nx_CapInitStruType *T16Nx_CapInitStruct)
  32. {
  33. T16Nx->CON1.CAPL0 = T16Nx_CapInitStruct->T16Nx_CAPCAPL0; /* 配置捕捉0重载计数器是否使能 */
  34. T16Nx->CON1.CAPL1 = T16Nx_CapInitStruct->T16Nx_CAPCAPL1; /* 配置捕捉1重载计数器是否使能 */
  35. T16Nx->CON1.CAPPE = T16Nx_CapInitStruct->T16Nx_CapRise; /* 配置上升沿输入捕捉是否使能 */
  36. T16Nx->CON1.CAPNE = T16Nx_CapInitStruct->T16Nx_CapFall; /* 配置下降沿输入捕捉是否使能 */
  37. T16Nx->CON1.CAPIS0 = T16Nx_CapInitStruct->T16Nx_CapIS0; /* 配置捕捉输入端口T16NxIN0是否使能 */
  38. T16Nx->CON1.CAPIS1 = T16Nx_CapInitStruct->T16Nx_CapIS1; /* 配置捕捉输入端口T16NxIN1是否使能 */
  39. T16Nx->CON1.CAPT = T16Nx_CapInitStruct->T16Nx_CapTime; /* 配置捕捉次数 */
  40. }
  41. /***************************************************************
  42. T16Nx_PMWOutInit
  43. T16NxPWM输出初始化
  44. T16NxT16N0/1/2/3 T16Nx_PWMInitStruct
  45. ***************************************************************/
  46. void T16Nx_PMWOutInit(T16N_TypeDef *T16Nx, T16Nx_PWMInitStruType *T16Nx_PWMInitStruct)
  47. {
  48. T16Nx->CON2.MOE0 = T16Nx_PWMInitStruct->T16Nx_MOE0; /* 配置输出端口0是否使能 */
  49. T16Nx->CON2.MOE1 = T16Nx_PWMInitStruct->T16Nx_MOE1; /* 配置输出端口1是否使能 */
  50. T16Nx->CON2.POL0 = T16Nx_PWMInitStruct->T16Nx_POL0; /* 配置T16NxOut0输出极性 */
  51. T16Nx->CON2.POL1 = T16Nx_PWMInitStruct->T16Nx_POL1; /* 配置T16NxOut1输出极性 */
  52. T16Nx->CON2.PWMMOD = T16Nx_PWMInitStruct->T16Nx_PWMMODE; /* 配置PWM模式选择 */
  53. T16Nx->CON2.PWMDZE = T16Nx_PWMInitStruct->PWMDZE; /* 配置PWM互补模式死区是否使能 */
  54. T16Nx->CON2.REGBUF_EN = T16Nx_PWMInitStruct->REGBUFEN; /* 配置PWM缓冲寄存器是否使能 */
  55. }
  56. /***************************************************************
  57. T16Nx_PMWPDZ_Config
  58. T16NxPWM互补模式死区宽度配置
  59. T16NxT16N0/1/2/3 PWM_PDZ_data1-256
  60. ***************************************************************/
  61. void T16Nx_PWMPDZ_Config(T16N_TypeDef *T16Nx, unsigned int PWM_PDZ_data)
  62. {
  63. T16Nx->PDZ.PDZ = PWM_PDZ_data - 1;
  64. }
  65. /***************************************************************
  66. T16Nx_MATxITConfig
  67. T16Nx匹配后的工作模式配置
  68. T16NxT16N0/1/2/3 Type
  69. ***************************************************************/
  70. void T16Nx_MAT0ITConfig(T16N_TypeDef *T16Nx, T16Nx_TYPE_MATCON Type)
  71. {
  72. T16Nx->CON0.MAT0S = Type;
  73. }
  74. void T16Nx_MAT1ITConfig(T16N_TypeDef *T16Nx, T16Nx_TYPE_MATCON Type)
  75. {
  76. T16Nx->CON0.MAT1S = Type;
  77. }
  78. void T16Nx_MAT2ITConfig(T16N_TypeDef *T16Nx, T16Nx_TYPE_MATCON Type)
  79. {
  80. T16Nx->CON0.MAT2S = Type;
  81. }
  82. void T16Nx_MAT3ITConfig(T16N_TypeDef *T16Nx, T16Nx_TYPE_MATCON Type)
  83. {
  84. T16Nx->CON0.MAT3S = Type;
  85. }
  86. /***************************************************************
  87. T16Nx_MATxOutxConfig
  88. T16Nx匹配后的输出端口的模式配置
  89. T16NxT16N0/1/2/3 Type
  90. ***************************************************************/
  91. void T16Nx_MAT0Out0Config(T16N_TypeDef *T16Nx, T16Nx_TYPE_MATOUT Type)
  92. {
  93. T16Nx->CON2.MOM0 = Type;
  94. }
  95. void T16Nx_MAT1Out0Config(T16N_TypeDef *T16Nx, T16Nx_TYPE_MATOUT Type)
  96. {
  97. T16Nx->CON2.MOM1 = Type;
  98. }
  99. void T16Nx_MAT2Out1Config(T16N_TypeDef *T16Nx, T16Nx_TYPE_MATOUT Type)
  100. {
  101. T16Nx->CON2.MOM2 = Type;
  102. }
  103. void T16Nx_MAT3Out1Config(T16N_TypeDef *T16Nx, T16Nx_TYPE_MATOUT Type)
  104. {
  105. T16Nx->CON2.MOM3 = Type;
  106. }
  107. /***************************************************************
  108. T16Nx_ITConfig
  109. T16N中断配置
  110. T16NxT16N0/1/2/3 Type NewState使/
  111. ***************************************************************/
  112. void T16Nx_ITConfig(T16N_TypeDef *T16Nx, T16Nx_TYPE_IT Type, TYPE_FUNCEN NewState)
  113. {
  114. if (NewState != Disable)
  115. {
  116. T16Nx->IE.Word |= (uint32_t)Type;
  117. }
  118. else
  119. {
  120. T16Nx->IE.Word &= (~(uint32_t)Type);
  121. }
  122. }
  123. /***************************************************************
  124. FlagStatus T16Nx_GetITStatus(T16N_TypeDef *T16Nx, T16Nx_TYPE_IT T16Nx_Flag)
  125. T16N用于判断T16N中断使能状态
  126. T16NxT16N0/1/2/3T16Nx_Flag
  127. 使SETRESET
  128. ***************************************************************/
  129. FlagStatus T16Nx_GetITStatus(T16N_TypeDef *T16Nx, T16Nx_TYPE_IT T16Nx_Flag)
  130. {
  131. FlagStatus bitstatus = RESET;
  132. if (T16Nx->IE.Word & T16Nx_Flag)
  133. bitstatus = SET;
  134. return bitstatus;
  135. }
  136. /***************************************************************
  137. T16Nx_SetCNT0
  138. CNT0计数值
  139. T16NxT16N0/1/2/3 Value16
  140. ***************************************************************/
  141. void T16Nx_SetCNT0(T16N_TypeDef *T16Nx, uint16_t Value)
  142. {
  143. T16Nx->CON0.ASYWEN = Disable;
  144. T16Nx->CNT0.CNT0 = Value;
  145. T16Nx->CON0.ASYWEN = Enable;
  146. }
  147. /***************************************************************
  148. T16Nx_SetCNT1
  149. CNT1计数值
  150. T16NxT16N0/1/2/3 Value16
  151. ***************************************************************/
  152. void T16Nx_SetCNT1(T16N_TypeDef *T16Nx, uint16_t Value)
  153. {
  154. T16Nx->CON0.ASYWEN = Disable;
  155. T16Nx->CNT1.CNT1 = Value;
  156. T16Nx->CON0.ASYWEN = Enable;
  157. }
  158. /***************************************************************
  159. T16Nx_SetPREMAT
  160. T16NxT16N0/1/2/3 Value1-256
  161. ***************************************************************/
  162. void T16Nx_SetPREMAT(T16N_TypeDef *T16Nx, uint8_t Value)
  163. {
  164. T16Nx->PREMAT.PREMAT = Value - 1;
  165. }
  166. /***************************************************************
  167. T16Nx_SetPRECNT
  168. T16NxT16N0/1/2/3 Value1-256
  169. ***************************************************************/
  170. void T16Nx_SetPRECNT(T16N_TypeDef *T16Nx, uint8_t Value)
  171. {
  172. T16Nx->CON0.ASYWEN = Disable;
  173. T16Nx->PRECNT.PRECNT = Value;
  174. T16Nx->CON0.ASYWEN = Enable;
  175. }
  176. /***************************************************************
  177. T16Nx_SetMATx
  178. T16NxT16N0/1/2/3 MATxTIM_MAT0/1/2/3 Value16
  179. ***************************************************************/
  180. void T16Nx_SetMAT0(T16N_TypeDef *T16Nx, uint16_t Value)
  181. {
  182. T16Nx->MAT0.MAT0 = Value;
  183. }
  184. void T16Nx_SetMAT1(T16N_TypeDef *T16Nx, uint16_t Value)
  185. {
  186. T16Nx->MAT1.MAT1 = Value;
  187. }
  188. void T16Nx_SetMAT2(T16N_TypeDef *T16Nx, uint16_t Value)
  189. {
  190. T16Nx->MAT2.MAT2 = Value;
  191. }
  192. void T16Nx_SetMAT3(T16N_TypeDef *T16Nx, uint16_t Value)
  193. {
  194. T16Nx->MAT3.MAT3 = Value;
  195. }
  196. /***************************************************************
  197. T16Nx_SetMATx
  198. T16NxT16N0/1/2/3 MATxTOP0/1 Value16
  199. ***************************************************************/
  200. void T16Nx_SetTOP0(T16N_TypeDef *T16Nx, uint16_t Value)
  201. {
  202. T16Nx->TOP0.TOP0 = Value;
  203. }
  204. void T16Nx_SetTOP1(T16N_TypeDef *T16Nx, uint16_t Value)
  205. {
  206. T16Nx->TOP1.TOP1 = Value;
  207. }
  208. /***************************************************************
  209. T16Nx_GetMATx
  210. T16NxT16N0/1/2/3 MATxTIM_MAT0/1/2/3
  211. 16
  212. ***************************************************************/
  213. uint16_t T16Nx_GetMAT0(T16N_TypeDef *T16Nx)
  214. {
  215. return (T16Nx->MAT0.MAT0) ;
  216. }
  217. uint16_t T16Nx_GetMAT1(T16N_TypeDef *T16Nx)
  218. {
  219. return (T16Nx->MAT1.MAT1) ;
  220. }
  221. uint16_t T16Nx_GetMAT2(T16N_TypeDef *T16Nx)
  222. {
  223. return (T16Nx->MAT2.MAT2) ;
  224. }
  225. uint16_t T16Nx_GetMAT3(T16N_TypeDef *T16Nx)
  226. {
  227. return (T16Nx->MAT3.MAT3) ;
  228. }
  229. /***************************************************************
  230. T16Nx_GetTOPx
  231. T16NxT16N0/1/2/3 MATxTIM_TOP0/1
  232. 16
  233. ***************************************************************/
  234. uint16_t T16Nx_GetTOP0(T16N_TypeDef *T16Nx)
  235. {
  236. return (T16Nx->TOP0.TOP0) ;
  237. }
  238. uint16_t T16Nx_GetTOP1(T16N_TypeDef *T16Nx)
  239. {
  240. return (T16Nx->TOP1.TOP1) ;
  241. }
  242. /***************************************************************
  243. T16Nx_GetCNTx
  244. T16NxT16N0/1/2/3
  245. 16
  246. ***************************************************************/
  247. uint16_t T16Nx_GetCNT0(T16N_TypeDef *T16Nx)
  248. {
  249. return (T16Nx->CNT0.CNT0) ;
  250. }
  251. uint16_t T16Nx_GetCNT1(T16N_TypeDef *T16Nx)
  252. {
  253. return (T16Nx->CNT1.CNT1) ;
  254. }
  255. /***************************************************************
  256. T16Nx_GetFlagStatus
  257. T16NxT16N0/1/2/3 T16Nx_Flag
  258. RESET/SET
  259. ***************************************************************/
  260. FlagStatus T16Nx_GetFlagStatus(T16N_TypeDef *T16Nx, T16Nx_TYPE_IT T16Nx_Flag)
  261. {
  262. FlagStatus bitstatus = RESET;
  263. if ((T16Nx->IF.Word & (uint32_t)T16Nx_Flag) != (uint32_t)RESET)
  264. {
  265. bitstatus = SET;
  266. }
  267. else
  268. {
  269. bitstatus = RESET;
  270. }
  271. return bitstatus;
  272. }
  273. /***************************************************************
  274. T16Nx_ClearITPendingBit
  275. T16NxT16N0/1/2/3 T16Nx_Flag
  276. ***************************************************************/
  277. void T16Nx_ClearITPendingBit(T16N_TypeDef *T16Nx, T16Nx_TYPE_IT T16Nx_Flag)
  278. {
  279. T16Nx->IF.Word = (uint32_t)T16Nx_Flag;
  280. }
  281. /***************************************************************
  282. T16Nx_Enable
  283. 使T16Nx
  284. T16NxT16N0/1/2/3
  285. ***************************************************************/
  286. void T16Nx_Enable(T16N_TypeDef *T16Nx)
  287. {
  288. T16Nx->CON0.EN = 1;
  289. }
  290. /***************************************************************
  291. T16Nx_Enable
  292. T16Nx
  293. T16NxT16N0/1/2/3
  294. ***************************************************************/
  295. void T16Nx_Disable(T16N_TypeDef *T16Nx)
  296. {
  297. T16Nx->CON0.EN = 0;
  298. }
  299. /***************************************************************
  300. T16Nx_PWMBK_Config
  301. PWM刹车功能
  302. T16NxT16N0/1/2/3 ,Type PWM刹车结构体
  303. ***************************************************************/
  304. void T16Nx_PWMBK_Config(T16N_TypeDef *T16Nx, T16Nx_PWMBK_Type *type)
  305. {
  306. T16Nx->CON2.PWMBKL0 = type->T16Nx_PWMBK_L0; /* PWM通道0刹车输出电平选择 */
  307. T16Nx->CON2.PWMBKL1 = type->T16Nx_PWMBK_L1; /* PWM通道1刹车输出电平选择 */
  308. T16Nx->CON2.PWMBKP0 = type->T16Nx_PWMBK_P0; /* PWM通道0刹车信号极性选择 */
  309. T16Nx->CON2.PWMBKP1 = type->T16Nx_PWMBK_P1; /* PWM通道1刹车信号极性选择 */
  310. T16Nx->CON2.PWMBKE0 = type->T16Nx_PWMBK_EN0; /* PWM通道0刹车使能 */
  311. T16Nx->CON2.PWMBKE1 = type->T16Nx_PWMBK_EN1; /* PWM通道1刹车使能 */
  312. }
  313. /***************************************************************
  314. T16Nx_GetPWMBKF
  315. PWMBKF刹车标志位
  316. T16NxT16N0/1/2/3
  317. PWMBKF标志位的值SETRESET
  318. ***************************************************************/
  319. FlagStatus T16Nx_GetPWMBKF(T16N_TypeDef *T16Nx)
  320. {
  321. if (T16Nx->CON2.PWMBKF == 1)
  322. return SET;
  323. else
  324. return RESET;
  325. }
  326. /***************************************************************
  327. T16Nx_ResetPWMBKF
  328. : PWMBKF标志PWM端口恢复正常shuc
  329. T16NxT16N0/1/2/3
  330. ***************************************************************/
  331. void T16Nx_ResetPWMBKF(T16N_TypeDef *T16Nx)
  332. {
  333. T16Nx->CON2.PWMBKF = 1;
  334. }
  335. /***************************************************************
  336. T16Nx_PTR_Config
  337. : PWM调试模式ADC触发使能
  338. T16NxT16N0/1/2/3
  339. ***************************************************************/
  340. void T16Nx_PTR_Config(T16N_TypeDef *T16Nx, T16Nx_PWMTRE_type Type, TYPE_FUNCEN NewState)
  341. {
  342. if (NewState != Disable)
  343. {
  344. T16Nx->PTR.Word |= (uint32_t)Type;
  345. }
  346. else
  347. {
  348. T16Nx->PTR.Word &= (~(uint32_t)Type);
  349. }
  350. }
  351. /***************************************************************
  352. T32Nx_BaseInit
  353. T32Nx基本初始化,
  354. T32NxT32N0 T32Nx_BaseInitStruct
  355. ***************************************************************/
  356. void T32Nx_BaseInit(T32N_TypeDef *T32Nx, T32Nx_BaseInitStruType *T32Nx_BaseInitStruct)
  357. {
  358. T32Nx->CON0.CS = T32Nx_BaseInitStruct->T32Nx_ClkS; /* 计数时钟源选择 */
  359. T32Nx->CON0.SYNC = T32Nx_BaseInitStruct->T32Nx_SYNC; /* 外部时钟同步使能 Disable:不同步外部时钟,为异步计数模式。Enable:通过PCLK对外部时钟同步,为同步计数模式,外部时钟的高低电平平均至少保持2个时钟周期 */
  360. T32Nx->CON0.EDGE = T32Nx_BaseInitStruct->T32Nx_EDGE; /* 外部时钟计数边沿选择 */
  361. T32Nx->CON0.MOD = T32Nx_BaseInitStruct->T32Nx_Mode; /* 工作模式选择 */
  362. T32Nx->PREMAT.PREMAT = T32Nx_BaseInitStruct->T32Nx_PREMAT - 1; /* 预分频比设置,范围:1-256 */
  363. }
  364. /***************************************************************
  365. T32Nx_CapInit
  366. T32Nx捕捉初始化
  367. T32NxT32N0 T32Nx_CapInitStruct
  368. ***************************************************************/
  369. void T32Nx_CapInit(T32N_TypeDef *T32Nx, T32Nx_CapInitStruType *T32Nx_CapInitStruct)
  370. {
  371. T32Nx->CON1.CAPPE = T32Nx_CapInitStruct->T32Nx_CapRise; /* 配置上升沿输入捕捉是否使能 */
  372. T32Nx->CON1.CAPNE = T32Nx_CapInitStruct->T32Nx_CapFall; /* 配置下降沿输入捕捉是否使能 */
  373. T32Nx->CON1.CAPIS0 = T32Nx_CapInitStruct->T32Nx_CapIS0; /* 配置捕捉输入端口T32NxIN0是否使能 */
  374. T32Nx->CON1.CAPIS1 = T32Nx_CapInitStruct->T32Nx_CapIS1; /* 配置捕捉输入端口T32NxIN1是否使能 */
  375. T32Nx->CON1.CAPT = T32Nx_CapInitStruct->T32Nx_CapTime; /* 配置捕捉次数 */
  376. T32Nx->CON1.CAPL0 = T32Nx_CapInitStruct->T32Nx_CAPCAPL0; /* 配置捕捉0重载计数器是否使能 */
  377. T32Nx->CON1.CAPL1 = T32Nx_CapInitStruct->T32Nx_CAPCAPL1; /* 配置捕捉1重载计数器是否使能 */
  378. }
  379. /***************************************************************
  380. T32Nx_PMWOutInit
  381. T32NxPWM输出初始化
  382. T32NxT32N0 T32Nx_PWMInitStruct
  383. ***************************************************************/
  384. void T32Nx_PMWOutInit(T32N_TypeDef *T32Nx, T32Nx_PWMInitStruType *T32Nx_PWMInitStruct)
  385. {
  386. T32Nx->CON1.MOE0 = T32Nx_PWMInitStruct->T32Nx_MOE0; /* 配置输出端口0是否使能 */
  387. T32Nx->CON1.MOE1 = T32Nx_PWMInitStruct->T32Nx_MOE1; /* 配置输出端口1是否使能 */
  388. }
  389. /***************************************************************
  390. T32Nx_MATxITConfig
  391. T32Nx匹配后的工作模式配置
  392. T32NxT32N0 Type
  393. ***************************************************************/
  394. void T32Nx_MAT0ITConfig(T32N_TypeDef *T32Nx, T32Nx_TYPE_MATCON Type)
  395. {
  396. T32Nx->CON0.MAT0S = Type;
  397. }
  398. void T32Nx_MAT1ITConfig(T32N_TypeDef *T32Nx, T32Nx_TYPE_MATCON Type)
  399. {
  400. T32Nx->CON0.MAT1S = Type;
  401. }
  402. void T32Nx_MAT2ITConfig(T32N_TypeDef *T32Nx, T32Nx_TYPE_MATCON Type)
  403. {
  404. T32Nx->CON0.MAT2S = Type;
  405. }
  406. void T32Nx_MAT3ITConfig(T32N_TypeDef *T32Nx, T32Nx_TYPE_MATCON Type)
  407. {
  408. T32Nx->CON0.MAT3S = Type;
  409. }
  410. /***************************************************************
  411. T32Nx_MATxOutxConfig
  412. T32Nx匹配后的输出端口的模式配置
  413. T32NxT32N0/1/2/3 Type
  414. ***************************************************************/
  415. void T32Nx_MAT0Out0Config(T32N_TypeDef *T32Nx, T32Nx_TYPE_MATOUT Type)
  416. {
  417. T32Nx->CON1.MOM0 = Type;
  418. }
  419. void T32Nx_MAT1Out0Config(T32N_TypeDef *T32Nx, T32Nx_TYPE_MATOUT Type)
  420. {
  421. T32Nx->CON1.MOM1 = Type;
  422. }
  423. void T32Nx_MAT2Out1Config(T32N_TypeDef *T32Nx, T32Nx_TYPE_MATOUT Type)
  424. {
  425. T32Nx->CON1.MOM2 = Type;
  426. }
  427. void T32Nx_MAT3Out1Config(T32N_TypeDef *T32Nx, T32Nx_TYPE_MATOUT Type)
  428. {
  429. T32Nx->CON1.MOM3 = Type;
  430. }
  431. /***************************************************************
  432. T32Nx_ITConfig
  433. T32N中断配置
  434. T32NxT32N0 Type NewState使/
  435. ***************************************************************/
  436. void T32Nx_ITConfig(T32N_TypeDef *T32Nx, T32Nx_TYPE_IT Type, TYPE_FUNCEN NewState)
  437. {
  438. if (NewState != Disable)
  439. {
  440. T32Nx->IE.Word |= (uint32_t)Type;
  441. }
  442. else
  443. {
  444. T32Nx->IE.Word &= (~(uint32_t)Type);
  445. }
  446. }
  447. /***************************************************************
  448. FlagStatus T32Nx_GetITStatus(T32N_TypeDef *T32Nx, T32Nx_TYPE_IT T32Nx_Flag)
  449. T32N用于判断T32N中断使能状态
  450. T32NxT32N0T32Nx_Flag
  451. 使SETRESET
  452. ***************************************************************/
  453. FlagStatus T32Nx_GetITStatus(T32N_TypeDef *T32Nx, T32Nx_TYPE_IT T32Nx_Flag)
  454. {
  455. FlagStatus bitstatus = RESET;
  456. if (T32Nx->IE.Word & T32Nx_Flag)
  457. bitstatus = SET;
  458. return bitstatus;
  459. }
  460. /***************************************************************
  461. T32Nx_SetCNT0
  462. CNT0计数值
  463. T16NxT32N0/1/2/3 Value32
  464. ***************************************************************/
  465. void T32Nx_SetCNT(T32N_TypeDef *T32Nx, uint32_t Value)
  466. {
  467. T32Nx->CON0.ASYNC_WREN = Enable;
  468. T32Nx->CNT.CNT = Value;
  469. T32Nx->CON0.ASYNC_WREN = Disable;
  470. }
  471. /***************************************************************
  472. T32Nx_SetPREMAT
  473. T32NxT32N0 Value1-256
  474. ***************************************************************/
  475. void T32Nx_SetPREMAT(T32N_TypeDef *T32Nx, uint8_t Value)
  476. {
  477. T32Nx->PREMAT.PREMAT = Value - 1;
  478. }
  479. /***************************************************************
  480. T32Nx_SetPRECNT
  481. T32NxT32N0 Value1-256
  482. ***************************************************************/
  483. void T32Nx_SetPRECNT(T32N_TypeDef *T32Nx, uint8_t Value)
  484. {
  485. T32Nx->CON0.ASYNC_WREN = Enable;
  486. T32Nx->PRECNT.PRECNT = Value;
  487. T32Nx->CON0.ASYNC_WREN = Disable;
  488. }
  489. /***************************************************************
  490. T32Nx_SetMATx
  491. T16NxT32N0 MATxTIM_MAT0/1/2/3 Value32
  492. ***************************************************************/
  493. void T32Nx_SetMAT0(T32N_TypeDef *T32Nx, uint32_t Value)
  494. {
  495. T32Nx->MAT0.MAT0 = Value;
  496. }
  497. void T32Nx_SetMAT1(T32N_TypeDef *T32Nx, uint32_t Value)
  498. {
  499. T32Nx->MAT1.MAT1 = Value;
  500. }
  501. void T32Nx_SetMAT2(T32N_TypeDef *T32Nx, uint32_t Value)
  502. {
  503. T32Nx->MAT2.MAT2 = Value;
  504. }
  505. void T32Nx_SetMAT3(T32N_TypeDef *T32Nx, uint32_t Value)
  506. {
  507. T32Nx->MAT3.MAT3 = Value;
  508. }
  509. /***************************************************************
  510. T32Nx_GetMATx
  511. T32NxT32N0 MATxT32Nx_MAT0/1/2/3
  512. 32
  513. ***************************************************************/
  514. uint32_t T32Nx_GetMAT0(T32N_TypeDef *T32Nx)
  515. {
  516. return (T32Nx->MAT0.MAT0) ;
  517. }
  518. uint32_t T32Nx_GetMAT1(T32N_TypeDef *T32Nx)
  519. {
  520. return (T32Nx->MAT1.MAT1) ;
  521. }
  522. uint32_t T32Nx_GetMAT2(T32N_TypeDef *T32Nx)
  523. {
  524. return (T32Nx->MAT2.MAT2) ;
  525. }
  526. uint32_t T32Nx_GetMAT3(T32N_TypeDef *T32Nx)
  527. {
  528. return (T32Nx->MAT3.MAT3) ;
  529. }
  530. /***************************************************************
  531. T32Nx_GetCNT
  532. T32NxT32N0/1/2/3
  533. 32
  534. ***************************************************************/
  535. uint32_t T32Nx_GetCNT(T32N_TypeDef *T32Nx)
  536. {
  537. return (T32Nx->CNT.CNT) ;
  538. }
  539. /***************************************************************
  540. T32Nx_GetFlagStatus
  541. T32NxT32N0 T32Nx_Flag
  542. RESET/SET
  543. ***************************************************************/
  544. FlagStatus T32Nx_GetFlagStatus(T32N_TypeDef *T32Nx, T32Nx_TYPE_IT T32Nx_Flag)
  545. {
  546. FlagStatus bitstatus = RESET;
  547. if ((T32Nx->IF.Word & (uint32_t)T32Nx_Flag) != (uint32_t)RESET)
  548. {
  549. bitstatus = SET;
  550. }
  551. else
  552. {
  553. bitstatus = RESET;
  554. }
  555. return bitstatus;
  556. }
  557. /***************************************************************
  558. T32Nx_ClearITPendingBit
  559. T32NxT16N0 TIM_Flag
  560. ***************************************************************/
  561. void T32Nx_ClearITPendingBit(T32N_TypeDef *T32Nx, T32Nx_TYPE_IT TIM_Flag)
  562. {
  563. T32Nx->IF.Word = (uint32_t)TIM_Flag;
  564. }
  565. /***************************************************************
  566. T32Nx_Enable
  567. 使T32Nx
  568. T32NxT32N0
  569. ***************************************************************/
  570. void T32Nx_Enable(T32N_TypeDef *T32Nx)
  571. {
  572. T32Nx->CON0.EN = 1;
  573. }
  574. /***************************************************************
  575. T32Nx_Enable
  576. T32Nx
  577. T32NxT32N0
  578. ***************************************************************/
  579. void T32Nx_Disable(T32N_TypeDef *T32Nx)
  580. {
  581. T32Nx->CON0.EN = 0;
  582. }
  583. /***************************************************************
  584. BUZC_Frequence
  585. BUZ使能后BUZ信号频率
  586. Frequence : BUZ信号频率sys_buz 使
  587. ***************************************************************/
  588. void BUZC_Frequence(uint32_t Frequence, TYPE_FUNCEN sys_buz)
  589. {
  590. float tmp;
  591. if (sys_buz == Disable) /* 如果BUZC配置为禁止,则直接禁止BUZC,并返回 */
  592. {
  593. GPIO->BUZC.BUZEN = 0;
  594. return;
  595. }
  596. tmp = SystemCoreClock / (Frequence * 2) - 1;
  597. GPIO->BUZC.BUZ_LOAD = (uint32_t)tmp;
  598. GPIO->BUZC.BUZEN = 1;
  599. }