如何测试gpio口的默认状态_单片机IO口不够用了,怎么办?

本文介绍了如何利用STM32F103C8T6扩展IO口,使用138/164锁存器实现数码管驱动,并探讨了单片机间串行连接处理传感器同步问题。此外,还讲解了端口复用、重映射在资源有限的单片机中的应用策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这几天公子比较闲,像看看手上有没有好玩的模块,于是,公子找到了一款OV系列的摄像头,于是翻了一下自己的2年都没有打开的盒子(公子专门来放开发板的)。可是找了半天,都没有找到开发板,费了九牛二虎之力,才找到一块STM32F103C8T6的,长这个样子,可是引脚不够呀!没关系,现在公子告诉大家该怎么解决。

f76370a1ac7aefcac449b9442a0279da.png

1 IO口扩展:

扩展的方法很多,锁存器;输出串并转换/输入并串转换;I²C总线等等……

不过公子一般都是喜欢采用138或者164来扩展的,以138为例,电路图如下:

fafeac73e9fcdc58dd926839b4c01dfb.png

这款芯片的作用是把串行输入的数据并行输出。注意,它没有锁存功能,在允许输出的情况下,每一个时钟的上升沿,数据依次从最低位移向最高位。因此,在做数码管的输出显示的时候会出现拖影的想象,下面我们再看看它的真值表,有了真值表我们才知道如何正确的去编写程序去驱动它(其它复杂的器件还需要对照时序图编写相应的驱动程序)。

a9621919720889e44d93b6d14a02e07f.png

怎么样,这个表很简单吧,相信大家都能够看的懂。当Reset为低电平时不管时钟为高电平还是低电平也不管输入引脚A1,A2为何值,输出的并行数据均为低电平。当Reset为高电平时,只有在时钟的上升沿,A1A2上的值才被移位输出。看懂了这张表那么剩下的事情就好办多了。

2 再接一个单片机:

当一个单片机的引脚不够的时候,需要在外接一个单片机就可以了,怎么操作呢?让两个单片机的TXD与RXD相连就可以了,不过,如果是两块单片机同时处理一个传感器(比如说:摄像头,TFT LCD),那么你需要考虑时序的问题,特别是当两块单片机的处理速度不一样的时候,这个需要特别注意。

3 端口复用与重映射:

大家听说这几个术语可能是在学习STM32的时候,那么我们以STM32为例。

端口复用

STM32用很多内置外设而且都是和GPIO复用的,也就是GPIO可以设置成一些常用的外设如串口的外设等等,数据手册有详细说明,需要时就查表。

52492ed4b28dc83905228759d267220b.png

GPIO作为内置外设使用时就叫复用,也就是图中的默认复用功能,不把GPIO口当作单纯的I/O口而是赋予它一个外设的含义。

端口重映射

3a10594c60030d12e4df80c2f11118d4.png

端口重映射通过设置重映射寄存器的方式,把这个外设的接口映射到其它的端口,方便PCB布线,虚拟增加外设。

复用功能串口1是PA9 PA10,但是如果我们觉得PB6 PB7更方便是就可以重映射使用这两个I/O口,重映射还分完全重映射和部分重映射,完全重映射就是功能外设的所有引脚都全部映射,如果映射串口,那么串口所有相关外设都映射到,这就是完全重映射,否则只映射部分需要的就是部分重映射。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值