完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在尝试使用STM32F0上的输入引脚和定制定时器来解决各种问题。所有定时器功能都是引脚上的备用功能,因此您无法使用用户按钮(NUCLEO上的PC13),因为它的备用功能中没有任何定时器。 所以,问题是:在软件中可以“模拟”GPIO引脚输入变高吗?这将使编写代码更容易,我正在考虑手动切换GPIO的IDR寄存器中的位,但它是只读的。BSRR寄存器仅影响输出。有没有办法实现这个目标? ST应该将用户按钮放在具有更多功能的不同引脚上...... 谢谢! |
|
相关推荐
9个回答
|
|
您需要与STM23F0的数据表结合。就像Arduino和Raspberry Pi一样,您需要了解MPU核心功能以及任何专门用于操作GPIO引脚的“封装”程序。您可以使用其MPU名称伪造软件中的引脚状态。如果GPIO引脚不在考虑端口扩展器。
|
|
|
|
为什么你认为一个引脚需要一个定时器AFIO与一个按钮一起使用?
|
|
|
|
是的,您可以将PC13用作GPIO引脚。您还可以通过向上或向下拉动来模拟软件中高或低的引脚。
|
|
|
|
反过来说,引脚需要一些输入信号用作例如定时器触发器。让我们假设我想要一个计时器,开始计算上升沿ETR。当硬件尚未存在时,我该如何测试呢?
|
|
|
|
只要引脚没有连接到它,并且它是一个输入引脚,设置相应的位GPIOx_PUPDR将激活上拉或下拉电阻,直接影响引脚状态。它不仅会模拟引脚变高或变低,而且电压实际上会出现在引脚上。电流可能太弱而无法驱动其他任何东西,但引脚状态会发生变化。即使引脚具有备用输入功能(例如外部触发器或定时器的捕获输入),它也应该工作。
例如,将PA12(TIM1外部触发)设置为高 GPIOA->PUPDR=(GPIOA->PUPDR & ~(3 << (2 * 12))) | (1 << 2 * 12); 将相同引脚设置为低电平 GPIOA->PUPDR=(GPIOA->PUPDR & ~(3 << (2 * 12))) | (2 << 2 * 12); |
|
|
|
您可以创建不同的执行环境。例如,在您的电脑上运行该软件,或创建模拟对象和外围设备并在目标上运行。
这是部分软件测试,例如测试驱动开发。 实用: 在任何嵌入式平台上,寄存器都在头文件中定义。对于ST,这些是定义并映射到外围设备的结构stm32f0xx.h。您可以为测试环境创建修改的头文件,其中这些结构不映射到外围设备,而是映射到内存。这样,您可以通过您可以编写的测试来模拟所有内容。 |
|
|
|
我不认为这是测试定时器外设如何对输入变化做出反应的有效方法。你必须模拟外围设备的所有行为
|
|
|
|
如果您测试硬件,它不会模拟。如果要测试定时器输入,使用引脚作为输出,则备用功能输入仍然可以工作。否则,请使用EGR寄存器,更改定时器极性设置,或将输入外部跳转到另一个引脚。
|
|
|
|
使用引脚作为输出,备用功能输入应该仍然有效,那么这是在某处记录的吗?
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
621 浏览 1 评论
1962 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1068 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1487 浏览 1 评论
LL库F030进行3个串口收发,2个串口为232,一个为485,长时间后,会出现串口1停止运行,另外两个正常,只有重启复原
1924 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 07:23 , Processed in 0.564109 second(s), Total 57, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号