单片机引脚一个引脚可以同时设置成GPIO和中断引脚吗

在PLC的编程调试中首先是要对系統的输入/输出(IO)进行配置,也就是通常说的硬件组态有了正确的IO分配,才能在编程的时候正确的读取信号的输入及控制信号的输出洇此,IO配置是PLC调试最基础也是最重要的工作从这个方面来说,单片机引脚的调试与PLC的调试有着异曲同工之妙

对于单片机引脚而言,GPIO引腳的配置是很基础也是很重要的错误的引脚配置非但不能实现想要的功能,而且出错时往往不容易查找耽误调试的时间。这就需要编程调试人员对GPIO引脚的配置有很好的理解今天这篇文章,我们就来谈谈STM32Fxx系列单片机引脚引脚的复用功能(Alternate Function)

先来介绍下开漏输出和推挽输絀的区别:

在开漏输出模式下,P-MOS管不工作只有N-MOS管起作用。若输出数据寄存器的值为0则N-MOS导通,IO口输出低电平;若输出数据寄存器的值为1则N-MOS截止;由于P-MOS不工作,此时IO口既不是高电平也不是低电平,这种状态被称为高阻态

在推挽输出模式下,若输出数据寄存器的值为0則N-MOS导通,P-MOS截止IO口输出低电平;若输出数据寄存器的值为1,则N-MOS截止P-MOS导通,IO口输出高电平;

我们知道STM32Fxx单片机引脚还有复用开漏输出和复用嶊挽输出它们和上面讲到的(普通)开漏输出和(普通)推挽输出有什么区别呢?

这就涉及到针脚的复用功能

我们知道,STM32Fxx内部集成了佷多的外设控制器比如USART、SPI、bxCAN等等,这些外设控制器也需要通过引脚与外设连接。复用功能是相对于单片机引脚的引脚而言的所谓“複用功能”,是指单片机引脚的引脚既可以做普通GPIO使用也可以作为内部外设控制器的引脚来使用。

比如我们来看看STM32F103xx单片机引脚的PA5引脚洳下图:

首先,PA5可以做为普通GPIO来使用;其次如果作为外设的引脚,它可以作为SPI1的时钟(SPI1_SCK)、DAC的输出通道1(DAC_OUT1)或者ADC的输入通道5(ADC12_IN5)

PA5支持嘚三种外设(SPI1、DAC、ADC)在同一时刻只能选择一种,选择的方法是开启相应外设的时钟并使其它外设的时钟保持关闭状态。如果PA5被配置为复鼡功能但是没有开启它支持的任何外设的时钟,它的输出是不确定的

复用推挽输出和(普通)推挽输出在输出的时候均使用两个MOS管(P-MOS囷-MOS),其输出电路是相同的区别在于控制输出的信号来源:(普通)推挽输出控制MOS管的信号来自输出数据寄存器,而复用推挽输出的控淛信号来自单片机引脚的内置外设控制器(比如SPI1)

复用开漏输出和(普通)开漏输出的道理是一样的。

下面这张图是普通GPIO输出的引脚配置图,可以看到其输出信号来自输出数据寄存器(Output data register):

下面这张图是选择复用功能后的引脚配置图,可以看到其输出信号来自芯片内置的外设控制器:

注:虽然复用模式的控制信号来自内置外设控制器但是单片机引脚(CPU)依然可以读取相应的数据。在复用推挽输出模式下单片机引脚可以通过读取输出数据寄存器(Output Data Register)的数据来获取上次输出的值;在复用开漏输出的模式下,单片机引脚可以通过读取输叺数据寄存器(Input Data Register)的值来获取引脚的状态

好了,关于STM32Fxx系列单片机引脚引脚的复用功能就先聊到这里关于引脚的配置还有一个重定位(Remap)的功能,我们以后再聊

欢迎扫描下面的二维码关注我们的微信公众号。

单片机引脚同一个管脚的第一第②功能能否同时调用 [问题点数:30分结帖人Nal_ra_007]

单片机引脚P3口管脚都有第二功能,怎么判断它调用的是第二功能

我看了几个例子中,好像都呮取决于它后面所引出的电路本身并没有什么特殊的标志,

比如RXD后面接一个MAX232芯片才看出它是用作串口接收,若接一个其他的就是普通I/O管脚了并没有特别声明的地方,是不是单片机引脚管脚根本就不需要特殊的标志位指出

如果我想在外部中断_INT0上同时用它的两个功能,

僦是说既作输出一条控制信息又想它引出外部中断源,可行吗

如果可行,那程序具体该怎么写呢

还有就是,_INT0作普通I/O口时当管脚变囮我又怎么认定它不产生一个外部中断?

这个问题已困惑我好久了敬请赐教!

我也想过这个问题,还没实践过,不过书上说使用第一功能和苐二功能的汇编指令不同,所以不会混

的确不需要特殊的命令控制寄存器来控制,但是应该不能同时用两个功能!当你的中断系统外部中断咑开时你使用的就是_INT0功能,而不能用来作普通I/O管脚变化肯定会引起中断!反之,就是普通I/O二者不能同时

两者肯定是不能同时使用的,引脚的第二功能一般是跟中断有关的,而中断的优先级是比普通程序高的,在设置了中断后,只要有引发中断的条件产生,中断服务程序就会调用.51系列的单片机引脚P3口好像还有外部数据的读写线,那个第二功能和第一功能没有明显的界限.

哦,各位的意思就是说两个功能只能取其一

用哪个并不需要特殊的命令寄存器控制,你搭配什么样的电路就用哪个功能不需特殊声明。

明白了多谢大家咯^_^

顺便问问大家,keil51里面这个錯误是什么意思该如何改啊?

这种情况往往会浪费内存

楼上说得没错,就是你定义了一个函数但是没有调用过

你只要接上电气时序鈈干扰的两个器件,并保证,在用第一功能与第二功能时不用发生干扰就可以

    我以前做过一个串口通讯程序..因为其起始位是三个低电平.与一般8051嘚起始位不一样.所以,必须通过读P3.1来启动串口程序.


有第一功能,第二功能,是指一个端口两种用法

匿名用户不能发表回复!

我要回帖

更多关于 单片机引脚 的文章

 

随机推荐