历史上的今天
返回首页

历史上的今天

今天是:2024年08月31日(星期六)

2020年08月31日 | STM8L101F3P6 TIM4 实现呼吸灯效果(1)

2020-08-31 来源:eefocus

要实现呼吸灯效果,主要就是确定 频率,两个方面的频率:①以多快的频率开关LED,②以多块的频率 修改脉冲宽度。我们的例子的频率是:产生100us 中断 来开关LED, 每10ms 修改一次  脉冲宽度,100个等级,1s的频率呼吸。


有两种实现方式:直接PWM 输出   另一种 是用定时器 模拟PWM  优点是任意引脚都可以实现。这里先用后一种方式实现。


主要代码:


#define LED_GPIO_PORT  GPIOD

#define LED_GPIO_PINS  GPIO_Pin_0 

#define led_on    GPIO_SetBits(LED_GPIO_PORT,LED_GPIO_PINS)

#define led_off   GPIO_ResetBits(LED_GPIO_PORT,LED_GPIO_PINS)

 


void led_pwm_init(void)

{

    GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_Mode_Out_PP_Low_Slow);//初始化LED,GPD0低速推挽输出

    

    CLK_PeripheralClockConfig (CLK_Peripheral_TIM4,ENABLE); //使能外设时钟,STM8L外设时钟默认关闭,使用前需使能

    

   

     TIM4_TimeBaseInit(TIM4_Prescaler_2, 0x64);//16M/8/2=1M,0xff=255,100*(1/1M)=100uS,大约61次中断是1S

   // Clear TIM4 update flag 

    TIM4_ClearFlag(TIM4_FLAG_Update);//向上清除溢出标志

    //Enable update interrupt 

    TIM4_ITConfig(TIM4_IT_Update, ENABLE);//向上溢出中断使能,中断向量号25

   TIM4_Cmd(ENABLE);//TIM4使能

   enableInterrupts();//开启中断总开关     

}

 


/**

  * @brief  Timer4 Update/Overflow Interrupt routine.

  * @param  None

  * @retval None

  */

INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 25)

{

    /* In order to detect unexpected events during development,

       it is recommended to set a breakpoint on the following instruction.

    */

   /*  i++;

 if(i==61)

    {

GPIO_ToggleBits(GPIOD, GPIO_Pin_0);//翻转GPD0输出状态

i=0;

    }*/

  

  if((++timenum)>=100)//每10mS调整一下led的占空比  100us中断;

 {

    time_second_count++;

    timenum=0;

  if(leddirection==0)  //如果是渐亮方向变化,则占空比递增

  {

    ledpwm++;

   if (ledpwm > pwm_max)

  {

  ledpwm = pwm_max;

   // leddirection =1;

  }

  }


 if(leddirection==1) //如果是渐暗方向变化,则占空比递减

 {

 ledpwm--;

   if(ledpwm<=pwm_min)

  {

   ledpwm=pwm_min;

 //leddirection=0;

  }

 }


  ledpwm_temp=ledpwm;//获取LED的占空比

}

 

  if(ledpwm_temp>0)//占空比大于0,则点亮led,否则熄灭led 

 {

 //led_on;

  led_off;

   ledpwm_temp--; //? 就是来控制亮的时间 

 }

 else

 { 

   led_on;

 //led_off;

 }

    TIM4_ClearITPendingBit(TIM4_IT_Update);

}


推荐阅读

史海拾趣

Chip Technologies Inc公司的发展小趣事

Chip Technologies Inc深知人才是企业发展的核心力量。因此,公司一直注重人才培养和团队建设。通过搭建完善的培训体系,公司培养了一批高素质的研发人才和管理人才。同时,公司还积极营造团结、协作的工作氛围,使得团队成员能够充分发挥自己的潜能,共同推动公司的发展。

EM Microelectronic-Marin SA公司的发展小趣事

1995年,Philips Semiconductors收购了Mikron Graz,这一事件标志着EM Microelectronic-Marin与Philips在半导体领域的深度合作。此后,两家公司共同推动了RFID(射频识别)技术的发展,使其逐渐成为电子行业中不可或缺的一部分。EM Microelectronic-Marin凭借其在低功耗技术方面的优势,为RFID技术提供了强有力的支持。

