定时器中断

中断与异常的区别:
(1)
中断:系统停止当前正在运行的程序而转向其他服务,可能是因为优先级高的请求服务了,或者是因为人为安排中断。中断是属于正常现象。
异常:是由于软件错误而引起的。
(2)
中断是CPU所具备的功能 – 硬件
异常是软件运行过程中的一种开发过程中没有考虑到的程序错误 – 软件

Cortex‐M3 在内核水平上搭载了一个异常响应系统, 支持为数众多的系统异常和外部中断。其中,编号为 1-15 的对应系统异常,大于等于 16 的则全是外部中断。除了个别异常的优先级被定死外, 其它异常的优先级都是可编程的。
定时器中断:
定时器的计数功能:16位向上、向下、向上/向下自动装载计数器;
初始化如下:

void TIM3_Init(u16 arr,u16 psc)
{
    RCC->APB1ENR=1<<1;
    TIM3->ARR=arr;
    TIM3->PSC=psc;
    TIM3->CR1|=1<<0;
    TIM3->DIER|=1<<0;
    MY_NVIC_Init(1,3,TIM3_IRQn,1);
}

步骤:
1:打开对应定时器的时钟;
2:Tout=((arr+1)*(psc+1))/Ftus即定时器的计数初值;
这里写图片描述
这里写图片描述
通过设置这两个寄存器可以得到任意想要设置的初值。
3:允许更新中断,即每次达到计数值的时候,触发中断,执行中断服务函数里的相应功能。
4:使能计数器。
5:设置中断分组,中断优先级,相应优先级。
6:编写中断服务函数。


例如:利用两个定时器使两个步进电机走设置好的步数,通过计算转化为定时器的初值。可以达到两个步进电机同时工作走各自设定好的步数。
其运行原理:由于执行速度较快,初始化过后,程序执行电机一的第一个脉冲,然后跳转至电机二的第一个脉冲,然后又是电机一的第二个脉冲,电机二的第二个脉冲……宏观上可以看做是并行执行。
另外,中断服务程序可以不用写到主函数里,它内部可以自行跳转。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值