微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 用STM8S单片机 ADC值变小到一定范围,使LED灯闪烁怎么做?

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

时间:10-02 整理:3721RD 点击:
用STM8S单片机 ADC值变小到一定范围,使LED灯闪烁(不能用while+delays)
LED的引脚(GPIOA, GPIO_PIN_3),求大神程序

宏定义一个AD临界值,当小于这个数值的时候将灯闪烁的标志位由0置1,反之由1置0。
然后利用单片机的定时器,让灯闪烁,当标志位为1时使能这段代码,为0时不要使能这段代码。
当灯使能标志位由1变0时加一句话,就是让灯灭掉,保证灯不闪烁的时候状态是统一的。

是仿真还是                              

使用定时器给LED提供时基

设置PA3为PWM输出,当AD值小于指定时,输出PWM信号控制小灯闪

                 

不懂 跟着小编一起学习一下

能说的更详细一些嘛,刚刚接触,有点不懂,最好有具体程序看看

我元旦期间给你回个简单代码哈

好的,谢谢

dsaaaaaaaaaaaaaaaaaaaaaaaaffsdafdsfdsf

  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. }

复制代码


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

恩,我自己研究一下,谢谢喽

有点道理

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top