一种基于STM32利用始终定时实现延迟的方法

发布时间:2023-01-03  

  传统上我们常用delay函数进行延迟,然而这种方式有一个很大的弊端那就是需要占用相当长的时钟周期,此时原本该用于计算各类复杂算法的计算内核都要随着系统一起停下来,很不经济也容易造成问题处理不及时的后果。


  事实上,我们只需要利用时钟中断的方式,利用一个全局变量作为标志为即可具体程序如下:




u8 time3_tmp = 0;//时钟标志

u8 fun_flag;//服务函数标志

void  Timer3_Config(void)//配置

{

TIM_TimeBaseInitTypeDef TIM_TimeBaseStruture;             ////////重定义结构体

TIM_DeInit(TIM3);                                         /////////恢复初始化

TIM_TimeBaseStruture.TIM_Period=(60-1);                   //////TIM_ARR值30毫秒中断一次

TIM_TimeBaseStruture.TIM_Prescaler=(36000-1);             //////////时钟分频

TIM_TimeBaseStruture.TIM_ClockDivision=TIM_CKD_DIV1;       /////////采样分频,1就是不分频

TIM_TimeBaseStruture.TIM_CounterMode=TIM_CounterMode_Up;   //////向上计数

TIM_TimeBaseStruture.TIM_RepetitionCounter=0;

TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStruture);              ///////设置TIM2值 

TIM_CleaRFlag(TIM3,TIM_FLAG_Update);                        ///////清溢出标志

TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);                   //////使能溢出中断

}  


void  TIM3_IRQHandler (void)

{

        

TIM_ClearITPendingBit(TIM3, TIM_IT_Update);         


IF(time3_tmp==1)

{

           fun_flag=0;

          time3_tmp=0;

          GPIO_ResetBits(GPIOB,GPIO_Pin_1);

}

if(fun_flag==1)                                                        //////USART3错误延时

    {

                time3_tmp=1;

          }

TIM_Cmd(TIM3,DISABLE);  ///////关闭定时器3 

}


void fun(void)

{

/*触发某种事件改变fun_flag*/

fun_flag =~fun_flag;

}


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    ,《魔兽世界》),温度最多降低13%(88.4度到77.3度),甚至还能降低输入延迟。 总之对于A粉来说,这样的驱动错过悔一生。 责任编辑:mooreelite......
    ,set_output_delay 2 输入延迟(Input Delay) set_input_delay命令指定输入端口上相对于设计接口处时钟边沿的输入路径延迟。 在考......
    应时间,使用循环刷新时,在一个扫描周期的刷新阶段开始前瞬间收到一个信号,则在本周期内该信号就起作用了,这时响应时间最短,等于输入延时时间、一个扫描周期时间、输出延迟时间三者之和。 如果在一个扫描周期的I/O......
    玩家绝佳的沉浸临场体验,同时被 RTINGS 和 PC Gamer 评为"最佳中阶曲面电竞显示器"及"最佳入门4K电竞显示器"。 另一款亮点产品是 28 寸的 M28U 机种,以低输入延迟、1毫秒......
    玩家绝佳的沉浸临场体验,同时被 RTINGS 和 PC Gamer 评为"最佳中阶曲面电竞显示器"及"最佳入门4K电竞显示器"。另一款亮点产品是 28 寸的 M28U 机种,以低输入延迟、1毫秒......
    浦(和飞利浦衍生的)系统不会受到这种影响。 可以通过在低于 4-6 kHz 的频率的传输时间中引入延迟来抵消这种影响,这几乎可以平衡整个音频范围内的延迟。换句话说,所有......
    [Number]; } void main() { while(1) {Num(4,2); } } 2.动态数码管显示 加入延迟函数,不然的话在显示上会有重影,对应......
    业级工作负载来说更是如此。 3D XPoint的延迟水平在10纳秒级别,但英特尔与美光双方并没有明确指出这一数字到底来自读取延迟还是写入延迟。从英特尔方面提供的图表来看,10纳秒级别应该是指读取延迟,因此......
    弧应该乘以早期因子0.88,但这会使保持检查变得过于乐观。相反,这些保持检查乘以2-0.88=1.12,这模拟了12%的相应减速,以便进行更保守的时序分析。 时序约束(输入延迟、输出延迟、理想时钟网络延迟......
    SSD应用前景最广阔的领域,但同时PCI-E SSD也必须好好解决延迟问题,写入延迟可以使用写回缓存弥补,读取延迟就暂时没办法了。 目前在PCI-E SSD市场上,最主要的厂商有Intel、美光、三星......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>