定时器的中断处理程序要保证高效率,需要进行一些优化,这里介绍优化的方法。对于一个操作系统来说,会有多个定时器,假设该操作系统维护了500个定时器,当每一次定时中断发生时(这里我们设定1秒发生100次中断),调用中断处理程序,中断处理程序会对这500个定时器进行if判断,看哪些正在被使用,这样1秒内,就会有500X100=10000次if判断,而中断处理程序最讲究节省时间。实际上,我们不必每发生一次...
分类:
其他好文 时间:
2014-08-09 23:17:29
阅读次数:
303
在使用stm32的通用定时器定时中断的时候,发现定时器在完成初始化配置后,定时器UIF位会立刻置位,导致在使能中断后,程序会立刻进入定时器中断。如果设计代码时不希望定时器配置完成后,立刻进入中断,可以在定时器配置完成后,立刻清除UIF标志位(TIMx->SR&=0xFFFE),再使能定时器更新中断。...
分类:
其他好文 时间:
2014-07-03 00:40:00
阅读次数:
311
/****************************************************
名称: 标准红发遥控 接收程序--4BYTE
平台为: 松瀚SN8P2511
接收方式为 定时中断接收 中断定时时间为100U
*****************************************************/
;寄存器定义
STS1 DS 1
F_IRECOK E...
分类:
其他好文 时间:
2014-06-16 11:19:48
阅读次数:
169
//==timer4 define=====
#define TIM4_DIV1 0X00
#define TIM4_DIV8 0X01
#define TIM4_DIV64 0X02
#define TIM4_DIV256 0X03
#define Timer4_Cnt_Enb Bank1;T4CON |= (1<<1) //允许计数
#define Timer...
分类:
其他好文 时间:
2014-06-10 08:13:12
阅读次数:
306
/*
使用keil4
可运行8个任务
任务从rtos_wait()处切换,在定时时间到后从定时中断中切换回来。
*/
#include "STC12C5A...
分类:
编程语言 时间:
2014-05-26 05:05:42
阅读次数:
419
CRTOS 实时可剥夺型内核
1.任务不用预加载,不用预定义。任务调用时加载,可删除(退出死循环即可)
2.单位轮转查询时间由晶振和定时器初始化决定。在这里为10ms
3.定时时间为【 time*单位轮转查询时间 】 ,其中time为 rtos_wait(time)中time.
4.可运行多个任务【自定义】
5.任务从rtos_wait()处切换,在定时时间到后从定时中断中切换回来,任务执行后,回到中断,再从中断回到主程序。...
分类:
编程语言 时间:
2014-05-26 03:59:52
阅读次数:
323
调度策略
Linux的调度基于分时(time sharing)技术:多个进程以“时间多路复用”方式运行,因为CPU的时间被分成“片(slice)”,给每个可运行进程一片。当然,单处理器在任何给定的时刻只能运行一个进程。如果当前运行的时间片或时限(quantum)到期时,该进程还没有运行完毕,进程切换就可以发生。分时依赖于定时中断,因此对进程是透明。不需要在程序中插入额外的代码来保证CPU分时。...
分类:
其他好文 时间:
2014-05-25 10:08:46
阅读次数:
191
4个任务
/*
使用keil4
可运行8个任务
任务从rtos_wait()处切换,在定时时间到后从定时中断中切换回来。
*/
#include "STC12C5A.H"
#define TIMER_RELOAD() {TL0=0x00;TH0=0xC4;}//使能T/C 初始10ms
#define MAX_TASKS 8 //任务槽最大个数.
unsig...
分类:
编程语言 时间:
2014-05-25 02:03:17
阅读次数:
293
使用keil4 ,代码Code Optimization:0 运行OK
可运行8个任务
Program Size: data=21.0 xdata=0 code=401 (包括2个示例变量,未优化)
任务从中断处切换,在定时时间到后从定时中断中切换回来。
待改进地方
1.手动优化汇编程序
2. 重入问题
3.参数进函数和时中断的保护问题...
分类:
编程语言 时间:
2014-05-24 22:13:10
阅读次数:
318
CRTOS 实时可剥夺型内核
1.任务不用预加载,不用预定义。任务调用时加载,可删除(退出死循环即可)
2.单位轮转查询时间由晶振和定时器初始化决定。在这里为10ms
3.定时时间为【 time*单位轮转查询时间 】 ,其中time为 rtos_wait(time)中time.
4.可运行多个任务【自定义】
5.任务从rtos_wait()处切换,在定时时间到后从定时中断中切换回来,任务执行后,回到中断,再从中断回到主程序。...
分类:
编程语言 时间:
2014-05-24 19:51:06
阅读次数:
324