嵌入式第四天(GPIO口输入总结)

GPIO口输入总结

看了几个星期才看完3讲跑马灯的视频。

总结一下:

对于GPIO口的输出操作总共有三种方式。

 

一 库函数

库函数就跟工作中调用到的初始化函数一样。

不过知道了对于结构体的成员具体是怎么初始化的。

    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //选择输出模式  输出输出 复用 模拟  最后两个不知道是什么模式
    GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;//推挽输出  开路输出
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10;//对pin脚的选择  当两个pin脚设置为一样的时候 可以这样写
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;//上拉下拉  不拉  上拉输入 下拉输出?
    GPIO_InitStruct.GPIO_Speed =GPIO_Speed_50MHz;//设置频率
    GPIO_Init(GPIOF,&GPIO_InitStruct);//设置完毕 把结构体值设置进去

然后到主函数调用函数 然后延时  正常流程  

二 寄存器

寄存器是一位一位对GPIO口的设置

F9的寄存器设置:

    GPIOF->MODER &= ~(3<<18);
    GPIOF->MODER |= 1<<18;
    
    GPIOF->OSPEEDR &= ~(3<<18);
    GPIOF->OSPEEDR |= 2<<18;
    
    GPIOF->PUPDR &= ~(3<<18);
    GPIOF->PUPDR |= 1<<18;    
    
    GPIOF->OTYPER &= ~(1<<9);
    GPIOF->OSPEEDR |= 0<<9;
    
    GPIOF->ODR |= 1<<9;//1

正常流程应该是先读  然后再改 然后再写入   (不知道为毛直接改不行)

~(3<<18)  高端操作  3 =11(2进制) 右移18位 然后再取反

相当于一个32位的寄存器 第18 19位设置为0.  (这个好像是先置0 然后再写入正常的寄存器)

一般一种32位的寄存器存着16个pin脚的不同设置模式

比如在一种寄存器中18 19 位是pin9   20 21 位就是pin10

三 位操作

位操作的gpio初始化跟一种的库函数一样

不同的只是在主函数的调用上。

输入是PXin(管脚号)   x是哪组pin脚    

输出是PXout(管脚号)

主要说明的是地址上的映射。

把寄存器拿出来设置映射到地址上 ,然后每个寄存器的值都对应上一个地址。

然后给地址赋值就行了。

 

 

最近还是懒了一点。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值