求助:无法循环读取stm32 引脚输入电平值
需要在主程序循环读取引脚输入电平,执行LED点亮和熄灭,现在问题:引脚电平变化led无动作,已确认led点亮和熄灭程序没问题,请教大侠指点,谢谢。while (1)
{
if(GPIO_ReadInputDataBit(GPIOE,2)==0 )
{
LED1_ON;
}
if(GPIO_ReadInputDataBit(GPIOE,2)==1 )
{
LED1_OFF;
}
} 那就是获取管脚状态有问题呗 io口变换频率是多少?代码就仅仅这一段还是有其他中断函数? 是的,不执行if里面程序 lb0857 发表于 2024-5-3 17:20
io口变换频率是多少?代码就仅仅这一段还是有其他中断函数?
(引用自3楼)
变换频率在几秒钟,没有开中断 确定有PEx系列引脚吗,100pin开始的stm32上才有
PE引脚时钟初始化了吗 楼上说的估计就是问题所在
越是稀奇古怪问题,越是疏忽了基本因素而造成。 Himem 发表于 2024-5-3 18:00
确定有PEx系列引脚吗,100pin开始的stm32上才有
PE引脚时钟初始化了吗
(引用自6楼)
用的144引脚芯片,端口时钟打开了,引脚速率需要设置吗? 目测楼主是初学,狠狠心直接上hal库吧。各种优点。缺点微不足道 现在的情况是:if((GPIO_ReadInputDataBit(GPIOA,0))==0 )能检测到并执行,但是if((GPIO_ReadInputDataBit(GPIOA,0))==1)检测不到
本帖最后由 Himem 于 2024-5-3 19:52 编辑
GPIO_Pin_2 != 2
GPIO_Pin_0 != 0 判断==0
判断!=0 else不就好了 大概率没开端口时钟吧,或者端口模式配置不对 这个检查速度很快,是否把IO口的频率设置到最高? 一般设置为输出的引脚读锁存电平和设置为输入的引脚电平检测不是同一个寄存器,不知道stm32的寄存器是不是分开的。 参数2应该不是对应pin2,可能是对应pin1??? 你们这些软件高手都不知道砸搞调试的,换做我这个半罐水的半罐水,直接就把整个一组端口以及各个觉得没设置对得寄存器读出来打印出来看看不就清楚了。
再不挤,调试器(仿真/烧写器)是来干嘛的啊???挂着一步步看各种寄存器各个端口值的变化啊,量一下io值和寄存器里面的是不是一致
你确定你写的
GPIO_ReadInputDataBit(GPIOE,2)
是GPIOE Pin2吗?
楼上不错... 用了这个玩意,就不要写一个2了..... 要写GPIO_PIN_2 if((GPIO_ReadInputDataBit(GPIOA,0))==1)
他是非零值,但是不是1 你这个需求直接硬件电路解决
页:
[1]