用STM8S单片机 ADC值变小到一定范围,使LED灯闪烁怎么做?

2019-07-14 19:59发布

用STM8S单片机 ADC值变小到一定范围,使LED灯闪烁(不能用while+delays)
LED的引脚(GPIOA, GPIO_PIN_3),求大神程序
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
HARRY007
2019-07-16 13:12
啊小鬼 发表于 2016-12-30 13:38
好的,谢谢
  1. /*******************************************************************************
  2. * 名称: Time4_Init
  3. * 功能: 定时器4初始化
  4. * 形参: 无
  5. * 返回: 无
  6. * 说明: 定时器4用来一个2ms的时间基准
  7. ******************************************************************************/
  8. void Time4_Init(void)
  9. {
  10.     TIM4_TimeBaseInit(TIM4_PRESCALER_128, 249);//理论定时中断时间8us*250=2MS
  11.     TIM4_PrescalerConfig(TIM4_PRESCALER_128, TIM4_PSCRELOADMODE_IMMEDIATE);
  12.     TIM4_ARRPreloadConfig(ENABLE);
  13.     TIM4_ClearFlag(TIM4_FLAG_UPDATE);
  14.     TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);
  15.     TIM4_Cmd(ENABLE);
  16. }

  17. INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 23)
  18. {//2MS
  19.   /* In order to detect unexpected events during development,
  20.      it is recommended to set a breakpoint on the following instruction.
  21.   */
  22.         LedDrive(adFlag);
  23.     TIM4_ClearITPendingBit(TIM4_IT_UPDATE);
  24. }

  25. void LedDrive(u8 flag)
  26. {
  27.         static u8 ledTime = 0;
  28.         if( 0 == Flag )
  29.         {
  30.                 ledTime = 0;
  31.                 GPIO_WriteLow(GPIOD, GPIO_PIN_3);//针对写低灭灯的接法
  32.                 return;
  33.         }
  34.         ledTime++;
  35.         if( ledTime > 250 )
  36.         {
  37.                 GPIO_WriteReverse(GPIOC, GPIO_PIN_7);//根据具体的灯接口改一下这个
  38.                 ledTime = 0;
  39.         }
  40. }

  41. void main(void)
  42. {
  43.         while(1)
  44.         {
  45.                 if(adValue < ADNUM)
  46.                         adFlag = 1;
  47.                 else
  48.                         adFlag = 0;
  49.         }
  50. }
复制代码

我直接写的一个,大概意思就是这样的。

一周热门 更多>