在STM32F0中可以模拟GPIO引脚输入变高吗?

2019-07-14 15:55发布

我正在尝试使用STM32F0上的输入引脚和定制定时器来解决各种问题。所有定时器功能都是引脚上的备用功能,因此您无法使用用户按钮(NUCLEO上的PC13),因为它的备用功能中没有任何定时器。
所以,问题是:在软件中可以“模拟”GPIO引脚输入变高吗?这将使编写代码更容易,我正在考虑手动切换GPIO的IDR寄存器中的位,但它是只读的。BSRR寄存器仅影响输出。有没有办法实现这个目标?
ST应该将用户按钮放在具有更多功能的不同引脚上......
谢谢!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
jfdgs
2019-07-15 03:05
只要引脚没有连接到它,并且它是一个输入引脚,设置相应的位GPIOx_PUPDR将激活上拉或下拉电阻,直接影响引脚状态。它不仅会模拟引脚变高或变低,而且电压实际上会出现在引脚上。电流可能太弱而无法驱动其他任何东西,但引脚状态会发生变化。即使引脚具有备用输入功能(例如外部触发器或定时器的捕获输入),它也应该工作。

例如,将PA12(TIM1外部触发)设置为高

GPIOA->PUPDR=(GPIOA->PUPDR & ~(3 << (2 * 12))) | (1 << 2 * 12);
将相同引脚设置为低电平

GPIOA->PUPDR=(GPIOA->PUPDR & ~(3 << (2 * 12))) | (2 << 2 * 12);

一周热门 更多>