打印

STM32比较器

[复制链接]
6332|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
EEstudy|  楼主 | 2012-12-6 10:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的是STM32L151CBT6,现在使用其中的比较器1遇到了问题,请大家帮助一下啊。

STM32L系列单片机比较器基本上雷同于STM32F系列比较器。用分析STM32F的思路就可以的。

问题如下:   使用的PA4 口输入到比较器1的正输入端。软件配置如下,用查询方式是可以正确检测输入端电压的,但是就是进不去比较器中断,请问是怎么回事啊。

void COMP_Config(void)
{
  NVIC_InitTypeDef        NVIC_InitStructure;
  //COMP_InitTypeDef        COMP_InitStructure;
  EXTI_InitTypeDef        EXTI_InitStructure;
  GPIO_InitTypeDef        GPIO_InitStructure;

  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

  /* Configure PA4 in analog mode */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;----------------------------------------更改
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOA, &GPIO_InitStructure);---------------------------------------------更改
  
  /* COMP Peripheral clock enable */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_COMP, ENABLE);
   
  COMP_Cmd(ENABLE); /* Enable the Comparator 1 */
  Delay(1);
  SYSCFG_RISwitchControlModeCmd(ENABLE);/* Enable the switch control mode */
  SYSCFG_RIIOSwitchConfig(RI_IOSwitch_VCOMP, ENABLE);/* Close the ADC analog switch VCOMP */  
  SYSCFG_RIIOSwitchConfig(RI_IOSwitch_CH4, ENABLE); /* Close the I/O analog switch number 4 */----------------------------------------更改
   
  /* Configure and enable EXTI21 */
  EXTI_InitStructure.EXTI_Line = EXTI_Line21;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);

  /* Configure and enable COMP interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = COMP_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0f;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0f;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);  

}
沙发
IJK| | 2012-12-6 12:22 | 只看该作者
没看到比较器 中断的设置代码,LZ或许需要注意一下。

使用特权

评论回复
板凳
司空落星| | 2014-7-15 19:52 | 只看该作者
LZ,我想把一个正弦波转换为一个方波,然后检测方波的脉宽,能否提供一个思路呢?

使用特权

评论回复
地板
司空落星| | 2014-7-15 19:55 | 只看该作者
IJK 发表于 2012-12-6 12:22
没看到比较器 中断的设置代码,LZ或许需要注意一下。

大师能给提供一个思路吗?把一个正弦波转换为一个方波,然后检测方波的脉宽,知道用到比较器和定时器,但是不知道细节和原理,希望大师予以解答,非常感谢.

使用特权

评论回复
5
gaoqiu88| | 2014-8-19 14:19 | 只看该作者
比较器另外一个端口没有配置。

使用特权

评论回复
6
gaoqiu88| | 2014-8-19 14:21 | 只看该作者
  COMP_InitStructure.COMP_InvertingInput = COMP_InvertingInput_IO;
  COMP_InitStructure.COMP_Output = COMP_Output_None;
  COMP_InitStructure.COMP_OutputPol = COMP_OutputPol_NonInverted;
  COMP_InitStructure.COMP_Hysteresis = COMP_Hysteresis_High;
  COMP_InitStructure.COMP_Mode = COMP_Mode_UltraLowPower;
  COMP_Init(COMP_Selection_COMP1, &COMP_InitStructure);
  
  /* Enable the COMP peripheral */
  COMP_Cmd(COMP_Selection_COMP1, ENABLE);

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

15

帖子

0

粉丝