系统滴答定时器的延时及定时中断功能

什么时定时器:有规律计数的定时器

定时器的配置:

        系统滴答定时器延时功能:

                  选择时钟源

                清空当前值寄存器

                 设置重装载值

                 使能定时器

                等待计数完成

                关闭定时器

        系统滴答定时中断功能:

             /*定时器配置*/

                      选择时钟源

                     清空当前值寄存器

                     设置重装载值

                     使能定时器

              /*NVIC控制器配置*/

                     优先级分组

                      计算优先级编码分组值

                     设置中断源(不需要使能中断源通道 因为SysTick和NVIC都是在M4内核里所以不需要设置通道)    

具体使用系统滴答定时器:

        需求:使用场景:一个定时可以多个事件的定时使用)

        每301ms 切换LED1 状态

        每522ms 切换LED2转态

        每655ms 切换LED3转态

        每900ms 切换LED4转态

        主程序按键控制蜂鸣器开关

用不同元素号的数组保存计数变量的思想 设置1ms进一次中断

U32 systick_cnt[10];

中断服务函数

{

         清除中断标志位

        systick_cnt[1]++; //事件1时间++

        systick_cnt[2]++;//事件2

        systick_cnt[3]++;//事件3

        systick_cnt[4]++;//事件4

        If(systick_cnt[1] == 301)

        {

                systick_cnt[1]=0;

                Led1灯翻转  //事件1处理

        }

        If(systick_cnt[2] == 301)

        {

                systick_cnt[2]=0;

                Led2灯翻转  //事件2处理

        }

        If(systick_cnt[3] == 301)

        {

                systick_cnt[3]=0;

                Led3灯翻转  //事件3处理

        }

        If(systick_cnt[4] == 301)

        {

                systick_cnt[4]=0;

                Led4灯翻转   //事件4处理

        }

}

        这样就可以一个定时器同时处理多个事件

         注意喽当我们做项目需要跑系统的时候必须使用系统滴答定时器,所以一般情况我们不会用系统滴答定时器做延时或者定时中断

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值