- 浏览: 37024 次
- 性别:
- 来自: 安徽
最新评论
1. GPTI_StartItem
要精准很多,但是只能提供总数不超过32个GPTI,所以使用时需要注意成对申请和释放GPTI,否则可能会出现ASSERT.GPTI用的是GPT timer。这个是用HISR的方式去响应.
2. StartTime
-
StartTime底层是TDMA timer,上层经过Nucleus和KAL封装了一下,最后是用响应消息的方式去响应.
-
3. gui_start_timer / gui_cancle_timer
-
它最终也是会调用StartTimer的。只不过它不用申请Timer ID,循环使用了固定的Timer ID。
4. StartNonAlignTimer
-
精确度会比StartTimer要好.UI_disable_alignment_timers()函数用来关闭align timer。关闭之后StartTime函数开出的
-
timer都是NonAlign的timer。
使用范例:
------------------------------------------------------------------------
if (IsBacklightOn())
{
StartNonAlignTimer(timer_id + TIMER_ID_IIS_BEGIN, delay, funcPtr);
}
else
{
StartTimer(timer_id + TIMER_ID_IIS_BEGIN, delay, funcPtr);
}
------------------------------------------------------------------------------------------------
MTK平台学习--MTK定时器消息机制分析
? MTK定时器消息机制分析
? 1. 数据结构
(1). stack_timer_struct
定时器类型的信息结构( 其主要作用似乎是用以装载待发送的定时器消息数据 )
(2). TIMERTABLE
定时器队列节点结构( 其由主要元素mmi_frm_timer_type结构及链表指针两个元 素组成 )
(3). event_scheduler
队列信息结构
(4). mmi_frm_timer_type
定时器信息结构
? 2. L4定时器初始化
(1). 步骤
...-> 创建MMI Task -> 设置MMI Task初始化函数 -> 在该函数中调用 L4InitTimer
kal_bool mmi_create(comptask_handler_struct **handle)
{
static comptask_handler_struct mmi_handler_info =
{
MMI_task, /* task entry function */
MMI_Init, /* task initialization function */
NULL,
NULL, /* task reset handler */
NULL, /* task termination handler */
};
*handle = &mmi_handler_info;
return KAL_TRUE;
}
(2). 作用
初始化定时器队列并设置基本定时器1,2
? 3. 发送定时器消息
(1). 步骤
StartTimer -> L4StartTimer
(2). 两种类型的定时器
MTK中有两种类型的定时器
a. NO_ALIGNMENT
非队列式的,即要求立即执行的定时器,时间到了就自动被reset.
b. ALIGNMENT
队列式的, 即可以通过队列操作,有一定的延时容忍的定时器 . y
其基本执行流程: 执行定时器 --> 超时? --> 保存timer id,event id -- timer stop || no event ?----> END ;
c. 除了触摸屏和手写,其他情况下的定时器一般都是队列式的.
(3). L4StartTimer的作用
判断将要发送的定时器ID,根据是否是队列类型传递给不同的队列结构(event_sheduler1/event_sheduler2) ;
(4). TimerExpiry
这是作为参数传递给L4StartTimer的回调函数,由于MTK做了一定的封装,因此其内部具体回调触发过程无法得知,但根据猜测,应该是在定时时间一到,以中断的方式发出消息(MSG_ID_TIMER_EXPIRY),并将其写到MMI的循环队列.该函数可能是在L4CallBackTimer中调用的,L4CallBackTimer的作用如下:
a. 重置当前定时器信息结构(mmi_frm_timer_type) ;
b. 执行定时器到点后的执行函数(TimerExpiry) ;
c. 讲Timer消息写到MMI循环队列中 .
? 4. 与StartTimer对应的StopTimer
(1). 具体实现通过调用L4StopTimer操作.
(2). 作用: 找出指定要停止的定时器ID在队列中的位置,然后使用evshed_cancel_event将指定定时器节点从队列中删除.
5. 定时器消息的处理
(1). 步骤
...-> 创建MMI Task -> 设置MMI Task入口函数 -> 调用 EvshedMMITimerHandler
(2). evshed_timer_handler( ) -> 处理具体的定时器事件
StartNonAlignTimer()//启动非队列式timer
? StartTimer() //启动队列式timer
? -------------------
★★ GPTI TIMER
? GPTI_GetHandle:取得GPTI timer句柄
? GPTI_StartItem:启动gpti timer
? GPTI_StopItem: 停止该timer
? MTK定时器消息机制分析
? 1. 数据结构
(1). stack_timer_struct
定时器类型的信息结构( 其主要作用似乎是用以装载待发送的定时器消息数据 )
(2). TIMERTABLE
定时器队列节点结构( 其由主要元素mmi_frm_timer_type结构及链表指针两个元 素组成 )
(3). event_scheduler
队列信息结构
(4). mmi_frm_timer_type
定时器信息结构
? 2. L4定时器初始化
(1). 步骤
...-> 创建MMI Task -> 设置MMI Task初始化函数 -> 在该函数中调用 L4InitTimer
kal_bool mmi_create(comptask_handler_struct **handle)
{
static comptask_handler_struct mmi_handler_info =
{
MMI_task, /* task entry function */
MMI_Init, /* task initialization function */
NULL,
NULL, /* task reset handler */
NULL, /* task termination handler */
};
*handle = &mmi_handler_info;
return KAL_TRUE;
}
(2). 作用
初始化定时器队列并设置基本定时器1,2
? 3. 发送定时器消息
(1). 步骤
StartTimer -> L4StartTimer
(2). 两种类型的定时器
MTK中有两种类型的定时器
a. NO_ALIGNMENT
非队列式的,即要求立即执行的定时器,时间到了就自动被reset.
b. ALIGNMENT
队列式的, 即可以通过队列操作,有一定的延时容忍的定时器 . y
其基本执行流程: 执行定时器 --> 超时? --> 保存timer id,event id -- timer stop || no event ?----> END ;
c. 除了触摸屏和手写,其他情况下的定时器一般都是队列式的.
(3). L4StartTimer的作用
判断将要发送的定时器ID,根据是否是队列类型传递给不同的队列结构(event_sheduler1/event_sheduler2) ;
(4). TimerExpiry
这是作为参数传递给L4StartTimer的回调函数,由于MTK做了一定的封装,因此其内部具体回调触发过程无法得知,但根据猜测,应该是在定时时间一到,以中断的方式发出消息(MSG_ID_TIMER_EXPIRY),并将其写到MMI的循环队列.该函数可能是在L4CallBackTimer中调用的,L4CallBackTimer的作用如下:
a. 重置当前定时器信息结构(mmi_frm_timer_type) ;
b. 执行定时器到点后的执行函数(TimerExpiry) ;
c. 讲Timer消息写到MMI循环队列中 .
? 4. 与StartTimer对应的StopTimer
(1). 具体实现通过调用L4StopTimer操作.
(2). 作用: 找出指定要停止的定时器ID在队列中的位置,然后使用evshed_cancel_event将指定定时器节点从队列中删除.
5. 定时器消息的处理
(1). 步骤
...-> 创建MMI Task -> 设置MMI Task入口函数 -> 调用 EvshedMMITimerHandler
(2). evshed_timer_handler( ) -> 处理具体的定时器事件
StartNonAlignTimer()//启动非队列式timer
? StartTimer() //启动队列式timer
? -------------------
★★ GPTI TIMER
? GPTI_GetHandle:取得GPTI timer句柄
? GPTI_StartItem:启动gpti timer
? GPTI_StopItem: 停止该timer
转自:http://blog.163.com/ling_yf/blog/static/565195712011017333447/
发表评论
-
PPPD拨号返回结果码
2015-09-18 11:12 68100: pppd已经断开,或者已经成功建立连接后请求方又中 断 ... -
3G相关定时器说明
2014-08-06 10:05 838计时器和计数器RNC 计 ... -
PDP激活被拒绝原因码表
2012-07-19 20:55 2752om: http://wireless.agilent.com ... -
PDP激活被拒绝原因码表
2012-07-19 20:15 0方便查询:这些值是真正的原因,但要注意分析问题时尤其对二次开发 ... -
TCP重传
2012-07-03 20:23 1125为什么TCP存在重传 TCP是 ... -
MTK NVRAM
2012-06-28 19:50 1613nvram是程序用来搭建FAT文件系统的那一块,是fla ... -
TBF与PDP激活
2012-06-18 21:28 1153PDP先激活,CCCH上下行TBF建立流程如下:1、下行TBF ... -
C语言中的内存对齐问题
2012-05-29 10:31 753.C语言中的内存对齐 ... -
MTK内存管理
2012-04-20 00:36 4532MTK 内存管理 分类: MTK2011- ... -
WinSocket编程——原始套接字[转]
2012-03-26 09:23 4848WinSocket编程——原始套接字[转] ... -
TCP三次握手各种异常
2012-03-20 11:04 1362和TCP三次握手有关的面试题 分类: 网络 ... -
Windows API串口编程参考
2012-03-15 14:12 3349Windows API串口编程参 ... -
V.24 & V.35
2012-03-12 20:25 918V.24 & V.35 (2011-08 ... -
【C语言】while与for执行效率对比【转】
2012-03-12 19:00 1589【C语言】while与for执行效率对比【转】 C语言 ... -
[转]ASCII,Unicode,UTF-8,GB2312编码之间的关系
2012-03-12 18:59 902[转]ASCII,Unicode,UTF-8,GB231 ... -
NVRAM的简单添加 【转】
2012-02-29 10:14 815NVRAM的简单添加 MTK 在这里我只 ... -
MTK获取基站的cell_id 【转】
2012-02-29 10:07 1026MTK获取基站的cell_id 博客分类 ... -
MTK的HTTP连接方式
2012-02-29 10:08 843MTK的HTTP连接方式 博客分类: ... -
MTK中怎样创建和使用lib
2012-02-28 17:17 696MTK中怎样创建和使用lib 博客分类: MT ... -
MMI 和L4通信【转】
2012-02-28 17:16 1097MMI 和L4通信 博客分类: MTK ...
相关推荐
Mediatek SoCs General-Purpose Timer handling.
C语言02-Timer0-Timer1-Timer2-Timer3-Timer4测试程序(STC32G-DEMO-CODE-220311kw)C语言02-Timer0-Timer1-Timer2-Timer3-Timer4测试程序(STC32G-DEMO-CODE-220311kw)C语言02-Timer0-Timer1-Timer2-Timer3-Timer4...
最新单片机仿真 TIMER0与TIMER1控制条形LED最新单片机仿真 TIMER0与TIMER1控制条形LED最新单片机仿真 TIMER0与TIMER1控制条形LED最新单片机仿真 TIMER0与TIMER1控制条形LED最新单片机仿真 TIMER0与TIMER1控制条形LED...
单片机C语言程序设计 TIMER0与TIMER1控制条形LED(有源码)单片机C语言程序设计 TIMER0与TIMER1控制条形LED(有源码)单片机C语言程序设计 TIMER0与TIMER1控制条形LED(有源码)单片机C语言程序设计 TIMER0与TIMER1控制...
MTK常用的不同类型的timer的介绍,如Starttimer,uem_start_timer等等
本文实例讲述了C#中Forms.Timer、Timers.Timer、Threading.Timer的用法分析,分享给大家供大家参考。具体分析如下: 在.NET Framework里面提供了三种Timer ① System.Windows.Forms.Timer ② System.Timers.Timer ③...
单片机C语言程序设计31 TIMER0与TIMER1控制条形LED(基于8051+Proteus仿真)单片机C语言程序设计31 TIMER0与TIMER1控制条形LED(基于8051+Proteus仿真)单片机C语言程序设计31 TIMER0与TIMER1控制条形LED(基于8051+...
加Timer控件 timer1 编写其Tick事件为 private void timer1_Tick(object sender, EventArgs e) { this.toolStripStatusLabel3.Text = "系统当前时间:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); } ...
基于Verilog的timer计时器,start开始,到达设置计时点时输出一个高电平up信号
ajax_timer ajax_timer ajax_timer ajax_timer
学习32位单片机的基础例程,主要针对初学者对TIMER的编程学习
addintimer高级版是一个万能定时器,非常好用,强烈推荐,可以当时间定时器来用,还有整点报时,定时录音等功能
资深MTK平台驱动程序员经验个人详细总结,全手打,网上下不到,资料内容非常详细。 MTK平台充电小结 一、 锂电池基础 1、 锂电池类型主要有普通(4.2V)和高压(4.35V)两种锂电池。现在我们项目用的都是4.35v的高压...
对POSIX timer的面向对象的封装。
51单片机Proteus仿真实例 TIMER0控制流水灯51单片机Proteus仿真实例 TIMER0控制流水灯51单片机Proteus仿真实例 TIMER0控制流水灯51单片机Proteus仿真实例 TIMER0控制流水灯51单片机Proteus仿真实例 TIMER0控制流水灯...
1.Timer Mechanism 2.Hardware Timer 3.Timer in OS 4.Timer in APP 5.Timer in Qemu
c8051f340 TIMER0定时器中断,通过定时器达到所需的功能
Timer Input Capture using stm8
单片机C语言程序设计TIMER0控制流水灯(基于8051+Proteus仿真)单片机C语言程序设计TIMER0控制流水灯(基于8051+Proteus仿真)单片机C语言程序设计TIMER0控制流水灯(基于8051+Proteus仿真)单片机C语言程序设计...
arm generic timer prelim data