STM8L051比较器使用案例(一)COMP1基本使用

8L 的比较器没找到例程,只能自己啃手册和看官方例程,5个例程:

AnalogWatchdog是个窗口比较器例程

COMP1-Halt是比较器1例程

其余三个是COMP2例程。

从资料分析:

COMP1的内部连接图:

比较器COMP1的输入Threshold是固定接在参考电压Vref(1.22V)上,具体特性可参见datasheet:

另一端可接任意一个外部IO口

分析具体接线要看这张图:

我们计划把PC4作为采样端,所以需要连接AS1,再看IO SWITCH,查表:

操作步骤:

1. 将Vref连接到COMP1 ,设置寄存器COMP_CSR3的对应位

COMP_VrefintToCOMP1Connect(ENABLE);

2.参考上图连接对应的I/O口(连接PC4)

/* close the analog switch number 14 */
  SYSCFG_RIAnalogSwitchConfig(RI_AnalogSwitch_14, ENABLE);
  /* close the analog switch number 1 */
  SYSCFG_RIAnalogSwitchConfig(RI_AnalogSwitch_1, ENABLE);
  /* close the I/O switch number 4 */
  SYSCFG_RIIOSwitchConfig(RI_IOSwitch_5, ENABLE);

3.使能COMP1中断

/* Enable COMP1 Interrupt */
  COMP_ITConfig(COMP_Selection_COMP1, ENABLE);

4.定义中断触发事件类型(边缘)

/* Configure the event detection */
  COMP_EdgeConfig(COMP_Selection_COMP1, COMP_Edge_Rising);

程序设计思路:

1. 电位器调节PB7输入电平,高于Vref则触发中断,LED1亮(上升沿);

2. 按键触发外部中断,LED2灭

中断处理

INTERRUPT_HANDLER(EXTI4_IRQHandler, 12)
{
  /* In order to detect unexpected events during development,
     it is recommended to set a breakpoint on the following instruction.
  */
   // 按键按下
  extern int flag;

  EXTI_ClearITPendingBit(EXTI_IT_Pin4);
  /* Enter halt mode */
 // halt();
  flag=!flag;
  LED1_OFF;
}

INTERRUPT_HANDLER(ADC1_COMP_IRQHandler, 18)
{
  /* In order to detect unexpected events during development,
     it is recommended to set a breakpoint on the following instruction.
  */
  LED1_ON;
  COMP_ClearITPendingBit(COMP_Selection_COMP1);
 
}

注意:

外部中断设置时,如果用PCx,不用指定port,如果用PBx,则要用

 //KEY引脚配置,下降沿触发;
  EXTI_SelectPort(EXTI_Port_B);
  EXTI_SetPinSensitivity(EXTI_Pin_6, EXTI_Trigger_Rising_Falling);

第二句就是对应的中断矢量。

测试OK

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海里的鱼2022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值