标题: stm32f103单片机的IO口问题 [打印本页]

作者: 幻海生    时间: 2022-11-17 14:21
标题: stm32f103单片机的IO口问题
初学stm32,用推挽模式 让 A0口01循环,led左侧必须接电源才亮,如A0口,若左侧接地则完全没反应,如B1口,是代码的问题还是仿真的问题
看教程说推挽输出是强驱动,不应该连个led都驱动不了



代码如下

#include "stm32f10x.h"                  // Device header
#include "Delay.h"

int main(void)
{
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);
               
   GPIO_InitTypeDef GPIO_InitStructure;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_Init(GPIOA, &GPIO_InitStructure);

   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
   GPIO_Init(GPIOB, &GPIO_InitStructure);
        
   while (1)
   {
      GPIO_WriteBit(GPIOB, GPIO_Pin_1, (BitAction)1);
      Delay_ms(500);
      GPIO_ResetBits(GPIOA, GPIO_Pin_0);
      Delay_ms(500);
      GPIO_SetBits(GPIOA, GPIO_Pin_0);
      Delay_ms(500);
   }
}



作者: Hephaestus    时间: 2022-11-17 15:12
什么叫“二极管”?
作者: yzwzfyz    时间: 2022-11-17 16:51
查一下LED的手册,看看LED在何种情况下才能亮。看懂了,就明白了。
作者:     时间: 2022-11-18 08:11
你把LED反着接,PA0再输出高电平就能亮了,二极管未损坏情况下具有单向导通的特性
作者: adad2    时间: 2022-11-18 08:59
这个是什么仿真软件,介绍下
作者: gwffg    时间: 2022-11-18 10:15
adad2 发表于 2022-11-18 08:59
这个是什么仿真软件,介绍下

Proteus
作者: Longan.Wang    时间: 2022-11-18 10:39
把GPIO_WriteBit(GPIOB, GPIO_Pin_1, (BitAction)1);换成
   GPIO_SetBits(GPIOB, GPIO_Pin_1);试试
作者: 幻海生    时间: 2022-11-18 12:06
本帖最后由 幻海生 于 2022-11-18 12:19 编辑
 发表于 2022-11-18 08:11
你把LED反着接,PA0再输出高电平就能亮了,二极管未损坏情况下具有单向导通的特性

PB1口我一直给它高电平,没连接led之前是有显示红色的高电平


连接之后就电平变成了灰色,就跟最开始的图一样, 拿来对照PA0口给外部电压才亮,至于led的单向导通是了解的

作者: 幻海生    时间: 2022-11-18 12:06
Longan.Wang 发表于 2022-11-18 10:39
把GPIO_WriteBit(GPIOB, GPIO_Pin_1, (BitAction)1);换成
   GPIO_SetBits(GPIOB, GPIO_Pin_1);试试

试了,还是一样
emmmm
作者: Longan.Wang    时间: 2022-11-18 16:38
幻海生 发表于 2022-11-18 12:06
PB1口我一直给它高电平,没连接led之前是有显示红色的高电平

你有这张图就基本清楚了。这个是IO口的驱动能力不足,还有你本身的电路也有问题,驱动LED需要加上限流电阻。你在PB1与LED正极之间加上一个470欧姆左右的电阻试试;如果还是不行,就再编辑(左键双击或右键菜单选项)一下LED的属性,把正向导通电压改小一点(可以一点点的试)。
作者: 幻海生    时间: 2022-11-19 08:29
Longan.Wang 发表于 2022-11-18 16:38
你有这张图就基本清楚了。这个是IO口的驱动能力不足,还有你本身的电路也有问题,驱动LED需要加上限流电 ...

刚开始默认模拟信号改成数字信号后,可以用了,感谢指点









欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1