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

2019-07-14 15:55发布

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

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
dfasda
1楼-- · 2019-07-14 23:52
为什么你认为一个引脚需要一个定时器AFIO与一个按钮一起使用?
法规处发
2楼-- · 2019-07-15 00:49
 精彩回答 2  元偷偷看……
fhdgxfvx
3楼-- · 2019-07-15 01:11
反过来说,引脚需要一些输入信号用作例如定时器触发器。让我们假设我想要一个计时器,开始计算上升沿ETR。当硬件尚未存在时,我该如何测试呢?
jfdgs
4楼-- · 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);
tiantian55
5楼-- · 2019-07-15 08:03
您可以创建不同的执行环境。例如,在您的电脑上运行该软件,或创建模拟对象和外围设备并在目标上运行。
这是部分软件测试,例如测试驱动开发。
实用:
在任何嵌入式平台上,寄存器都在头文件中定义。对于ST,这些是定义并映射到外围设备的结构stm32f0xx.h。您可以为测试环境创建修改的头文件,其中这些结构不映射到外围设备,而是映射到内存。这样,您可以通过您可以编写的测试来模拟所有内容。
lingjianghui
6楼-- · 2019-07-15 10:06
我不认为这是测试定时器外设如何对输入变化做出反应的有效方法。你必须模拟外围设备的所有行为

一周热门 更多>