历史上的今天
今天是: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);
}
史海拾趣
|
由于上次没有说清楚,帖子沉了,再发一次,希望高手们帮帮忙啊 附件里是设计的一个思路,其中 [size=89%][size=75%]n由8MHz的晶振分频至0.8Hz,作为闸门信号 [size=89%][size=75%]n闸门信号:占空比为80%,低电平时间为0.25s,高电 ...… 查看全部问答> |
|
Achronix半导体公司采用异步电路的1.5GHz FPGA已经开始送样,该公司希望该产品凭借三倍于Altera、Xilinx公司FPGA的数据率去替代高端通信、测试和其他高端市场的ASIC产品。 Achronix是否能提供其承诺的性能还需要观察,该产品具备一系列工具和硅IP ...… 查看全部问答> |
|
编译了例子mapirule把mapirull.dll拷贝到模拟器\\window\\下面,然后手动添加了2个注册表项目的信息,软启动模拟器后,启动tmail.exe,在process viewer里面没有看到mapirule.dll被加载,请问这是什么原因呢? 我查了一下,有人说可能是因为dll需 ...… 查看全部问答> |
|
同样一个过滤驱动程序,在winxp下的安装方式和win2000一样的么 现在正在开发一个USB过滤驱动程序,大致流程如下:对USB设置访问密码放在首山区,并对首山区加密,当u盘插入时候首先对首山区进行解密读出其中的数据,在一个应用程序中正确输入密码后才能够对u盘进行正常的读写操作,驱动在winxp下能够工作的很好 ...… 查看全部问答> |
|
大家好: 图中的这个分频器是用两个 D 型正反器串接起来,是用在 LCR 表的场合,正来产生 0 度和 90 度的正交信号, 但我不明白他的工作原理为何?是否有人可以解说一下。 这个电路我实验起来发 ...… 查看全部问答> |




