OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5548|回复: 5

STM32F4的IO口初始电平

[复制链接]

26

主题

105

帖子

0

精华

高级会员

Rank: 4

积分
894
金钱
894
注册时间
2015-10-25
在线时间
117 小时
发表于 2016-6-12 12:14:04 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 xuande 于 2016-6-21 18:49 编辑

     我在探索者F407中点亮LED时只初始化为上拉推挽输出模式,而没有初始化引脚电平状态,单片机默认管脚为低电平,LED灯点亮。
我想问:上拉推挽输出模式设置完成之后,芯片引脚不是被拉高了吗?为什么此时单片机芯片引脚还是为低电平?

最佳答案

查看完整内容[请看2#楼]

因为你没有改GPIOx->ODR的值,它默认是0,当设置为推挽输出后,就是输出0,跟上拉电阻没关系,,,还有怎么有上拉推挽这种模式?既然推挽了,上拉有嘛用?白耗电么
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-6-12 12:14:05 | 显示全部楼层
因为你没有改GPIOx->ODR的值,它默认是0,当设置为推挽输出后,就是输出0,跟上拉电阻没关系,,,还有怎么有上拉推挽这种模式?既然推挽了,上拉有嘛用?白耗电么
回复

使用道具 举报

26

主题

105

帖子

0

精华

高级会员

Rank: 4

积分
894
金钱
894
注册时间
2015-10-25
在线时间
117 小时
 楼主| 发表于 2016-6-19 12:14:14 | 显示全部楼层
void BEEP_Init(void)
回复

使用道具 举报

26

主题

105

帖子

0

精华

高级会员

Rank: 4

积分
894
金钱
894
注册时间
2015-10-25
在线时间
117 小时
 楼主| 发表于 2016-6-19 12:15:37 | 显示全部楼层
本帖最后由 天空淡云 于 2016-6-19 12:17 编辑


void BEEP_Init(void)
{   
  GPIO_InitTypeDef  GPIO_InitStructure;

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF时钟
  
  //初始化蜂鸣器对应引脚GPIOF8
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;//下拉
  GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化GPIO
        
  GPIO_ResetBits(GPIOF,GPIO_Pin_8);  //蜂鸣器对应引脚GPIOF8拉低,
}

上面代码中,下拉和引脚拉低分别代表什么
回复

使用道具 举报

26

主题

105

帖子

0

精华

高级会员

Rank: 4

积分
894
金钱
894
注册时间
2015-10-25
在线时间
117 小时
 楼主| 发表于 2016-6-19 12:19:54 | 显示全部楼层
xkwy 发表于 2016-6-12 12:14
因为你没有改GPIOx->ODR的值,它默认是0,当设置为推挽输出后,就是输出0,跟上拉电阻没关系,,,还有怎么 ...

[mw_shl_code=c,true]void BEEP_Init(void)
{   
  GPIO_InitTypeDef  GPIO_InitStructure;

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF时钟
  
  //初始化蜂鸣器对应引脚GPIOF8
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;//下拉
  GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化GPIO
       
  GPIO_ResetBits(GPIOF,GPIO_Pin_8);  //蜂鸣器对应引脚GPIOF8拉低,
}

上面代码中,下拉和引脚拉低区别是什么,能不能只设置其中一个来控制引脚电平变化啊?[/mw_shl_code]
回复

使用道具 举报

26

主题

105

帖子

0

精华

高级会员

Rank: 4

积分
894
金钱
894
注册时间
2015-10-25
在线时间
117 小时
 楼主| 发表于 2016-6-21 18:40:28 | 显示全部楼层
谢谢了,理解了
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 14:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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