谷动谷力

 找回密码
 立即注册

STM32F103RCT6开发板M3单片机教程06--定时器中断

查看数: 4302 | 评论数: 1 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-12-21 23:57

正文摘要:

本帖最后由 sunsili 于 2022-1-5 15:27 编辑 STM32F103RCT6开发板M3单片机教程06--定时器中断 除非特别说明,本章节描述的模块应用于整个STM32F103xx微控制器系列,因为我们使用是STM32F103RCT6开发板是mini最小 ...

回复

鸣涧 发表于 2022-4-22 00:11:24

新建函数void LED_Task(void), 把LED 相关代码,整合在一起,这就慢慢,向多任务靠近了

  1. void LED_Task(void)
  2. {
  3.     if(flag)
  4.     {
  5.         LED4_ON();
  6.         flag=0;
  7.     }
  8.     else
  9.     {
  10.         LED4_OFF();
  11.         flag=1;
  12.     }
  13.     if(flag)
  14.     {
  15.         printf("LED ON\n");
  16.         
  17.     }
  18.     else
  19.     {
  20.         printf("LED OFF\n");
  21.     }
  22. }
复制代码


main函数精减, 就精减主我循环里的内容.

  1. .....
  2. while (1)
  3.         {
  4.         if(tim2_tick)
  5.         {
  6.             tim2_tick = 0;
  7.             LED_Task();
  8.         }
  9.         }
  10. .....
复制代码




TIM2中断服务函数精减,一般写程序原则:
中断服务函数尽量少指令,尽快跳出/TIM2中断服务函数,以便其他任务执行到


精减如下:

  1. void TIM2_IRQHandler(void)   //TIM2中断服务函数
  2. {
  3.     tim2_tick = 1;
  4.         if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)  //检查TIM3更新中断发生与否
  5.         {
  6.                 TIM_ClearITPendingBit(TIM2, TIM_IT_Update  );  //清除TIMx更新中断标志
  7.                
  8.         }
  9. }
复制代码




+10

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-11-24 09:43 , Processed in 0.273773 second(s), 43 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

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