看到GPIOA,GPIOB,GPIOC。。。。。一开始不懂,上网查了后看到说这是GPIO的分组,那GPIO口分组的意义是什么,还有每一组中的内容是什么?我原先理解从字面意思理解的是里面有很多GPIO口,但是看到GPIO_TypeDef* GPIOx这个定义,而GPIO_TypeDef的定义是
typedef struct
{
__IO uint32_t CRL;
__IO uint32_t CRH;
__IO uint32_t IDR;
__IO uint32_t ODR;
__IO uint32_t BSRR;
__IO uint32_t BRR;
__IO uint32_t LCKR;
} GPIO_TypeDef;
这是一组关于寄存器的定义,那GPIO组里面的到底是寄存器还是不同的GPIO口?
刚开始自学,拜托各位了!!!!!
------解决思路----------------------
先从最基本的理解起, 以51为例, IO口的状态只需要一位就够了, 如果这位置1,那就是输出高,反之则输出1.
那么问题就来了,
如果有8个IO口,那么其控制位就是8位了, 正好可以凑一个字节.
你问为什么非要凑一个字节? 不是每一位占用一个字节,其余7位闲置?
一是片内reg区域是有限的,能挤在一起就挤在一起, 多出来的空间可以当RAM用
另外很重要的一点是,放在一个字节的话,要对IO进行批量操作的时候会简单很多,比如你要这8个IO同时拉低, 直接向该字节写0就行了,不用一个一个的挨着来.
于是这8个IO口就可以称为一组了,可以记PA,或者PB,PC什么的
你这个问题问的是有问题的,不知道怎么回答
------解决思路----------------------
GPIO脚实际是和一个寄存器相连(口寄存器)LZ想向外部输出,都是写这个寄存器,因此,LZ可以认为两者是等效的
但读一般是读脚,不是读该口寄存器
------解决思路----------------------
GPIO_TypeDef 定义的是一组I/O的控制寄存器。I/O的配置要通过这些寄存器来进行,比如输入/输出,上拉/下拉,推挽/开漏输出等等。
I/O没有FIFO缓冲的,是通讯模块才有,比如UART,I2C
------解决思路----------------------
GPIO_TypeDef 定义的是一组I/O的控制寄存器。I/O的配置要通过这些寄存器来进行,比如输入/输出,上拉/下拉,推挽/开漏输出等等。
I/O没有FIFO缓冲的,是通讯模块才有,比如UART,I2C
那UART,I2C这些也都是属于外设是吧,那肯定也需要和GPIO口连接吧?是不是说通过GPIO数据指向的寄存器实现了FIFO缓冲功能的?
应该说是UART,I2C 这些外设的寄存器实现FIFO,只是输入/输出信号连到了GPIO上