stm32f10系列--管脚被设置为输入模式时,对其进行输出操作将影响其输入功能

有时程序载入硬件,没有按代码执行,可能由于此。

1.欲完成功能:

结构:PA0管脚可以输出高低电平,控制LED灯的亮灭;PA1管脚作为输入,连接一头已经接地的switch开关。

逻辑:当开关闭合时,LED灯亮;当开关断开时,LED灯灭。

代码和电路图如下:

2.发现问题

程序载入到芯片后运行,开关断与闭合,灯的状态无变化。又用核心板硬件测试,发现是一样的问题。

3.原因解析

GPIO_Write(GPIOA,0x????);函数一次性对A组的所有管脚进行输出操作。本意是只想让A0输出高低电平,但GPIO_Write影响了A1管脚的输入功能。此是硬件和软件的结合bug。为达到不更换硬件结构情况下完成预想效果,可使用的别的函数或只对A0管脚输出操作的代码。

4.问题解决

①.更换函数,只对A0管脚输出操作

②.直接操作GPIO_Write函数对应的底层代码里的寄存器,只对A0管脚输出

两种方法都用仿真和核心板硬件测试,正确。

5.Proteus仿真和真实硬件测试使用

同样的代码

用Proteus仿真达不到开关控制灯的亮灭

用核心板硬件测试可以达到理想效果。

这是仿真软件和硬件的区别,仿真软件有时达不到理想效果。

使用的例程如下:

使用Proteus和keil软件,画图+代码,控制stm32f10x系列芯片的一个管脚让灯亮灭呼吸灯仿真图工程+代码工程资源-CSDN文库  https://download.csdn.net/download/aaa794708075/88541603

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值