
现在开始评分了,看着你的统计结果,着急啊。。。。得分项不多

利用TIM产生定时信号,使用起来比较简单,只要完成TIMx的配置,计算好定时时间,就可以使用了,剩余的工作就是应用它了。这里我应用了TIMx中断方式,在其中断服务函数里面添加了LED的翻转语句,这样就可以实现按照TIMx的定时时长来点亮熄灭LED了。由于实验较简单,就不上图上视频了,仅将TIMx的配置函数与中断服务函数贴出来。
/*-----------------------------------------------------------------------
tim2 配置
定时时间T计算公式:
*T=(TIM_Period+1)*(TIM_Prescaler+1)/TIMxCLK=(1999+1)*(35999+1)/72MHz=1s
--------------------------------------------------------------------*/
void TIME_Config(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_DeInit(TIM2); //复位定时器
TIM_TimeBaseStructure.TIM_Period=1999; //定时器初始值
TIM_TimeBaseStructure.TIM_Prescaler=35999; //时钟预分频
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; // 时钟分割
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure); //初始化定时器的值
TIM_ClearFlag(TIM2,TIM_FLAG_Update); //清除定时器中断标志
TIM_ARRPreloadConfig(TIM2, DISABLE); //禁止预装载,预装载寄存器的内容被立即传送到影子寄存器
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE); //使能中断
TIM_Cmd(TIM2,ENABLE); //开启时钟
}
void TIM2_IRQHandler(void)//定时器中断函数
{//判断是否定时中断
if ( TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET )
{
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);//必须清除中断标志位否则一直中断
count++;
if(count%2 == 0)
GPIO_SetBits(GPIOE ,GPIO_Pin_3);
else
GPIO_ResetBits(GPIOE ,GPIO_Pin_3);
}
}
回复
打赏帖 | |
---|---|
【Cortex-M】Systick Timer使用被打赏10分 | |
分享汽车防盗系统的组成与分类(一)被打赏5分 | |
VOFA+波形显示+JYD-31蓝牙发送和解析不定长数据被打赏10分 | |
【换取手持数字示波器】-STM32F4PWM控制LED灯管亮度被打赏22分 | |
【换取手持数字示波器】STM32F4驱动RPR-0521RS照度、接近一体型传感器被打赏23分 | |
宏定义和const关键字定义被打赏5分 | |
【分享开发笔记,赚取电动螺丝刀】几个单片机I2S外设的BLCK时钟对比被打赏20分 | |
【功率监测与控制系统DIY活动成果贴】DIY功率计与LabVIEW数据采集被打赏100分 | |
【分享开发笔记,赚取电动螺丝刀】使用ESP32S3调试I2S音频模块MAX98357被打赏22分 | |
【Freertos】任务管理被打赏10分 |