如何加快IDR寄存器STM32的更新时间?

时间:2019-12-19 20:11:10

标签: microcontroller stm32

我对STM32的IDR寄存器有疑问
我在下面的代码中将ODR寄存器的pin0设置为1,我想检查IDR寄存器中的pin0是否设置为1。问题是,在将引脚设置为1之后,我必须等待1秒钟,直到IDR寄存器中的pin设置为1。

如何在不等待的情况下读取引脚状态?

我该如何解决这个问题?

void init_pins(void)
{
    GPIOG->OTYPER |= (0x01 << 0); // Pin 0 as open drain
    GPIOG->OTYPER &= ~(0x01 << 1); // Pin 1 as push - pull

    GPIOG->BSRRL  =  0x01 << 1; // Pin 1 to High
    GPIOG->BSRRL  =  0x01 << 0; // Pin 0 to High

    microsecond_Delay(1000000);

    if( !(GPIOG->IDR & 0x01) )
    {
        errorCode = -1 ; //Error Code for Bus not floating
    }

}

1 个答案:

答案 0 :(得分:0)

  1. 使用STM提供的CMSIS 头文件。
  2. 如果将引脚配置为漏极开路,则不能将其设置为高电平。必须通过外部上拉电路来完成。您的配置是错误的。如果没有外部上拉电阻(或内部没有上拉电阻),那么未将其设置为零的引脚状态将无法预测。