STM32/STM8技术william hill官网
直播中

施稚惇

7年用户 168经验值
私信 关注
[问答]

请问使用库函数如何获取GPIO的输入信息?

简化后的user目录下的main程序代码如下:
#include "STM32f10x.h"

void GPIO_Config()
{
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
        //PB14 -> LD                                                                    
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;   //上拉输入
        GPIO_Init(GPIOB, &GPIO_InitStructure);

}

int main(void)
{
        u8 Read_LD;
        SystemInit();
        GPIO_Config();
        Read_LD = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_14);
}

为什么结果显示“Read_LD被定义但从未使用过”?而且Read_LD也并没有获取到GPIOB的14管脚信息

回帖(9)

全娟

2018-9-4 09:33:07

最佳答案

你确实没使用Read_LD,加一条Read_LD=Read_LD就不出现“Read_LD被定义但从未使用过”。
举报

施稚惇

2018-9-4 09:52:01
 自己顶一个
举报

罗兰君

2018-9-4 10:09:53
楼上正解,不然会被编译器优化掉的
举报

贾翠晓

2018-9-4 10:20:01
定义成全局变量。。。
举报

李晓莉

2018-9-4 10:39:06
是这样的,原来我也遇到这样的问题。
举报

周宇

2018-9-4 10:55:22
定义为全局变量或者加上Read_LD=Read_LD;就会执行的
举报

黄玫玫

2018-9-4 11:12:05
编译器给你优化没了吧
举报

吕钢格

2018-9-4 11:30:48
重新优化看看, 重新定义
举报

唐瑶

2018-9-4 11:46:33
这样子确实是只执行一次,变量会被优化掉,建议放到while里面轮询,或者用中断。再或者变量加__IO防止优化
举报

更多回帖

发帖
×
20
完善资料,
赚取积分