1 /******************************************************************************************************************************************
2 * 文件名称: SWM341_port.c
3 * 功能说明: SWM341单片机的端口引脚功能选择库函数
4 * 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
5 * 注意事项:
6 * 版本日期: V1.0.0      2016年1月30日
7 * 升级记录:
8 *
9 *
10 *******************************************************************************************************************************************
11 * @attention
12 *
13 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
14 * REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
15 * FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
16 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
17 * -ECTION WITH THEIR PRODUCTS.
18 *
19 * COPYRIGHT 2012 Synwit Technology
20 *******************************************************************************************************************************************/
21 #include "SWM341.h"
22 #include "SWM341_port.h"
23 
24 
25 /******************************************************************************************************************************************
26 * 函数名称: PORT_Init()
27 * 功能说明: 端口引脚功能选择
28 * 输    入: PORT_TypeDef * PORTx  指定PORT端口,有效值包括PORTA、PORTB、PORTC、PORTD、PORTE、PORTM、PORTN
29 *           uint32_t n              指定PORT引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
30 *           uint32_t func           指定端口引脚要设定的功能,其可取值见"SWM201_port.h"文件
31 *           uint32_t digit_in_en    数字输入使能
32 * 输    出: 无
33 * 注意事项: 无
34 ******************************************************************************************************************************************/
PORT_Init(PORT_TypeDef * PORTx,uint32_t n,uint32_t func,uint32_t digit_in_en)35 void PORT_Init(PORT_TypeDef * PORTx, uint32_t n, uint32_t func, uint32_t digit_in_en)
36 {
37     if(n < PIN8)
38     {
39         PORTx->FUNC0 &= ~(0x0F << (n*4));
40         PORTx->FUNC0 |=  (func << (n*4));
41     }
42     else
43     {
44         PORTx->FUNC1 &= ~(0x0F << ((n-8)*4));
45         PORTx->FUNC1 |=  (func << ((n-8)*4));
46     }
47 
48     if(digit_in_en)  PORTx->INEN |=  (1 << n);
49     else             PORTx->INEN &= ~(1 << n);
50 }
51