stm32比较输出和中断溢出的问题

为什么开启中断标志会使 比较输出不正常

正常情况下

img


其他什么没有,没有中断函数,就是开启一下溢出中断就不能正常输出了

img

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7620285
  • 这篇博客你也可以参考下:stm32串口自定义协议接收一串十六进制数据(将其中两个字节转化为十进制数据)+部分串口基础知识
  • 除此之外, 这篇博客: stm32标准库文件内容说明中的 6、为每个外设声明一个结构体类型,结构体中是外设的所有寄存器 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • typedef struct
    {
      __IO uint32_t SR;     /*!< ADC status register,                         Address offset: 0x00 */
      __IO uint32_t CR1;    /*!< ADC control register 1,                      Address offset: 0x04 */      
      __IO uint32_t CR2;    /*!< ADC control register 2,                      Address offset: 0x08 */
      __IO uint32_t SMPR1;  /*!< ADC sample time register 1,                  Address offset: 0x0C */
      __IO uint32_t SMPR2;  /*!< ADC sample time register 2,                  Address offset: 0x10 */
      __IO uint32_t JOFR1;  /*!< ADC injected channel data offset register 1, Address offset: 0x14 */
      __IO uint32_t JOFR2;  /*!< ADC injected channel data offset register 2, Address offset: 0x18 */
      __IO uint32_t JOFR3;  /*!< ADC injected channel data offset register 3, Address offset: 0x1C */
      __IO uint32_t JOFR4;  /*!< ADC injected channel data offset register 4, Address offset: 0x20 */
      __IO uint32_t HTR;    /*!< ADC watchdog higher threshold register,      Address offset: 0x24 */
      __IO uint32_t LTR;    /*!< ADC watchdog lower threshold register,       Address offset: 0x28 */
      __IO uint32_t SQR1;   /*!< ADC regular sequence register 1,             Address offset: 0x2C */
      __IO uint32_t SQR2;   /*!< ADC regular sequence register 2,             Address offset: 0x30 */
      __IO uint32_t SQR3;   /*!< ADC regular sequence register 3,             Address offset: 0x34 */
      __IO uint32_t JSQR;   /*!< ADC injected sequence register,              Address offset: 0x38 */
      __IO uint32_t JDR1;   /*!< ADC injected data register 1,                Address offset: 0x3C */
      __IO uint32_t JDR2;   /*!< ADC injected data register 2,                Address offset: 0x40 */
      __IO uint32_t JDR3;   /*!< ADC injected data register 3,                Address offset: 0x44 */
      __IO uint32_t JDR4;   /*!< ADC injected data register 4,                Address offset: 0x48 */
      __IO uint32_t DR;     /*!< ADC regular data register,                   Address offset: 0x4C */
    } ADC_TypeDef;
    
    typedef struct
    {
      __IO uint32_t CSR;    /*!< ADC Common status register,                  Address offset: ADC1 base address + 0x300 */
      __IO uint32_t CCR;    /*!< ADC common control register,                 Address offset: ADC1 base address + 0x304 */
      __IO uint32_t CDR;    /*!< ADC common regular data register for dual
                                 AND triple modes,                            Address offset: ADC1 base address + 0x308 */
    } ADC_Common_TypeDef;
    ...
    ...
    ...
    ...
  • 您还可以看一下 朱有鹏老师的STM32标准库的引入视频课程-第3季第6部分课程中的 3.6.1.为什么会有标准外设库小节, 巩固相关知识点