关于stm32的IO口的封装

前言: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 }

 

转载于:https://www.cnblogs.com/wangyishan/p/8764026.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值