找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1512|回复: 10
收起左侧

stm32f103单片机的IO口问题

[复制链接]
ID:1050519 发表于 2022-11-17 14:21 | 显示全部楼层 |阅读模式
初学stm32,用推挽模式 让 A0口01循环,led左侧必须接电源才亮,如A0口,若左侧接地则完全没反应,如B1口,是代码的问题还是仿真的问题
看教程说推挽输出是强驱动,不应该连个led都驱动不了

51hei图片20221117140926.png

代码如下

#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);
   }
}


回复

使用道具 举报

ID:883242 发表于 2022-11-17 15:12 | 显示全部楼层
什么叫“二极管”?
回复

使用道具 举报

ID:123289 发表于 2022-11-17 16:51 | 显示全部楼层
查一下LED的手册,看看LED在何种情况下才能亮。看懂了,就明白了。
回复

使用道具 举报

ID:405850 发表于 2022-11-18 08:11 | 显示全部楼层
你把LED反着接,PA0再输出高电平就能亮了,二极管未损坏情况下具有单向导通的特性
回复

使用道具 举报

ID:941265 发表于 2022-11-18 08:59 | 显示全部楼层
这个是什么仿真软件,介绍下
回复

使用道具 举报

ID:416015 发表于 2022-11-18 10:15 来自手机 | 显示全部楼层
adad2 发表于 2022-11-18 08:59
这个是什么仿真软件,介绍下

Proteus
回复

使用道具 举报

ID:77589 发表于 2022-11-18 10:39 | 显示全部楼层
把GPIO_WriteBit(GPIOB, GPIO_Pin_1, (BitAction)1);换成
   GPIO_SetBits(GPIOB, GPIO_Pin_1);试试
回复

使用道具 举报

ID:1050519 发表于 2022-11-18 12:06 | 显示全部楼层
本帖最后由 幻海生 于 2022-11-18 12:19 编辑
 发表于 2022-11-18 08:11
你把LED反着接,PA0再输出高电平就能亮了,二极管未损坏情况下具有单向导通的特性

PB1口我一直给它高电平,没连接led之前是有显示红色的高电平
2)GLJOGJ7IR3G~7L0UXG90J.png

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

使用道具 举报

ID:1050519 发表于 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
回复

使用道具 举报

ID:77589 发表于 2022-11-18 16:38 | 显示全部楼层
幻海生 发表于 2022-11-18 12:06
PB1口我一直给它高电平,没连接led之前是有显示红色的高电平

你有这张图就基本清楚了。这个是IO口的驱动能力不足,还有你本身的电路也有问题,驱动LED需要加上限流电阻。你在PB1与LED正极之间加上一个470欧姆左右的电阻试试;如果还是不行,就再编辑(左键双击或右键菜单选项)一下LED的属性,把正向导通电压改小一点(可以一点点的试)。
回复

使用道具 举报

ID:1050519 发表于 2022-11-19 08:29 | 显示全部楼层
Longan.Wang 发表于 2022-11-18 16:38
你有这张图就基本清楚了。这个是IO口的驱动能力不足,还有你本身的电路也有问题,驱动LED需要加上限流电 ...

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


E~T$H2YIZZQ2B@AU_FA{O}O.png

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表