Pathfounder_101 2024-02-06 20:41 采纳率: 0%
浏览 6
已结题

Protues仿真GPIO_ReadInputDataBit()

您好,我想再次请教一下:

int main()
{

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStructure);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
GPIO_Init(GPIOA,&GPIO_InitStructure);

while(1)
{
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)) {
GPIO_SetBits(GPIOC,GPIO_Pin_13);
} else {
GPIO_ResetBits(GPIOC,GPIO_Pin_13);
}
}
}

Protues里PA0是一个按键开关,PC13是一个Led灯,但是开启仿真之后,开关的通断并不能控制Led,在开发板上是可以正常控制,请问是protues中不支持GPIO_ResetBits这个函数吗?

感谢解答!

img

  • 写回答

4条回答 默认 最新

  • 专家-郭老师 Java领域新星创作者 2024-02-06 20:42
    关注

    参考通义千问和郭老师的小迷弟雅思莫了-编写提供,主要是为了帮助您快速解决问题,如下回答,您可以参考下,如有问题,评论区留言。

    您好,

    在Proteus仿真环境中,理论上是支持STM32的GPIO_ReadInputDataBit()和GPIO_ResetBits()函数的。从您的代码来看,您设置PA0为上拉输入模式(GPIO_Mode_IPD),并尝试通过读取PA0的状态来控制PC13上的LED灯。

    然而,在Proteus中进行仿真的时候,需要确保外部元件(如按键开关)的连接和配置正确无误。这里有几个可能的问题点:

    1. 检查Proteus中的按键开关是否正确连接到PA0引脚,并且在按下和松开时,能够正确改变PA0的电平状态。
    2. 确保在仿真之前,已经对STM32进行了正确的复位操作,以便初始化配置生效。
    3. 检查LED与PC13的连接是否正确,以及LED的极性是否与电路匹配。

    鉴于您提到开发板上可以正常工作,推测问题更可能出在Proteus中的硬件配置或仿真设置上。请仔细检查以上几个方面,如果仍然无法解决,建议尝试重启Proteus软件、更新库文件或者重新配置仿真环境。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月20日
  • 修改了问题 2月6日
  • 创建了问题 2月6日

悬赏问题

  • ¥15 如何让子窗口鼠标滚动独立,不要传递消息给主窗口
  • ¥15 如何能达到用ping0.cc检测成这样?如图
  • ¥15 关于#DMA固件#的问题,请各位专家解答!
  • ¥15 matlab生成的x1图不趋于稳定,之后的图像是稳定的水平线
  • ¥15 请问华为OD岗位的内部职业发展通道都有哪些,以及各个级别晋升的要求
  • ¥20 微信小程序 canvas 问题
  • ¥15 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验