lib_timer.c 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569
  1. /***************************************************************
  2. *Copyright (C), 2017, Shanghai Eastsoft Microelectronics Co., Ltd
  3. *文件名: lib_timer.c
  4. *作 者: Liut
  5. *版 本: V1.00
  6. *日 期: 2017/07/14
  7. *描 述: 定时器模块库函数
  8. *备 注: 适用于 ES8P508x芯片
  9. 本软件仅供学习和演示使用,对用户直接引用代码所带来的风险或后果不承担任何法律责任。
  10. ***************************************************************/
  11. #include "lib_timer.h"
  12. /***************************************************************
  13. 函数名:T16Nx_BaseInit
  14. 描 述:T16Nx基本初始化
  15. 输入值:T16Nx:可以是T16N0/1/2/3 、TIM_BaseInitStruct:初始化配置结构体地址
  16. 输出值:无
  17. 返回值:无
  18. ***************************************************************/
  19. void T16Nx_BaseInit(T16N_TypeDef* T16Nx,TIM_BaseInitStruType* TIM_BaseInitStruct)
  20. {
  21. T16Nx->CON0.CS = TIM_BaseInitStruct->TIM_ClkS;
  22. T16Nx->CON0.SYNC = TIM_BaseInitStruct->TIM_SYNC;
  23. T16Nx->CON0.EDGE = TIM_BaseInitStruct->TIM_EDGE;
  24. T16Nx->CON0.MOD = TIM_BaseInitStruct->TIM_Mode;
  25. }
  26. /***************************************************************
  27. 函数名:T32Nx_BaseInit
  28. 描 述:T32Nx基本初始化
  29. 输入值:T32Nx:可以是T32N0 、TIM_BaseInitStruct:初始化配置结构体地址
  30. 输出值:无
  31. 返回值:无
  32. ***************************************************************/
  33. void T32Nx_BaseInit(T32N_TypeDef* T32Nx,TIM_BaseInitStruType* TIM_BaseInitStruct)
  34. {
  35. T32Nx->CON0.CS = TIM_BaseInitStruct->TIM_ClkS;
  36. T32Nx->CON0.SYNC = TIM_BaseInitStruct->TIM_SYNC;
  37. T32Nx->CON0.EDGE = TIM_BaseInitStruct->TIM_EDGE;
  38. T32Nx->CON0.MOD = TIM_BaseInitStruct->TIM_Mode;
  39. }
  40. /***************************************************************
  41. 函数名:T16Nx_CapInit
  42. 描 述:T16Nx捕捉初始化
  43. 输入值::T16Nx:可以是T16N0/1/2/3、 TIM_CapInitStruct:初始化配置结构体地址
  44. 输出值:无
  45. 返回值:无
  46. ***************************************************************/
  47. void T16Nx_CapInit(T16N_TypeDef* T16Nx,TIM_CapInitStruType* TIM_CapInitStruct)
  48. {
  49. T16Nx->CON1.CAPPE = TIM_CapInitStruct->TIM_CapRise;
  50. T16Nx->CON1.CAPNE = TIM_CapInitStruct->TIM_CapFall;
  51. T16Nx->CON1.CAPIS0 = TIM_CapInitStruct->TIM_CapIS0;
  52. T16Nx->CON1.CAPIS1 = TIM_CapInitStruct->TIM_CapIS1;
  53. T16Nx->CON1.CAPT = TIM_CapInitStruct->TIM_CapTime;
  54. }
  55. /***************************************************************
  56. 函数名:T32Nx_CapInit
  57. 描 述:T32Nx捕捉初始化
  58. 输入值::T32Nx:可以是T32N0、 TIM_CapInitStruct:初始化配置结构体地址
  59. 输出值:无
  60. 返回值:无
  61. ***************************************************************/
  62. void T32Nx_CapInit(T32N_TypeDef* T32Nx,TIM_CapInitStruType* TIM_CapInitStruct)
  63. {
  64. T32Nx->CON1.CAPPE = TIM_CapInitStruct->TIM_CapRise;
  65. T32Nx->CON1.CAPNE = TIM_CapInitStruct->TIM_CapFall;
  66. T32Nx->CON1.CAPIS0 = TIM_CapInitStruct->TIM_CapIS0;
  67. T32Nx->CON1.CAPIS1 = TIM_CapInitStruct->TIM_CapIS1;
  68. T32Nx->CON1.CAPT = TIM_CapInitStruct->TIM_CapTime;
  69. }
  70. /***************************************************************
  71. 函数名:T16Nx_MATxITConfig
  72. 描 述:T16Nx匹配后的工作模式配置
  73. 输入值:T16Nx:可以是T16N0/1/2/3、 Type:匹配后的工作模式
  74. 输出值:无
  75. 返回值:无
  76. ***************************************************************/
  77. void T16Nx_MAT0ITConfig(T16N_TypeDef* T16Nx,TIM_TYPE_MATCON Type)
  78. {
  79. T16Nx->CON0.MAT0S = Type;
  80. }
  81. void T16Nx_MAT1ITConfig(T16N_TypeDef* T16Nx,TIM_TYPE_MATCON Type)
  82. {
  83. T16Nx->CON0.MAT1S = Type;
  84. }
  85. void T16Nx_MAT2ITConfig(T16N_TypeDef* T16Nx,TIM_TYPE_MATCON Type)
  86. {
  87. T16Nx->CON0.MAT2S = Type;
  88. }
  89. void T16Nx_MAT3ITConfig(T16N_TypeDef* T16Nx,TIM_TYPE_MATCON Type)
  90. {
  91. T16Nx->CON0.MAT3S = Type;
  92. }
  93. /***************************************************************
  94. 函数名:T32Nx_MATxITConfig
  95. 描 述:T32Nx匹配后的工作模式配置
  96. 输入值:T32Nx:可以是T32N0、 Type:匹配后的工作模式
  97. 输出值:无
  98. 返回值:无
  99. ***************************************************************/
  100. void T32Nx_MAT0ITConfig(T32N_TypeDef* T32Nx,TIM_TYPE_MATCON Type)
  101. {
  102. T32Nx->CON0.MAT0S = Type;
  103. }
  104. void T32Nx_MAT1ITConfig(T32N_TypeDef* T32Nx,TIM_TYPE_MATCON Type)
  105. {
  106. T32Nx->CON0.MAT1S = Type;
  107. }
  108. void T32Nx_MAT2ITConfig(T32N_TypeDef* T32Nx,TIM_TYPE_MATCON Type)
  109. {
  110. T32Nx->CON0.MAT2S = Type;
  111. }
  112. void T32Nx_MAT3ITConfig(T32N_TypeDef* T32Nx,TIM_TYPE_MATCON Type)
  113. {
  114. T32Nx->CON0.MAT3S = Type;
  115. }
  116. /***************************************************************
  117. 函数名:T16Nx_MATxOutxConfig
  118. 描 述:T16Nx匹配后的输出端口的模式配置
  119. 输入值:T16Nx:可以是T16N0/1/2/3 、 Type:匹配后端口的工作模式
  120. 输出值:无
  121. 返回值:无
  122. ***************************************************************/
  123. void T16Nx_MAT0Out0Config(T16N_TypeDef* T16Nx,TIM_TYPE_MATOUT Type)
  124. {
  125. T16Nx->CON2.MOM0 = Type;
  126. }
  127. void T16Nx_MAT1Out0Config(T16N_TypeDef* T16Nx,TIM_TYPE_MATOUT Type)
  128. {
  129. T16Nx->CON2.MOM1 = Type;
  130. }
  131. void T16Nx_MAT2Out1Config(T16N_TypeDef* T16Nx,TIM_TYPE_MATOUT Type)
  132. {
  133. T16Nx->CON2.MOM2 = Type;
  134. }
  135. void T16Nx_MAT3Out1Config(T16N_TypeDef* T16Nx,TIM_TYPE_MATOUT Type)
  136. {
  137. T16Nx->CON2.MOM3 = Type;
  138. }
  139. /***************************************************************
  140. 函数名:T32Nx_MATxOutxConfig
  141. 描 述:T32Nx匹配后的输出端口的模式配置
  142. 输入值:T32Nx:可以是T32N0 、 Type:匹配后端口的工作模式
  143. 输出值:无
  144. 返回值:无
  145. ***************************************************************/
  146. void T32Nx_MAT0Out0Config(T32N_TypeDef* T32Nx,TIM_TYPE_MATOUT Type)
  147. {
  148. T32Nx->CON2.MOM0 = Type;
  149. }
  150. void T32Nx_MAT1Out0Config(T32N_TypeDef* T32Nx,TIM_TYPE_MATOUT Type)
  151. {
  152. T32Nx->CON2.MOM1 = Type;
  153. }
  154. void T32Nx_MAT2Out1Config(T32N_TypeDef* T32Nx,TIM_TYPE_MATOUT Type)
  155. {
  156. T32Nx->CON2.MOM2 = Type;
  157. }
  158. void T32Nx_MAT3Out1Config(T32N_TypeDef* T32Nx,TIM_TYPE_MATOUT Type)
  159. {
  160. T32Nx->CON2.MOM3 = Type;
  161. }
  162. /***************************************************************
  163. 函数名:T16Nx_ITConfig
  164. 描 述:T16N中断配置
  165. 输入值:T16Nx:可以是T16N0/1/2/3、 Type:中断类型 、 NewState:使能/失能
  166. 输出值:无
  167. 返回值:无
  168. ***************************************************************/
  169. void T16Nx_ITConfig(T16N_TypeDef* T16Nx,TIM_TYPE_IT Type,TYPE_FUNCEN NewState)
  170. {
  171. if (NewState != DISABLE)
  172. T16Nx->IE.Word |= (uint32_t)Type;
  173. else
  174. T16Nx->IE.Word &= (~(uint32_t)Type);
  175. }
  176. /***************************************************************
  177. 函数名:T32Nx_ITConfig
  178. 描 述:T32N中断配置
  179. 输入值:T32Nx:可以是T32N0、 Type:中断类型 、 NewState:使能/失能
  180. 输出值:无
  181. 返回值:无
  182. ***************************************************************/
  183. void T32Nx_ITConfig(T32N_TypeDef* T32Nx,TIM_TYPE_IT Type,TYPE_FUNCEN NewState)
  184. {
  185. if (NewState != DISABLE)
  186. T32Nx->IE.Word|= (uint32_t)Type;
  187. else
  188. T32Nx->IE.Word &= (~(uint32_t)Type);
  189. }
  190. /***************************************************************
  191. 函数名:T16Nx_PWMOutConfig
  192. 描 述:T16N0OUT0,T16N1OUT0、T16N2OUT0、T16N3OUT0 输出配置。原理为使用uart的脉宽调制,因此不能与uart同时使用。
  193. 输入值:
  194. 输出值:无
  195. 返回值:无
  196. ***************************************************************/
  197. void T16Nx_PWMOutConfig(T16N_TypeDef* T16Nx,T16Nx_PWMInitStruType* T16Nx_PWMInitStruct)
  198. {
  199. T16Nx->CON2.MOE0 = T16Nx_PWMInitStruct->T16Nx_MOE0; //配置输出端口0是否使能
  200. T16Nx->CON2.MOE1 = T16Nx_PWMInitStruct->T16Nx_MOE1; //配置输出端口1是否使能
  201. T16Nx->CON2.POL0 = T16Nx_PWMInitStruct->T16Nx_POL0; //配置T16NxOut0输出极性
  202. T16Nx->CON2.POL1 = T16Nx_PWMInitStruct->T16Nx_POL1; //配置T16NxOut1输出极性
  203. }
  204. /***************************************************************
  205. 函数名:T16Nx_PWMBK_Config
  206. 描 述:配置PWM刹车功能
  207. 输入值:T16Nx:可以是T16N0/1/2/3 ,Type 配置PWM刹车结构体
  208. 输出值:无
  209. 返回值:无
  210. ***************************************************************/
  211. void T16Nx_PWMBK_Config(T16N_TypeDef* T16Nx,T16Nx_PWMBK_Type* type)
  212. {
  213. T16Nx->CON2.PBKL0 = type->T16Nx_PWMBKL0; //PWM通道0刹车输出电平选择
  214. T16Nx->CON2.PBKL1 = type->T16Nx_PWMBKL1; //PWM通道1刹车输出电平选择
  215. T16Nx->CON2.PBKS = type->T16Nx_PWMBKS; //PWM信号源选择
  216. T16Nx->CON2.PBKPS = type->T16Nx_PWMBKPS; //PWM通道刹车信号极性选择
  217. T16Nx->CON2.PBKEN = type->T16Nx_PWMBKEN; //PWM通道刹车使能
  218. }
  219. /***************************************************************
  220. 函数名:T16Nx_TRG_Config
  221. 描 述: 配置T16N ADC触发使能
  222. 输入值:T16Nx:可以是T16N0/1/2/3
  223. 输出值:无
  224. 返回值:无
  225. ***************************************************************/
  226. void T16Nx_TRG_Config(T16N_TypeDef* T16Nx,T16Nx_PWMTRG_type Type,TYPE_FUNCEN NewState)
  227. {
  228. if(Type == T16Nx_MAT0)
  229. T16Nx->TRG.MAT0TAR = 1;
  230. else if(Type == T16Nx_MAT1)
  231. T16Nx->TRG.MAT1TAR = 1;
  232. else if(Type == T16Nx_MAT2)
  233. T16Nx->TRG.MAT2TAR = 1;
  234. else if(Type == T16Nx_MAT3)
  235. T16Nx->TRG.MAT3TAR = 1;
  236. T16Nx->TRG.OVTAR = NewState;
  237. }
  238. /***************************************************************
  239. 函数名:T16Nx_GetPWMBKF
  240. 描 述:获取PWMBKF刹车标志位
  241. 输入值:T16Nx:可以是T16N0/1/2/3
  242. 输出值:PWMBKF标志位的值。SET:发生刹车事件,RESET:未发生刹车事件
  243. 返回值:无
  244. ***************************************************************/
  245. FlagStatus T16Nx_GetPWMBKF(T16N_TypeDef* T16Nx)
  246. {
  247. if(T16Nx->CON2.PBKF == 1)
  248. return SET;
  249. else
  250. return RESET;
  251. }
  252. /***************************************************************
  253. 函数名:T16Nx_ResetPWMBKF
  254. 描 述: 清除PWMBKF标志,标志清除后PWM端口恢复正常shuc
  255. 输入值:T16Nx:可以是T16N0/1/2/3
  256. 输出值:无
  257. 返回值:无
  258. ***************************************************************/
  259. void T16Nx_ResetPWMBKF(T16N_TypeDef* T16Nx)
  260. {
  261. T16Nx->CON2.PBKF = 1;
  262. }
  263. /***************************************************************
  264. 函数名:T16Nx_SetCNT
  265. 描 述:设置计数值
  266. 输入值:T16Nx:可以是T16N0/1/2/3、 Value:16位数值
  267. 输出值:无
  268. 返回值:无
  269. ***************************************************************/
  270. void T16Nx_SetCNT(T16N_TypeDef* T16Nx,uint16_t Value)
  271. {
  272. T16Nx->CNT.CNT = Value;
  273. }
  274. /***************************************************************
  275. 函数名:T32Nx_SetCNT
  276. 描 述:设置计数值
  277. 输入值:T32Nx:可以是T32N0、 Value:32位数值(16位时右对齐)
  278. 输出值:无
  279. 返回值:无
  280. ***************************************************************/
  281. void T32Nx_SetCNT(T32N_TypeDef* T32Nx,uint32_t Value)
  282. {
  283. T32Nx->CNT.CNT = Value;
  284. }
  285. /***************************************************************
  286. 函数名:T16Nx_SetPRECNT
  287. 描 述:设置预分频计数寄存器值
  288. 输入值:T16Nx:可以是T16N0/1/2/3 、 Value:8位数值
  289. 输出值:无
  290. 返回值:无
  291. ***************************************************************/
  292. void T16Nx_SetPRECNT(T16N_TypeDef* T16Nx,uint8_t Value)
  293. {
  294. T16Nx->PRECNT.PRECNT = Value;
  295. }
  296. /***************************************************************
  297. 函数名:T32Nx_SetPRECNT
  298. 描 述:设置预分频计数寄存器值
  299. 输入值:T32Nx:可以是T32N0、 Value:8位数值
  300. 输出值:无
  301. 返回值:无
  302. ***************************************************************/
  303. void T32Nx_SetPRECNT(T32N_TypeDef* T32Nx,uint8_t Value)
  304. {
  305. T32Nx->PRECNT.PRECNT = Value - 1;
  306. }
  307. /***************************************************************
  308. 函数名:T16Nx_SetPREMAT
  309. 描 述:设置预分频计数匹配寄存器值
  310. 输入值:T16Nx:可以是T16N0/1/2/3、 Value:8位数值
  311. 输出值:无
  312. 返回值:无
  313. ***************************************************************/
  314. void T16Nx_SetPREMAT(T16N_TypeDef* T16Nx,uint8_t Value)
  315. {
  316. T16Nx->PREMAT.PREMAT = Value - 1;
  317. }
  318. /***************************************************************
  319. 函数名:T32Nx_SetPREMAT
  320. 描 述:设置预分频计数匹配寄存器值
  321. 输入值:T32Nx:可以是T32N0、 、 Value:8位数值
  322. 输出值:无
  323. 返回值:无
  324. ***************************************************************/
  325. void T32Nx_SetPREMAT(T32N_TypeDef* T32Nx,uint8_t Value)
  326. {
  327. T32Nx->PREMAT.PREMAT = Value - 1;
  328. }
  329. /***************************************************************
  330. 函数名:T16Nx_SetMATx
  331. 描 述:设置匹配寄存器
  332. 输入值:T16Nx:可以是T16N0/1/2/3、 MATx:可以是TIM_MAT0/1/2/3 、 Value:16位数值
  333. 输出值:无
  334. 返回值:无
  335. ***************************************************************/
  336. void T16Nx_SetMAT0(T16N_TypeDef* T16Nx,uint16_t Value)
  337. {
  338. T16Nx->MAT0.MAT0 = Value;
  339. }
  340. void T16Nx_SetMAT1(T16N_TypeDef* T16Nx,uint16_t Value)
  341. {
  342. T16Nx->MAT1.MAT1 = Value;
  343. }
  344. void T16Nx_SetMAT2(T16N_TypeDef* T16Nx,uint16_t Value)
  345. {
  346. T16Nx->MAT2.MAT2 = Value;
  347. }
  348. void T16Nx_SetMAT3(T16N_TypeDef* T16Nx,uint16_t Value)
  349. {
  350. T16Nx->MAT3.MAT3 = Value;
  351. }
  352. /***************************************************************
  353. 函数名:T32Nx_SetMATx
  354. 描 述:设置匹配寄存器
  355. 输入值:T32Nx:可以是T32N0、 MATx:可以是TIM_MAT0/1/2/3 、 Value:32位数值
  356. 输出值:无
  357. 返回值:无
  358. ***************************************************************/
  359. void T32Nx_SetMAT0(T32N_TypeDef* T32Nx,uint32_t Value)
  360. {
  361. T32Nx->MAT0.MAT0 = Value;
  362. }
  363. void T32Nx_SetMAT1(T32N_TypeDef* T32Nx,uint32_t Value)
  364. {
  365. T32Nx->MAT1.MAT1 = Value;
  366. }
  367. void T32Nx_SetMAT2(T32N_TypeDef* T32Nx,uint32_t Value)
  368. {
  369. T32Nx->MAT2.MAT2 = Value;
  370. }
  371. void T32Nx_SetMAT3(T32N_TypeDef* T32Nx,uint32_t Value)
  372. {
  373. T32Nx->MAT3.MAT3 = Value;
  374. }
  375. /***************************************************************
  376. 函数名:T16Nx_GetMATx
  377. 描 述:读取匹配寄存器值
  378. 输入值:T16Nx:可以是T16N0/1/2/3
  379. 输出值:无
  380. 返回值:16位数值
  381. ***************************************************************/
  382. uint16_t T16Nx_GetMAT0(T16N_TypeDef* T16Nx)
  383. {
  384. return (T16Nx->MAT0.MAT0);
  385. }
  386. uint16_t T16Nx_GetMAT1(T16N_TypeDef* T16Nx)
  387. {
  388. return (T16Nx->MAT1.MAT1);
  389. }
  390. uint16_t T16Nx_GetMAT2(T16N_TypeDef* T16Nx)
  391. {
  392. return (T16Nx->MAT2.MAT2);
  393. }
  394. uint16_t T16Nx_GetMAT3(T16N_TypeDef* T16Nx)
  395. {
  396. return (T16Nx->MAT3.MAT3);
  397. }
  398. /***************************************************************
  399. 函数名:T32Nx_GetMATx
  400. 描 述:读取匹配寄存器值
  401. 输入值:T32Nx:可以是T32N0/3 MATx:可以是TIM_MAT0/1/2/3
  402. 输出值:无
  403. 返回值:32位数值
  404. ***************************************************************/
  405. uint32_t T32Nx_GetMAT0(T32N_TypeDef* T32Nx)
  406. {
  407. return (T32Nx->MAT0.MAT0);
  408. }
  409. uint32_t T32Nx_GetMAT1(T32N_TypeDef* T32Nx)
  410. {
  411. return (T32Nx->MAT1.MAT1);
  412. }
  413. uint32_t T32Nx_GetMAT2(T32N_TypeDef* T32Nx)
  414. {
  415. return (T32Nx->MAT2.MAT2);
  416. }
  417. uint32_t T32Nx_GetMAT3(T32N_TypeDef* T32Nx)
  418. {
  419. return (T32Nx->MAT3.MAT3);
  420. }
  421. /***************************************************************
  422. 函数名:T16Nx_GetCNT
  423. 描 述:读取计数寄存器值
  424. 输入值:T16Nx:可以是T16N0/1/2/3、
  425. 返回值:16位数值
  426. ***************************************************************/
  427. uint16_t T16Nx_GetCNT(T16N_TypeDef* T16Nx)
  428. {
  429. return (T16Nx->CNT.CNT);
  430. }
  431. /***************************************************************
  432. 函数名:T32Nx_GetCNT
  433. 描 述:读取计数寄存器值
  434. 输入值:T32Nx:可以是T32N0/3、
  435. 返回值:16/32位数值
  436. ***************************************************************/
  437. uint32_t T32Nx_GetCNT(T32N_TypeDef* T32Nx)
  438. {
  439. return (T32Nx->CNT.CNT);
  440. }
  441. /***************************************************************
  442. 函数名:T16Nx_GetPRECNT
  443. 描 述:读取预分频计数寄存器值
  444. 输入值:T16Nx:可以是T16N0/1/2/3
  445. 输出值:无
  446. 返回值:8位数值
  447. ***************************************************************/
  448. uint8_t T16Nx_GetPRECNT(T16N_TypeDef* T16Nx)
  449. {
  450. return (uint8_t)(T16Nx->PRECNT.PRECNT);
  451. }
  452. /***************************************************************
  453. 函数名:T32Nx_GetPRECNT
  454. 描 述:读取预分频计数寄存器值
  455. 输入值:T32Nx:可以是T32N0
  456. 输出值:无
  457. 返回值:8位数值
  458. ***************************************************************/
  459. uint8_t T32Nx_GetPRECNT(T32N_TypeDef* T32Nx)
  460. {
  461. return (uint8_t)(T32Nx->PRECNT.PRECNT);
  462. }
  463. /***************************************************************
  464. 函数名:T16Nx_GetFlagStatus
  465. 描 述:读取指定标志位
  466. 输入值:T16Nx:可以是T16N0/1/2/3、 TIM_Flag:中断标志位
  467. 输出值:无
  468. 返回值:RESET/SET
  469. ***************************************************************/
  470. FlagStatus T16Nx_GetFlagStatus(T16N_TypeDef* T16Nx,TIM_TYPE_IF TIM_Flag)
  471. {
  472. FlagStatus bitstatus = RESET;
  473. if((T16Nx->IF.Word & (uint32_t)TIM_Flag) != (uint32_t)RESET)
  474. bitstatus = SET;
  475. else
  476. bitstatus = RESET;
  477. return bitstatus;
  478. }
  479. /***************************************************************
  480. 函数名:T32Nx_GetFlagStatus
  481. 描 述:读取指定标志位
  482. 输入值:T32Nx:可以是T32N0、、 TIM_Flag:中断标志位
  483. 输出值:无
  484. 返回值:RESET/SET
  485. ***************************************************************/
  486. FlagStatus T32Nx_GetFlagStatus(T32N_TypeDef* T32Nx,TIM_TYPE_IF TIM_Flag)
  487. {
  488. FlagStatus bitstatus = RESET;
  489. if((T32Nx->IF.Word & (uint32_t)TIM_Flag) != (uint32_t)RESET)
  490. bitstatus = SET;
  491. else
  492. bitstatus = RESET;
  493. return bitstatus;
  494. }
  495. /***************************************************************
  496. 函数名:T16Nx_GetITStatus
  497. 描 述:读取指定中断标志位,未使能相应中断时不会返回SET
  498. 输入值:T16Nx:可以是T16N0/1/2/3、 TIM_Flag:中断标志位
  499. 输出值:无
  500. 返回值:RESET/SET
  501. ***************************************************************/
  502. ITStatus T16Nx_GetITStatus(T16N_TypeDef* T16Nx,TIM_TYPE_IT TIM_Flag)
  503. {
  504. ITStatus bitstatus = RESET;
  505. uint32_t itstatus = 0x0, itenable = 0x0;
  506. itstatus = T16Nx->IF.Word & (uint32_t)TIM_Flag;
  507. itenable = T16Nx->IE.Word & (uint32_t)TIM_Flag;
  508. if ((itstatus != (uint32_t)RESET) && (itenable != (uint32_t)RESET))
  509. bitstatus = SET;
  510. else
  511. bitstatus = RESET;
  512. return bitstatus;
  513. }
  514. /***************************************************************
  515. 函数名:T32Nx_GetITStatus
  516. 描 述:读取指定中断标志位,未使能相应中断时不会返回SET
  517. 输入值:T32Nx:可以是T32N0、 TIM_Flag:中断标志位
  518. 输出值:无
  519. 返回值:RESET/SET
  520. ***************************************************************/
  521. ITStatus T32Nx_GetITStatus(T32N_TypeDef* T32Nx,TIM_TYPE_IT TIM_Flag)
  522. {
  523. ITStatus bitstatus = RESET;
  524. uint32_t itstatus = 0x0, itenable = 0x0;
  525. itstatus = T32Nx->IF.Word & (uint32_t)TIM_Flag;
  526. itenable = T32Nx->IE.Word & (uint32_t)TIM_Flag;
  527. if ((itstatus != (uint32_t)RESET) && (itenable != (uint32_t)RESET))
  528. bitstatus = SET;
  529. else
  530. bitstatus = RESET;
  531. return bitstatus;
  532. }
  533. /***************************************************************
  534. 函数名:T16Nx_ClearIFPendingBit
  535. 描 述:清除指定的中断标志位
  536. 输入值:T16Nx:可以是T16N0/1/2/3、 TIM_Flag:中断标志位
  537. 输出值:无
  538. 返回值:无
  539. ***************************************************************/
  540. void T16Nx_ClearIFPendingBit(T16N_TypeDef* T16Nx,TIM_TYPE_IF TIM_Flag)
  541. {
  542. T16Nx->IF.Word = (uint32_t)TIM_Flag;
  543. }
  544. /***************************************************************
  545. 函数名:T32Nx_ClearIFPendingBit
  546. 描 述:清除指定的中断标志位
  547. 输入值:T32Nx:可以是T32N0、 TIM_Flag:中断标志位
  548. 输出值:无
  549. 返回值:无
  550. ***************************************************************/
  551. void T32Nx_ClearIFPendingBit(T32N_TypeDef* T32Nx,TIM_TYPE_IF TIM_Flag)
  552. {
  553. T32Nx->IF.Word = (uint32_t)TIM_Flag;
  554. }
  555. /*************************END OF FILE**********************/