• 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

  • 相关阅读:
    《HelloGitHub》第 90 期
    串口实验——简单数据收发
    使用Speech to Text API进行语音到文本转换
    SpringMvc(一)-初识
    多线程编程(1) - 先入门
    时间复杂度和空间复杂度
    Ubuntu环境配置(instant-ngp)
    javaScript(js)手写原生任务定时器源码
    黑客入门指南,学习黑客必须掌握的技术
    markfile 讲解1
  • 原文地址:https://blog.csdn.net/aaa794708075/article/details/134447088