一、对IO的单个引脚操作,选用宏界说较为便利
(1)对单个IO的单个引脚根本操作,下面选用宏界说的比如
#define
#define
#define
#define DIR_1WIRE_IN() {DS18B20_PORT->CRL
#define DIR_1WIRE_OUT() {DS18B20_PORT->CRL
#define
#define
(2)设置端口IO方向
1)
a)
DIR_1WIRE_IN()
b)
GPIO_InitTypeDef
2)
a)
DIR_1WIRE_OUT()
b)
GPIO_InitTypeDef
3)运用DIR_1WIRE_IN()和DIR_1WIRE_OUT() 时这两个函数在设置对应端口时,应根据DS18B20_BIT的对应位设置与或的参数。上面比如由于是对DS18B20_PORT的DS18B20_BIT位操作,DS18B20_BIT实践对应Pin_2即第2个引脚,所以修正方位为倒数第3个f处(倒数第3个f为Pin_2对应方位,倒数第1个f为Pin_0对应方位)
3)假如读取IO,先设置为输入方式,再读取
DIR_1WIRE_IN()
READ_DS18B20()
即完成了读取DS18B20_PORT端口的DS18B20_BIT的数据
(4)假如设置为输出状况,在先设置输出方式,在向外输出
DIR_1WIRE_OUT()
输出1则为SET_OP_1WIRE()
输出0则为CLR_OP_1WIRE()
(5)假如先设置为输出,输出1,再设置为输入,读取输入,则为
DIR_1WIRE_OUT()
输出1则为SET_OP_1WIRE()
DIR_1WIRE_IN()
READ_DS18B20()
(6)假如先设置为输出,输出1,再设置为输入,读取输入,则为
DIR_1WIRE_IN()
READ_DS18B20()
DIR_1WIRE_OUT()
输出1则为SET_OP_1WIRE()
二、对同一端口的多个IO一块操作
(1)设置同一端口的多个IO设置输入方向和方式
设置端口IO的多个引脚为输入,假如程序中一向为输入,则在程序初始化时设置一次即可
例如设置DS18B20_PORT端口的引脚5,3为输入
(2)对某个IO端口的多位读取
则选用GPIO_ReadInputData(DS18B20_PORT);//读取端口DS18B20_PORT
然后选用与或方式得到对应的若干位
例如想取得PIN_2的数据,能够选用
result1=GPIO_ReadInputData(DS18B20_PORT);
result2=result1&DS18B20_BIT;
其他顺次类推,或许简略的,读取最低的两位1,0端口数据
result2=result1&0x3;//
(3)设置同一端口的多个IO设置输出方向和方式
设置端口IO的多个引脚为输入,假如程序中一向为输出,则在程序初始化时设置一次即可
(4)向某个端口的若干个引脚写数据
假如向某个端口的若干个引脚写数据,这几个IO现已设置成输出,
则先选用与或的方式把需求操作的若干方位成对应方式,不需操作的位坚持本来不变
则为
result1=GPIO_ReadOutputData(DS18B20_PORT);//读取DS18B20_PORT的输出数据,拜见库函数stm32f10x_gpio.c,手册拜见115页
result2=0x0028;//设置引脚5,3为1,1
result1&=0xffd7;//引脚5,3先清零,一起获取其他引脚的原始状况
result1=result1|result2;//设置引脚5,3为1,1
result1=GPIO_ReadOutputData(DS18B20_PORT);//读取DS18B20_PORT的输出数据,拜见库函数stm32f10x_gpio.c,手册拜见115页
result2=0x0020;//设置引脚5,3为1,0,此处留意与上面的差异
result1&=0xffd7;//引脚5,3先清零,一起获取其他引脚的原始状况
result1=result1|result2;//设置引脚5,3为1,0
(5)假如程序中某端口的若干引脚即作为输入有又作为输出
假如先输入再输出,则是
假如先输出再输入,则是