DIOTEC公司的发展小趣事

1973年,DIOTEC半导体股份有限公司在德国的海特尔斯海姆正式成立。公司创始人以半导体和整流产品的研发为起点,立志在电子行业中占据一席之地。在创立初期,DIOTEC就注重技术创新和品质控制,不断推出符合市场需求的高品质产品。凭借这种执着和坚持,DIOTEC逐渐在欧洲市场崭露头角。

Hong Kong X'Tals Ltd公司的发展小趣事
选择合适的电阻和电容,以确保定时精度和电路稳定性。同时,注意元件的温漂和老化对定时时间的影响。
DATATRONICS公司的发展小趣事

DATATRONICS高度重视人才战略的实施。公司积极引进和培养了一批高素质的技术人才和管理人才,为他们提供了良好的工作环境和发展空间。同时,DATATRONICS还建立了完善的激励机制和培训机制,鼓励员工不断创新和进取,共同推动公司的持续发展。

ETAL公司的发展小趣事

作为一家有社会责任感的企业,ETAL始终关注社会公益事业。公司积极参与各种慈善活动和社会捐赠项目,为贫困地区的教育事业、环保事业等提供了力所能及的帮助。此外,ETAL还定期组织员工参与志愿服务活动,通过实际行动传递正能量和爱心。这些公益事业不仅提升了公司的社会形象,也增强了员工的凝聚力和向心力。

问答坊 | AI 解惑

关于一种测频仪的设计的方法,急啊!

由于上次没有说清楚,帖子沉了,再发一次,希望高手们帮帮忙啊 附件里是设计的一个思路,其中   [size=89%][size=75%]n由8MHz的晶振分频至0.8Hz,作为闸门信号 [size=89%][size=75%]n闸门信号:占空比为80%,低电平时间为0.25s,高电 ...…

查看全部问答>

哪里看MACH_TYPE

请教内核的MACH_TYPE和vivi的MACH_TYPE分别在哪个文件里?…

查看全部问答>

谁有2010集成电路发展前景分析

谁有2010集成电路发展前景分析…

查看全部问答>

初创公司发布1.5GHz FPGA,目标直指10亿美元市场

Achronix半导体公司采用异步电路的1.5GHz FPGA已经开始送样,该公司希望该产品凭借三倍于Altera、Xilinx公司FPGA的数据率去替代高端通信、测试和其他高端市场的ASIC产品。 Achronix是否能提供其承诺的性能还需要观察,该产品具备一系列工具和硅IP ...…

查看全部问答>

mapirule.dll 无法加载

编译了例子mapirule把mapirull.dll拷贝到模拟器\\window\\下面,然后手动添加了2个注册表项目的信息,软启动模拟器后,启动tmail.exe,在process viewer里面没有看到mapirule.dll被加载,请问这是什么原因呢? 我查了一下,有人说可能是因为dll需 ...…

查看全部问答>

同样一个过滤驱动程序,在winxp下的安装方式和win2000一样的么

现在正在开发一个USB过滤驱动程序,大致流程如下:对USB设置访问密码放在首山区,并对首山区加密,当u盘插入时候首先对首山区进行解密读出其中的数据,在一个应用程序中正确输入密码后才能够对u盘进行正常的读写操作,驱动在winxp下能够工作的很好 ...…

查看全部问答>

如何监控刻录机

小弟要了解一些监控刻录机的知识,但无从下手,渴望各位大虾指点一二,哪怕是介绍相关学习内容也好,我是新手,还没有积分,只能先靠大家施舍路子了,多谢了!…

查看全部问答>

ProtelDXP2004SP2最经典教程

ProtelDXP2004SP2最经典教程,希望大家喜欢…

查看全部问答>

请问这个分频器的工作原理

大家好: 图中的这个分频器是用两个 D 型正反器串接起来,是用在 LCR 表的场合,正来产生 0 度和 90 度的正交信号, 但我不明白他的工作原理为何?是否有人可以解说一下。 这个电路我实验起来发 ...…

查看全部问答>