lib_gpio.c 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619
  1. /***************************************************************
  2. *Copyright (C), 2017, Shanghai Eastsoft Microelectronics Co., Ltd.
  3. *文件名: lib_gpio.c
  4. *作 者: Liut
  5. *版 本: V1.00
  6. *日 期: 2017/07/14
  7. *描 述: flash读写库函数头文件
  8. *备 注: 适用于 ES8P508x芯片
  9. 本软件仅供学习和演示使用,对用户直接引用代码所带来的风险或后果不承担任何法律责任。
  10. ***************************************************************/
  11. #include "lib_gpio.h"
  12. extern uint32_t SystemCoreClock;
  13. /***************************************************************
  14. 函数名:GPIO_Init
  15. 描 述:GPIO初始化
  16. 输入值:GPIOx:可以是GPIOA/GPIOB 、 PINx:根据芯片选择需要的引脚 、 GPIO_InitStruct:初始化配置结构体地址
  17. 输出值:无
  18. 返回值:无
  19. ***************************************************************/
  20. void GPIO_Init(GPIO_TYPE GPIOx,GPIO_TYPE_PIN PINx, GPIO_InitStruType* GPIO_InitStruct)
  21. {
  22. if (GPIO_InitStruct->GPIO_Signal == GPIO_Pin_Signal_Analog) {
  23. GPIO_SetSingalTypeFromPin(GPIOx, PINx, GPIO_Pin_Signal_Analog);
  24. GPIO_SetDirRegFromPin(GPIOx, PINx, GPIO_Dir_In);
  25. GPIO_SetFuncxRegFromPin(GPIOx, PINx, GPIO_Func_0);
  26. }
  27. else {
  28. GPIO_SetSingalTypeFromPin(GPIOx, PINx, GPIO_Pin_Signal_Digital);
  29. GPIO_SetDirRegFromPin(GPIOx, PINx, GPIO_InitStruct->GPIO_Direction);
  30. GPIO_SetFuncxRegFromPin(GPIOx, PINx, GPIO_InitStruct->GPIO_Func);
  31. if (GPIO_InitStruct->GPIO_Direction == GPIO_Dir_Out) {
  32. GPIO_SetODERegFromPin(GPIOx, PINx, GPIO_InitStruct->GPIO_OD);
  33. GPIO_SetDSRegFromPin(GPIOx, PINx, GPIO_InitStruct->GPIO_DS);
  34. }
  35. GPIO_SetPUERegFromPin(GPIOx, PINx, GPIO_InitStruct->GPIO_PUEN);
  36. GPIO_SetPDERegFromPin(GPIOx, PINx, GPIO_InitStruct->GPIO_PDEN);
  37. }
  38. }
  39. /***************************************************************
  40. 函数名:GPIO_SetFuncxRegFromPin
  41. 描 述:设置GPIO引脚的功能复用
  42. 输入值:Pin:目的引脚
  43. Func:功能复用编号
  44. 输出值:无
  45. 返回值:无
  46. ***************************************************************/
  47. void GPIO_SetFuncxRegFromPin(GPIO_TYPE GPIOx,GPIO_TYPE_PIN PINx, GPIO_TYPE_FUNC Func)
  48. {
  49. uint32_t value;
  50. switch (Func) {
  51. case GPIO_Func_0:
  52. value = 0;
  53. break;
  54. case GPIO_Func_1:
  55. value = 1;
  56. break;
  57. case GPIO_Func_2:
  58. value = 2;
  59. break;
  60. case GPIO_Func_3:
  61. value = 3;
  62. break;
  63. default:
  64. value = 0;
  65. break;
  66. }
  67. /* 引脚功能设置 */
  68. if(GPIOx == GPIOB){
  69. switch (PINx) {
  70. case GPIO_Pin_0:
  71. GPIO->PBFUNC0.PB0 = value;
  72. break;
  73. case GPIO_Pin_1:
  74. GPIO->PBFUNC0.PB1 = value;
  75. break;
  76. case GPIO_Pin_2:
  77. GPIO->PBFUNC0.PB2 = value;
  78. break;
  79. case GPIO_Pin_3:
  80. GPIO->PBFUNC0.PB3 = value;
  81. break;
  82. case GPIO_Pin_4:
  83. GPIO->PBFUNC0.PB4 = value;
  84. break;
  85. case GPIO_Pin_5:
  86. GPIO->PBFUNC0.PB5 = value;
  87. break;
  88. case GPIO_Pin_6:
  89. GPIO->PBFUNC0.PB6 = value;
  90. break;
  91. case GPIO_Pin_7:
  92. GPIO->PBFUNC0.PB7 = value;
  93. break;
  94. case GPIO_Pin_8:
  95. GPIO->PBFUNC1.PB8 = value;
  96. break;
  97. case GPIO_Pin_9:
  98. GPIO->PBFUNC1.PB9 = value;
  99. break;
  100. case GPIO_Pin_10:
  101. GPIO->PBFUNC1.PB10 = value;
  102. break;
  103. case GPIO_Pin_11:
  104. GPIO->PBFUNC1.PB11 = value;
  105. break;
  106. case GPIO_Pin_12:
  107. GPIO->PBFUNC1.PB12 = value;
  108. break;
  109. case GPIO_Pin_13:
  110. GPIO->PBFUNC1.PB13 = value;
  111. break;
  112. default:
  113. break;
  114. }
  115. }
  116. else{
  117. switch (PINx) {
  118. case GPIO_Pin_0:
  119. GPIO->PAFUNC0.PA0 = value;
  120. break;
  121. case GPIO_Pin_1:
  122. GPIO->PAFUNC0.PA1 = value;
  123. break;
  124. case GPIO_Pin_2:
  125. GPIO->PAFUNC0.PA2 = value;
  126. break;
  127. case GPIO_Pin_3:
  128. GPIO->PAFUNC0.PA3 = value;
  129. break;
  130. case GPIO_Pin_4:
  131. GPIO->PAFUNC0.PA4 = value;
  132. break;
  133. case GPIO_Pin_5:
  134. GPIO->PAFUNC0.PA5 = value;
  135. break;
  136. case GPIO_Pin_6:
  137. GPIO->PAFUNC0.PA6 = value;
  138. break;
  139. case GPIO_Pin_7:
  140. GPIO->PAFUNC0.PA7 = value;
  141. break;
  142. case GPIO_Pin_8:
  143. GPIO->PAFUNC1.PA8 = value;
  144. break;
  145. case GPIO_Pin_9:
  146. GPIO->PAFUNC1.PA9 = value;
  147. break;
  148. case GPIO_Pin_10:
  149. GPIO->PAFUNC1.PA10 = value;
  150. break;
  151. case GPIO_Pin_11:
  152. GPIO->PAFUNC1.PA11 = value;
  153. break;
  154. case GPIO_Pin_12:
  155. GPIO->PAFUNC1.PA12 = value;
  156. break;
  157. case GPIO_Pin_13:
  158. GPIO->PAFUNC1.PA13 = value;
  159. break;
  160. case GPIO_Pin_14:
  161. GPIO->PAFUNC1.PA14 = value;
  162. break;
  163. case GPIO_Pin_15:
  164. GPIO->PAFUNC1.PA15 = value;
  165. break;
  166. case GPIO_Pin_16:
  167. GPIO->PAFUNC2.PA16 = value;
  168. break;
  169. case GPIO_Pin_17:
  170. GPIO->PAFUNC2.PA17 = value;
  171. break;
  172. case GPIO_Pin_18:
  173. GPIO->PAFUNC2.PA18 = value;
  174. break;
  175. case GPIO_Pin_19:
  176. GPIO->PAFUNC2.PA19 = value;
  177. break;
  178. case GPIO_Pin_20:
  179. GPIO->PAFUNC2.PA20 = value;
  180. break;
  181. case GPIO_Pin_21:
  182. GPIO->PAFUNC2.PA21 = value;
  183. break;
  184. case GPIO_Pin_22:
  185. GPIO->PAFUNC2.PA22 = value;
  186. break;
  187. case GPIO_Pin_23:
  188. GPIO->PAFUNC2.PA23 = value;
  189. break;
  190. case GPIO_Pin_24:
  191. GPIO->PAFUNC3.PA24 = value;
  192. break;
  193. case GPIO_Pin_25:
  194. GPIO->PAFUNC3.PA25 = value;
  195. break;
  196. case GPIO_Pin_26:
  197. GPIO->PAFUNC3.PA26 = value;
  198. break;
  199. case GPIO_Pin_27:
  200. GPIO->PAFUNC3.PA27 = value;
  201. break;
  202. case GPIO_Pin_28:
  203. GPIO->PAFUNC3.PA28 = value;
  204. break;
  205. case GPIO_Pin_29:
  206. GPIO->PAFUNC3.PA29 = value;
  207. break;
  208. case GPIO_Pin_30:
  209. GPIO->PAFUNC3.PA30 = value;
  210. break;
  211. case GPIO_Pin_31:
  212. GPIO->PAFUNC3.PA31 = value;
  213. break;
  214. default:
  215. break;
  216. }
  217. }
  218. return;
  219. }
  220. /***************************************************************
  221. 函数名:GPIO_SetSingalTypeFromPin
  222. 描 述:设置引脚的信号类型
  223. 输入值:Pin: 目的引脚
  224. Signal: 引脚的信号类型
  225. 输出值:无
  226. 返回值:无
  227. ***************************************************************/
  228. void GPIO_SetSingalTypeFromPin(GPIO_TYPE GPIOx,GPIO_TYPE_PIN PINx, GPIO_Pin_Signal GPIO_Signal)
  229. {
  230. if(GPIOx == GPIOB) {
  231. if (GPIO_Signal == GPIO_Pin_Signal_Digital)
  232. GPIO->PBINEB.Word &= (~(1 << PINx));
  233. else
  234. GPIO->PBINEB.Word |= (1 << PINx);
  235. }
  236. else{
  237. if (GPIO_Signal == GPIO_Pin_Signal_Digital)
  238. GPIO->PAINEB.Word &= (~(1 << PINx));
  239. else
  240. GPIO->PAINEB.Word |= (1 << PINx);
  241. }
  242. return;
  243. }
  244. /***************************************************************
  245. 函数名:GPIO_SetDirRegFromPin
  246. 描 述:设置引脚的输入或输出方向
  247. 输入值:Pin: 目的引脚
  248. Dir:引脚方向
  249. 输出值:无
  250. 返回值:无
  251. ***************************************************************/
  252. void GPIO_SetDirRegFromPin(GPIO_TYPE GPIOx,GPIO_TYPE_PIN PINx, GPIO_TYPE_DIR Dir)
  253. {
  254. if (GPIOx == GPIOB) {
  255. if (Dir == GPIO_Dir_In)
  256. GPIO->PBDIRBSR.Word = (1 << PINx);
  257. else
  258. GPIO->PBDIRBCR.Word = (1 << PINx);
  259. }
  260. else {
  261. if (Dir == GPIO_Dir_In)
  262. GPIO->PADIRBSR.Word = (1 << PINx);
  263. else
  264. GPIO->PADIRBCR.Word = (1 << PINx);
  265. }
  266. return;
  267. }
  268. /***************************************************************
  269. 函数名:GPIO_SetODERegFromPin
  270. 描 述:设置引脚的输出开漏方式
  271. 输入值:Pin: 目的引脚
  272. ODE: 输出开漏方式
  273. 输出值:无
  274. 返回值:无
  275. ***************************************************************/
  276. void GPIO_SetODERegFromPin(GPIO_TYPE GPIOx,GPIO_TYPE_PIN PINx, GPIO_ODE_Output ODE)
  277. {
  278. if (GPIOx == GPIOB) {
  279. if (ODE == GPIO_ODE_Output_Disable)
  280. GPIO->PBODE.Word &= (~(1 << PINx));
  281. else
  282. GPIO->PBODE.Word |= (1 << PINx);
  283. }
  284. else {
  285. if (ODE == GPIO_ODE_Output_Disable)
  286. GPIO->PAODE.Word &= (~(1 << PINx));
  287. else
  288. GPIO->PAODE.Word |= (1 << PINx);
  289. }
  290. return;
  291. }
  292. /***************************************************************
  293. 函数名:GPIO_SetDSRegFromPin
  294. 描 述:设置引脚的输出驱动能力
  295. 输入值:Pin: 目的引脚
  296. DS: 电流驱动方式
  297. 输出值:无
  298. 返回值:无
  299. ***************************************************************/
  300. void GPIO_SetDSRegFromPin(GPIO_TYPE GPIOx,GPIO_TYPE_PIN PINx, GPIO_TYPE_DS DS)
  301. {
  302. if (GPIOx == GPIOB) {
  303. if (DS == GPIO_DS_Output_Normal)
  304. GPIO->PBDS.Word &= (~(1 << PINx));
  305. else
  306. GPIO->PBDS.Word |= (1 << PINx);
  307. }
  308. else {
  309. if (DS == GPIO_DS_Output_Normal)
  310. GPIO->PADS.Word &= (~(1 << PINx));
  311. else
  312. GPIO->PADS.Word |= (1 << PINx);
  313. }
  314. return;
  315. }
  316. /***************************************************************
  317. 函数名:GPIO_SetPUERegFromPin
  318. 描 述:设置引脚的弱上拉方式
  319. 输入值:Pin: 目的引脚
  320. PUE: 弱上拉方式
  321. 输出值:无
  322. 返回值:无
  323. ***************************************************************/
  324. void GPIO_SetPUERegFromPin(GPIO_TYPE GPIOx,GPIO_TYPE_PIN PINx, GPIO_PUE_Input PUE)
  325. {
  326. if (GPIOx == GPIOB) {
  327. if (PUE == GPIO_PUE_Input_Disable)
  328. GPIO->PBPUE.Word &= (~(1 << PINx));
  329. else
  330. GPIO->PBPUE.Word |= (1 << PINx);
  331. }
  332. else {
  333. if (PUE == GPIO_PUE_Input_Disable)
  334. GPIO->PAPUE.Word &= (~(1 << PINx));
  335. else
  336. GPIO->PAPUE.Word |= (1 << PINx);
  337. }
  338. }
  339. /***************************************************************
  340. 函数名:GPIO_SetPDERegFromPin
  341. 描 述:设置引脚的弱下拉方式
  342. 输入值:Pin: 目的引脚
  343. PDE:弱下拉方式
  344. 输出值:无
  345. 返回值:无
  346. ***************************************************************/
  347. void GPIO_SetPDERegFromPin(GPIO_TYPE GPIOx,GPIO_TYPE_PIN PINx, GPIO_PDE_Input PDE)
  348. {
  349. if (GPIOx == GPIOB) {
  350. if (PDE == GPIO_PDE_Input_Disable)
  351. GPIO->PBPDE.Word &= (~(1 << PINx));
  352. else
  353. GPIO->PBPDE.Word |= (1 << PINx);
  354. }
  355. else {
  356. if (PDE == GPIO_PDE_Input_Disable)
  357. GPIO->PAPDE.Word &= (~(1 << PINx));
  358. else
  359. GPIO->PAPDE.Word |= (1 << PINx);
  360. }
  361. return;
  362. }
  363. /***************************************************************
  364. 函数名:GPIO_Write
  365. 描 述:GPIO端口写数据
  366. 输入值:GPIOx:可以是GPIOA/GPIOB 、 Value要写的数据——注意:有些不存在的引脚,设置的值相对应的位是无作用的
  367. 输出值:无
  368. 返回值:无
  369. ***************************************************************/
  370. void GPIO_Write(GPIO_TYPE GPIOx, uint32_t Value)
  371. {
  372. if(GPIOx == GPIOA)
  373. GPIO->PADATA.Word = Value;
  374. else if(GPIOx == GPIOB)
  375. GPIO->PBDATA.Word = Value;
  376. }
  377. /***************************************************************
  378. 函数名:GPIO_Read
  379. 描 述:GPIO端口读数据
  380. 输入值:GPIOx:可以是GPIOA/GPIOB
  381. 输出值:无
  382. 返回值:读出的数据——注意:有些不存在的引脚,读出的值相对应的位是无效的
  383. ***************************************************************/
  384. uint32_t GPIO_Read(GPIO_TYPE GPIOx)
  385. {
  386. if(GPIOx == GPIOA)
  387. return GPIO->PAPORT.Word;
  388. else if(GPIOx == GPIOB)
  389. return GPIO->PBPORT.Word;
  390. return 0;
  391. }
  392. /***************************************************************
  393. 函数名:GPIO_ReadBit
  394. 描 述:GPIO端口读某位数据
  395. 输入值:GPIOx:可以是GPIOA/GPIOB 、 PINx:GPIO_Pin_0 —— GPIO_Pin_31
  396. 输出值:无
  397. 返回值:读出的数据——注意:有些不存在的引脚,读出的值是无效的
  398. ***************************************************************/
  399. PinStatus GPIO_ReadBit(GPIO_TYPE GPIOx,GPIO_TYPE_PIN PINx)
  400. {
  401. PinStatus bitstatus = RESET;
  402. if(GPIOx == GPIOA)
  403. {
  404. if((GPIO->PAPORT.Word&((uint32_t)0x1<<PINx)) != RESET)
  405. bitstatus = SET;
  406. else
  407. bitstatus = RESET;
  408. }
  409. else if(GPIOx == GPIOB)
  410. {
  411. if((GPIO->PBPORT.Word&((uint32_t)0x1<<PINx)) != RESET)
  412. bitstatus = SET;
  413. else
  414. bitstatus = RESET;
  415. }
  416. return bitstatus;
  417. }
  418. /***************************************************************
  419. 函数名:GPIOA_SetBit
  420. 描 述:GPIOA某引脚置1
  421. 输入值:PINx:可以是GPIO_Pin_0 —— GPIO_Pin_31
  422. 输出值:无
  423. 返回值:无
  424. ***************************************************************/
  425. void GPIOA_SetBit(GPIO_TYPE_PIN PINx)
  426. {
  427. GPIO->PADATABSR.Word = (uint32_t)0x1<<PINx;
  428. }
  429. /***************************************************************
  430. 函数名:GPIOA_ResetBit
  431. 描 述:GPIOA某引脚清0
  432. 输入值:PINx:可以是GPIO_Pin_0 —— GPIO_Pin_31
  433. 输出值:无
  434. 返回值:无
  435. ***************************************************************/
  436. void GPIOA_ResetBit(GPIO_TYPE_PIN PINx)
  437. {
  438. GPIO->PADATABCR.Word = (uint32_t)0x1<<PINx;
  439. }
  440. /***************************************************************
  441. 函数名:GPIOA_ToggleBit
  442. 描 述:GPIOA某引脚输出状态取反
  443. 输入值:PINx:可以是GPIO_Pin_0 —— GPIO_Pin_31
  444. 输出值:无
  445. 返回值:无
  446. ***************************************************************/
  447. void GPIOA_ToggleBit(GPIO_TYPE_PIN PINx)
  448. {
  449. GPIO->PADATABRR.Word = (uint32_t)0x1<<PINx;
  450. }
  451. /***************************************************************
  452. 函数名:GPIOB_SetBit
  453. 描 述:GPIOB某引脚置1
  454. 输入值:PINx:可以是GPIO_Pin_0 —— GPIO_Pin_13
  455. 输出值:无
  456. 返回值:无
  457. ***************************************************************/
  458. void GPIOB_SetBit(GPIO_TYPE_PIN PINx)
  459. {
  460. GPIO->PBDATABSR.Word = (uint32_t)0x1<<PINx;
  461. }
  462. /***************************************************************
  463. 函数名:GPIOB_ResetBit
  464. 描 述:GPIOB某引脚清0
  465. 输入值:PINx:可以是GPIO_Pin_0 —— GPIO_Pin_13
  466. 输出值:无
  467. 返回值:无
  468. ***************************************************************/
  469. void GPIOB_ResetBit(GPIO_TYPE_PIN PINx)
  470. {
  471. GPIO->PBDATABCR.Word = (uint32_t)0x1<<PINx;
  472. }
  473. /***************************************************************
  474. 函数名:GPIOB_ToggleBit
  475. 描 述:GPIOB某引脚输出状态取反
  476. 输入值:PINx:可以是GPIO_Pin_0 —— GPIO_Pin_13
  477. 输出值:无
  478. 返回值:无
  479. ***************************************************************/
  480. void GPIOB_ToggleBit(GPIO_TYPE_PIN PINx)
  481. {
  482. GPIO->PBDATABRR.Word = (uint32_t)0x1<<PINx;
  483. }
  484. /***************************************************************
  485. 函数名:GPIOA_SetDirection
  486. 描 述:GPIOA某引脚设置方向
  487. 输入值:PINx:可以是GPIO_Pin_0 —— GPIO_Pin_31 、 Dir_Type:GPIO_Dir_Out/GPIO_Dir_In
  488. 输出值:无
  489. 返回值:无
  490. ***************************************************************/
  491. void GPIOA_SetDirection(GPIO_TYPE_PIN PINx, GPIO_TYPE_DIR Dir_Type)
  492. {
  493. GPIO->PADIR.Word &=~((uint32_t)0x1 << PINx);
  494. GPIO->PADIR.Word |= ((uint32_t)Dir_Type <<PINx);
  495. }
  496. /***************************************************************
  497. 函数名:GPIOB_SetDirection
  498. 描 述:GPIOB某引脚设置方向
  499. 输入值:PINx:可以是GPIO_Pin_0 —— GPIO_Pin_13 、 Dir_Type:GPIO_Dir_Out/GPIO_Dir_In
  500. 输出值:无
  501. 返回值:无
  502. ***************************************************************/
  503. void GPIOB_SetDirection(GPIO_TYPE_PIN PINx, GPIO_TYPE_DIR Dir_Type)
  504. {
  505. GPIO->PBDIR.Word &=~((uint32_t)0x1 << PINx);
  506. GPIO->PBDIR.Word |= ((uint32_t)Dir_Type <<PINx);
  507. }
  508. /***************************************************************
  509. 函数名:Buzz_Config
  510. 描 述:Buzz配置
  511. 输入值:Buzz_en:Buzz是否使能;freq:频率
  512. 输出值:无
  513. 返回值:无
  514. ***************************************************************/
  515. void Buzz_Config(TYPE_BUZZEN buzz_en, uint32_t freq)
  516. {
  517. GPIO->BUZC.BUZ_LOAD = (SystemCoreClock/(freq*2)) - 1;
  518. GPIO->BUZC.BUZEN = buzz_en;
  519. }
  520. /***************************************************************
  521. 函数名:PINT_Config
  522. 描 述:PINT配置
  523. 输入值:PINTx:可选PINT0 —— PINT7 、 SELx:输入选择 、 TRIGx:触发选择
  524. 输出值:无
  525. 返回值:无
  526. ***************************************************************/
  527. void PINT_Config(PINT_TYPE PINTx, PINT_TYPE_SEL SELx, PINT_TYPE_TRIG TRIGx)
  528. {
  529. GPIO->PINTSEL.Word &= ~((uint32_t)0x07<<(PINTx*4));
  530. GPIO->PINTSEL.Word |=((uint32_t)SELx << (PINTx*4)); //sel选择
  531. GPIO->PINTCFG.Word &= ~((uint32_t)0x07<<(PINTx*4));
  532. GPIO->PINTCFG.Word |=((uint32_t)TRIGx << (PINTx*4)); //触发方式选择
  533. }
  534. /***************************************************************
  535. 函数名:PINT_GetIFStatus
  536. 描 述:PINT读取中断标志
  537. 输入值:PINTx:PINT0-PINT7
  538. 输出值:无
  539. 返回值:SET/RESET
  540. ***************************************************************/
  541. FlagStatus PINT_GetIFStatus(PINT_TYPE_IT PINT_Flag)
  542. {
  543. FlagStatus bitstatus = RESET;
  544. if((GPIO->PINTIF.Word & (uint32_t)PINT_Flag) != (uint32_t)RESET)
  545. bitstatus = SET;
  546. else
  547. bitstatus = RESET;
  548. return bitstatus;
  549. }
  550. /***************************************************************
  551. 函数名:PINT_GetITStatus
  552. 描 述:PINT读取中断标志
  553. 输入值:PINTx:PINT0-PINT7
  554. 输出值:无
  555. 返回值:SET/RESET
  556. ***************************************************************/
  557. FlagStatus PINT_GetITStatus(PINT_TYPE_IT PINT_Flag)
  558. {
  559. FlagStatus bitstatus = RESET;
  560. if((GPIO->PINTIF.Word & (uint32_t)PINT_Flag) != (uint32_t)RESET)
  561. bitstatus = SET;
  562. else
  563. bitstatus = RESET;
  564. return bitstatus;
  565. }
  566. /***************************************************************
  567. 函数名:PINT_ClearITPendingBit
  568. 描 述:PINT清除中断标志
  569. 输入值:PINT中断类型
  570. 输出值:无
  571. 返回值:无
  572. ***************************************************************/
  573. void PINT_ClearITPendingBit(PINT_TYPE_IT PINT_Flag)
  574. {
  575. GPIO->PINTIF.Word = (uint32_t)PINT_Flag;
  576. }
  577. /*************************END OF FILE**********************/