OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2200|回复: 0

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

[复制链接]

80

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
406
金钱
406
注册时间
2018-11-20
在线时间
25 小时
发表于 2019-8-2 16:48:05 | 显示全部楼层 |阅读模式
  传统上我们常用delay函数进行延迟,然而这种方式有一个很大的弊端那就是需要占用相当长的时钟周期,此时原本该用于计算各类复杂算法的计算内核都要随着系统一起停下来,很不经济也容易造成问题处理不及时的后果。
  事实上,我们只需要利用时钟中断的方式,利用一个全局变量作为标志为即可具体程序如下:

  1. u8 time3_tmp = 0;//时钟标志
  2. u8 fun_flag;//服务函数标志
  3. void  Timer3_Config(void)//配置
  4. {
  5. TIM_TimeBaseInitTypeDef TIM_TimeBaseStruture;             ////////重定义结构体
  6. TIM_DeInit(TIM3);                                         /////////恢复初始化
  7. TIM_TimeBaseStruture.TIM_Period=(60-1);                   //////TIM_ARR值30毫秒中断一次
  8. TIM_TimeBaseStruture.TIM_Prescaler=(36000-1);             //////////时钟分频
  9. TIM_TimeBaseStruture.TIM_ClockDivision=TIM_CKD_DIV1;       /////////采样分频,1就是不分频
  10. TIM_TimeBaseStruture.TIM_CounterMode=TIM_CounterMode_Up;   //////向上计数
  11. TIM_TimeBaseStruture.TIM_RepetitionCounter=0;
  12. TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStruture);              ///////设置TIM2值
  13. TIM_CleaRFlag(TIM3,TIM_FLAG_Update);                        ///////清溢出标志
  14. TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);                   //////使能溢出中断
  15. }  

  16. void  TIM3_IRQHandler (void)
  17. {
  18.         
  19. TIM_ClearITPendingBit(TIM3, TIM_IT_Update);         

  20. IF(time3_tmp==1)
  21. {
  22.            fun_flag=0;
  23.           time3_tmp=0;
  24.           GPIO_ResetBits(GPIOB,GPIO_Pin_1);
  25. }
  26. if(fun_flag==1)                                                        //////USART3错误延时
  27.     {
  28.                 time3_tmp=1;
  29.           }
  30. TIM_Cmd(TIM3,DISABLE);  ///////关闭定时器3
  31. }

  32. void fun(void)
  33. {
  34. /*触发某种事件改变fun_flag*/
  35. fun_flag =~fun_flag;
  36. }
复制代码
(定时器)
http://www.makeru.com.cn/live/1392_1199.html?s=45051
(时钟系统)
http://www.makeru.com.cn/live/1392_1082.html?s=45051
STM32中断系统
http://www.makeru.com.cn/live/3523_1745.html?s=45051



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-30 19:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表