gpio笔记

笔记

tip

#define GPIOD               ((GPIO_TypeDef *) GPIOD_BASE)

宏定义指针,GPIOD是指向结构体变量GPIO_Typedef中的GPIOD_BASE成员。

  • .h文件是头文件,内含函数声明、宏定义、结构体定义等内容
  • .c文件是程序文件,内含函数实现,变量定义等内容。
  • 这样分开写成两个文件是一个良好的编程风格。
      而且,比方说 我在aaa.h里定义了一个函数的声明,然后我在aaa.h的同一个目录下建立aaa.c,aaa.c里定义了这个函数的实现,然后是在main函数所在.c文件里#include这个aaa.h 然后我就可以使用这个函数了。main在运行时就会找到这个定义了这个函数的aaa.c文件。
  • __IO的意思:是volatile易变的意思,告诉cpu这个数值会变,不要读缓存里的。
    在构建寄存器组的结构体时,会在每个代表寄存器的成员前面加个“__IO”前缀。这个符号我暂且认定为行业内用的,语法上不一定要用这个名字,它的原型是是C语言中的关键字“volatile”,表示变量是易变的,要求编译器不要优化。

这些结构体内的成员,都代表着寄存器,而寄存器很多时候是由外设或STM32 芯片状态修改的,也就是说即使CPU不执行代码修改这些变量,变量的值也有可能被外设修改、更新,所以每次使用这些变量的时候,我们都要求CPU去该变量的地址重新访问。若没有这个关键字修饰,在某些情况下,编译器认为没有代码修改该变量,就直接从CPU 的某个缓存获取该变量值,这时可以加快执行速度,但该缓存中的是陈旧数据,与我们要求的寄存器最新状态可能会有出入。

  • 外设基地址和总线基地址
  • 单片机引脚与端口,引脚和GPIO的区别
    in a word ,端口包含多个引脚,如PA端口包含PA0–PA7引脚。
  • GPIOB与PB0与GPIO中的七个寄存器的关系
    GPIOB_CRL包含8个引脚,每个引脚占据4个寄存器位,MODE位即3-2位,CNF位即1-0位。MODE用来配置输出的速度,CNF用来配置输入输出的模式。
    eg.端口配置低寄存器GPIOx_CRL,总共32位,一共有8个引脚(PB0-PB7),PB0含四位,mode位与cnf位。

stm32是32位的,其中的所有寄存器都是32位的,但是不同寄存器中,有效的位数相应改变。

GPIO有:

端口配置低寄存器GPIOx_CRL:配置0-7引脚的模式,每个引脚配4bit,两位用于配置输入模式,两位用于配置输出模式。

端口配置高寄存器GPIOx_CRH:配置8-15引脚的模式(同上)。

端口输入数据寄存器GPIOx_IDR(低16位有效)并行读入16位数据。

端口输出数据寄存器GPIOx_ODR(低16位有效)并行输出16位数据。

端口位设置/清除寄存器GPIOx_BSRR:拉高拉低相应引脚,1bit对应1引脚。

端口位清除寄存器GPIOx_BRR(低16位有效):拉低相应引脚,同上端口配置锁存寄存器GPIOx_LCKR(17位有效)
![![看懂了](https://img-blog.csdnimg.cn/e0b3ca26c4fc4a7785264842d5455a1b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHl4c2FsdHdhdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
GPIO有32个位,但是这里只有16位,ox0001 即 0000 0000 0000 0001,0x0004即0000 0000 0000 0100.

比如1个班级的第二小组(B小组就是GPIOB)有16个人,1号同学就是PB0.GPIO0和PB0不是同一个东西。GPIO0和PB0不是同一个东西。GPIOB包含PB0。

未完待续…
究极小white

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值