在线时间96 小时
UID3167208
注册时间2015-10-21
NXP金币0
TA的每日心情 | 开心 2019-3-22 20:15 |
---|
签到天数: 21 天 连续签到: 1 天 [LV.4]偶尔看看III
高级会员

- 积分
- 909
- 最后登录
- 2019-4-7
|

楼主 |
发表于 2015-11-8 18:13:35
|
显示全部楼层
1.GPIO模块- /****************************GPIO学习指南************************************/
- /***************************** 编写:噬猎者 **********************************
- 我的喜好,一般不采用函数形式,采用宏定义形式更加迅速,不过这里也指出来很多不得已用函数的。
- 【1.gpio_init(PTxn ptxn, uint8_t dir, uint8_t state)//GPIO初始化
- PTx = PTA,PTB,PTC,PTD,PTE//端口名
- n = 0-31 //管脚号
- dir = //输入输出配置
- GPI = 0, //定义管脚输入方向 GPIOx_PDDRn里,0表示输入,1表示输出
- GPO = 1, //定义管脚输出方向
- GPI_DOWN = 0x02, //输入下拉 PORTx_PCRn需要PE=1,PS=0
- GPI_UP = 0x03, //输入上拉 PORTx_PCRn需要PE=1,PS=1
- GPI_PF = 0x10, //输入,带无源滤波器,滤波范围:10 MHz ~ 30 MHz 。不支持高速接口(>=2MHz) 0b10000 Passive Filter Enable
- GPI_DOWN_PF = GPI_DOWN | GPI_PF , //输入下拉,带无源滤波器
- GPI_UP_PF = GPI_UP | GPI_PF , //输入上拉,带无源滤波器
- GPO_HDS = 0x41, //输出高驱动能力 0b100 0001 High drive strength
- GPO_SSR = 0x05, //输出慢变化率 0b101 Slow slew rate
- GPO_HDS_SSR = GPO_HDS | GPO_SSR, //输出高驱动能力、慢变化率
- //带滤波器的可用于按键,不过也得消抖
- state = 0,1 //引脚状态(输入的模式填0就可以了)
- 例子:gpio_init(PTB19,GPO,1);//PTB19初始化为输出模式,输出高电平。
-
- 【2.GPIO_SET(PORTx,n,x) //设置引脚状态
- PORTx = PORTA,PORTB,PORTC...//端口名
- n = 0-31 //管脚号
- x = 0,1 //引脚电平
- 例子:GPIO_SET(PORTA,18,0);//PTA18输出高电平
- 【3.GPIO_TURN(PORTx,n) //翻转引脚电平
- PORTx = PORTA,PORTB,PORTC...//端口名
- n = 0-31 //管脚号
- 例子:GPIO_TURN(PORTA,18);//翻转PTA18引脚电平
- 【4.data = GPIO_Get(PORTx,n); //获取引脚电平
- PORTx = PORTA,PORTB,PORTC...//端口名
- n = 0-31 //管脚号
- 例子:data = GPIO_Get(PORTA,18);//读取PTA18的引脚电平
- 【5.对GPIO进行位操作:
- 一位:
- GPIO_SET_1bit(PORTx,n,data) //写1位数据(n为最低位引脚号)
- GPIO_DDR_1bit(PORTx,n,ddr) //设置1位输入输出方向(n为最低位引脚号)
- GPIO_GET_1bit(PORTx,n) //读1位数据(n为最低位引脚号)
- 两位:
- GPIO_SET_2bit(PORTx,n,data) //写2位数据(n为最低位引脚号)
- GPIO_DDR_2bit(PORTx,n,ddr) //设置2位输入输出方向(n为最低位引脚号)
- GPIO_GET_2bit(PORTx,n) //读2位数据(n为最低位引脚号)
- 四位:
- GPIO_SET_4bit(PORTx,n,data) //写4位数据(n为最低位引脚号)
- GPIO_DDR_4bit(PORTx,n,ddr) //设置4位输入输出方向(n为最低位引脚号)
- GPIO_GET_4bit(PORTx,n) //读4位数据(n为最低位引脚号)
- 同样8、16、32都是类似写法
- 【6.gpio_Interrupt_init(PTxn ptxn, GPIO_CFG cfg, GPIO_INP mode);//GPIO中断初始化
- PORTx = PORTA,PORTB,PORTC...//端口名
- n = 0-31 //管脚号
- GPIO_CFG //输入输出配置,同上
- GPIO_INP //中断模式
- GPI_DISAB = 0X0 , //不允许中断
- GPI_EMA_RING = 0X01 , //DMA上升沿中断
- GPI_EMA_FALL = 0X02 , //DMA下降沿中断
- GPI_EMA_EITH = 0X03 , //DMA跳变沿中断
- GPI_INP_ZERO = 0X08 , //逻辑零中断
- GPI_INP_RING = 0X09 , //上升沿中断
- GPI_INP_FALL = 0X0A , //下降沿中断
- GPI_INP_EITH = 0X0B , //跳变沿中断
- GPI_INP_ONE = 0X0C , //逻辑一中断
- 【7.最常用的IO电平
- PTxn_OUT = 1 PTxn输出高电平
- data = PTxn_IN 读取PTxn输入的电平
- ****************************************************************************/
复制代码
|
|