前言:STM32的PA,PB各有16脚,用不上那么多,该怎样处理呢?
注:unchar 是 unsigned char
关于输出同时操作8位
1 //***************************************************************/ 2 #define part_a_o PBout(0)// */ 3 #define part_b_o PBout(1)// */ 4 #define part_c_o PBout(2)// */ 5 #define part_d_o PBout(3)// Data Out */ 6 #define part_e_o PBout(4)// */ 7 #define part_f_o PBout(5)// */ 8 #define part_g_o PBout(6)// */ 9 #define part_h_o PBout(7)// */ 10 //***************************************************************/ 11 12 void GPIO_WriteData(unchar data) 13 { 14 part_h_o=((data&0x80)>>7); 15 part_g_o=((data&0x40)>>6); 16 part_f_o=((data&0x20)>>5); 17 part_e_o=((data&0x10)>>4); 18 part_d_o=((data&0x08)>>3); 19 part_c_o=((data&0x04)>>2); 20 part_b_o=((data&0x02)>>1); 21 part_a_o=((data&0x01)); 22 }
关于输入同时操作8位
1 //***************************************************************/ 2 #define part_a_i PBin(0)// */ 3 #define part_b_i PBin(1)// */ 4 #define part_c_i PBin(2)// */ 5 #define part_d_i PBin(3)// Data In */ 6 #define part_e_i PBin(4)// */ 7 #define part_f_i PBin(5)// */ 8 #define part_g_i PBin(6)// */ 9 #define part_h_i PBin(7)// */ 10 //***************************************************************/ 11 12 unchar GPIO_RedData(void) 13 { 14 unchar data=0x00; 15 data=0x80&(data+0x7f+part_a_i); 16 data=0xc0&(data+0x3f+part_b_i); 17 data=0xe0&(data+0x1f+part_c_i); 18 data=0xf0&(data+0x0f+part_d_i); 19 data=0xf8&(data+0x07+part_e_i); 20 data=0xfc&(data+0x03+part_f_i); 21 data=0xfe&(data+0x01+part_g_i); 22 data=0xff&(data+0x00+part_h_i); 23 return data; 24 }