1. STM32有些引脚上电后一直是高电平不能改变,这是什么原因
对于初学习者来说为什么用到PB3和PB4时无法控制输出呢?
下面就这一问题进行分析讲解。
首先,STM32F10x系列的MCU复位后,PA13/14/15 & PB3/4默认配置为JTAG功能。有时我们为了充分利用MCU I/O口的资源,会把这些
端口设置为普通I/O口。具体方法如下:
在GPIO_Configuration(); // 配置使用的 GPIO 口:
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);
// 改变指定管脚的映射 GPIO_Remap_SWJ_Disable SWJ 完全禁用(JTAG+SW-DP)
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
// 改变指定管脚的映射 GPIO_Remap_SWJ_JTAGDisable ,JTAG-DP 禁用 + SW-DP 使能
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
注意:不要忘记在RCC_Configuration()中开启AFIO时钟,
//AFIO时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
函数GPIO_PinRemapConfig(u32GPIO_Remap, FunctionalState NewState);改变指定管脚的映射,很多复用功能的引出脚可以通过重映射,从不同的I/O管脚引出,即复用功能的引出脚位是可通过程序改变的。就是上面库函数。
2. 上拉和下拉是指gpio输出高电位还是低电位
上拉和下拉是指GPIO输出高电位(上拉)还是低电位(下拉)有些GPIO脚位原始是高电位输出而有些是低电位输出初始化时看自己需求设定
3. 若GPIO配置为上拉输入模式,在默认状态下(GPIO引脚无输入),读取得的GPIO引脚数据为1高电平。何解
内部配置为上拉,在与外部无连接的情况下,处于高电平(即逻辑 1)。那么对于输入模式而言,这种情况下,从引脚读入的数据自然是高电平(逻辑 1)。
4. 大神们GPIO的输出,高电平是多少伏
GPIO_Pin_TypeDef PortPins), GPIO_Pin_5);
如GPIO_WriteLow(GPIODGPIO_WriteLow(GPIO_TypeDef* GPIOx
5. 为啥初始化RESET管脚GPIO输出高电平就能解决静电问题了
检查了一下静电复位的原因。发现是External Pin Reset外部引进复位,山外哥说是RESET .为啥初始化RESET管脚GPIO输出高电平就能解决静电问题了,后,主机只需发送一个命令到BLIK RATE1或BLIN... 硬件复位硬件RESET为低电平有效,复位后,器件内部上电复位POR控制模块
6. GPIO口为什么输出高电平
DSP上电所有IO口输出默认为高电平,所以如果是驱动继电器是,一定得考虑这个问题,要不然一上电你的继电器都动作,不会受你的控制,这点我深有体会,第一次做一个项目就吃了这个亏!
7. gpio接口怎么用
一、gpio用途
General Purpose Input Output (通用输入/输出)简称为GPIO,或总线扩展器,人们利用工业标准I2C、SMBus或SPI接口简化了I/O口的扩展。当微控制器或芯片组没有足够的I/O端口,或当系统需要采用远端串行通信或控制时,GPIO产品能够提供额外的控制和监视功能。
每个GPIO端口可通过软件分别配置成输入或输出。Maxim的GPIO产品线包括8端口至28端口的GPIO,提供推挽式输出或漏极开路输出。提供微型3mm x 3mm QFN封装。
不同系统间的GPIO的确切作用不同。通用常有下面几种:
1.输出值可写(高=1,低=0)。一些芯片也可以选择驱动这些值的方式,以便支持“线-或”或类似方案(开漏信号线)。
2.输入值可读(1,0)。一些芯片支持输出管脚回读,这在线或的情况下非常有用(以支持双向信号线)。GPIO控制器可能具有一个输入防故障/防反跳逻辑,有时还会有软件控制。
3.输入经常被用作中断信号,通常是边沿触发,但也有可能是电平触发。这些中断可以配置为系统唤醒事件,从而将系统从低功耗模式唤醒。
4.一个GPIO经常被配置为输入/输出双向,根据不同的产品单板需求,但也存在单向的情况。
5.大多是GPIO可以在获取到spinlock自旋锁时访问,但那些通过串行总线访问的通常不能如此操作(休眠的原因)。一些系统中会同时存在这两种形式的GPIO。
6.在一个给定单板上,每个GPIO用于一个特定的目的,如监控MMC/SD卡的插入/移除,检查卡写保护状态,驱动LED,配置发送器,串行总线位拆,触发一个硬件看门狗,触发一个开关之类的。
二、GPIO使用方法
要使用GPIO,系统首先要分配一个GPIO,使用gpio_request() 为系统分配一个GPIO。
接下来要做的一件事是标示GPIO的方向,通常在使用GPIO建立一个platform_device时(位于单板的setup代码中)。
返回0标示成功,或是一个负的errno错误码。它应该被检查,因为get/set调用没有错误返回,且可能会有错误配置。你通常应该在线程上下文中使用这些调用。虽然如此,对于spinlock-safe的GPIO,在tasking使能之前使用也是可以的,作为一个早期的单板建立。
对于输出GPIO,value参数提供了初始输出值。这有助于避免系统启动过程中的信号干扰。
为了与GPIO早期的接口兼容,设置一个GPIO的方向,隐性要求申请GPIO。这个兼容性从可选的gpiolib架构中移除了。
为了与GPIO早期的接口兼容,设置一个GPIO的方向,隐性要求申请GPIO。这个兼容性从可选的gpiolib架构中移除了。
如果GPIO号码无效或是指定的GPIO不能使用对应模式操作的话,设置方向会失败。依靠boot固件设置好GPIO的方向通常不是一个好主意,因为boot的功能可能没有通过验证(除了boot linux)。(类似的,单板setup代码可能需要将管脚复用为一个GPIO,和配置为合适的上拉/下拉)
8. stm32的GPIO输出高电平不成功。求高手指点!!
烧完程序看看GPIOA->ODR寄存器,看看6,7,8,9是不是1,要不你直接在while循环里写GPIOA->ODR=0xffff;试试
9. 关于GPIO输出逻辑电平,请问能不能设置得比3.3V更高
无线电爱好都十分清楚,而谈及“电平”能说的人却不多。尽管人们经常遇到书刊中亦多次谈起电路中的高电平、低电平、电平增益、电平衰减,就连必备的万用表上都有专门测电平的方法和刻度线,而且“dB” “dBu” “dBm”的字样也常常可见,就其概念却无人重谈。我们在初学“电”的时候,往往把抽象的电学概念,用水的具体现象进行比喻,如水流比电流,水压比电压,水阻比电阻,而“电平”却无法炮制。到底什么是“电平”呢?电平就是指电路中两点或几点在相同阻抗下电量的相