- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DMSSUI基础培训(三)Utility
DMSS UI 基础培训(三) EFS, NV, Timer EFS 文件操作 空间查询 一些限制 文件操作 fs_open() fs_close() fs_read() fs_write() 等等 参考80-24875-2_X10.pdf 空间查询 fs_space_available() fs_space_used() 数据文件夹的空间查询 df_space_test() df_get_space() df_put_space() 一些限制 同时能打开的文件数FS_MAX_OPEN_FILES 文件名的最大长度FS_FILENAME_MAX_LENGTH_P 文件名中非ASCII字符需转换成UTF8码 UTF8toUCS2() UCS2toUTF8() NV 什么是NV Nonvolatile. 非易失性的。能为我们保存数据,在关机(掉电)后不丢失。 为什么使用NV 易于使用,对文件系统进行封装,屏蔽了文件操作。仅使用ID即可存取数据。 NV分类 标准类型单个元素 标准类型数组(一次访问整个数组) 自定义类型单个元素 自定义类型数组(一次访问数组中的一个元素)要求自定义类型的第一个成员为word型,名称为address。 提交NV需求 ID号,NV_XXX_I NV所属的类型 默认值(可选) 自定义的结构(可选) 数组的大小(可选) UI task使用NV 写NV, ui_put_nv( ) 只需提供要写的NV项的ID号和输入数据指针。 读NV, ui_get_nv( ) 只需提供要读的NV项的ID号和接收数据的buffer指针 注意:访问数组的单个元素前,需对address赋值,以指定读取数组中的哪个元素 UI 中的Timer 系统为UI提供了Timer服务。当指定的时间耗尽后发SIG通知UI task。UI中所有的Timer都使用同一个信号UI_TIMERS_SIG,使用标志组timeflags来对应具体的Timer。在处理UI_TIMERS_SIG时,逐位判断timeflags中的每一位,如果某位不为0,则该位对应的时钟耗尽了,进行相应的处理即可。 使用已有的Timer 在确定不会产生冲突的前提下,可以使用已有的Timer。 找到与Timer相对应的处理函数,这里指检查timeflags后的处理函数。添加相应的代码。但这里通常是传递了一个事件到状态机中处理,所以只需在状态机中对该事件进行处理即可。 添加新的Timer 定义一个clk_cb_type类型的变量 在ui_cbt_init()中使用clk_def()初始化这个变量 将timeflags中某个空闲的位分配给这个timer 定义一个callback函数,当timer耗尽时将调用这个函数。注意这个函数是在中断环境下执行的。所以一般这个函数只用来置timeflags中的相应位和给UI发UI_TIMERS_SIG信号 定义一个set函数用来启动这个timer。具体可参考其他timer的set函数 在UI_TIMERS_SIG信号处理函数中检查timeflags对应的位,添加代码进行处理。通常是传递一个事件到状态机。 Timer的扩展 Timer 的扩展(cont.) * * 当timeflags中没有空闲位了该怎么办? 用类似timeflags对UI_TIMES_SIG的扩展的方法,可以使用ex_timeflags对timeflags中的某一位进行扩展。 假定对timeflags中的TF_EX_TIMER位进行扩展 回调函数中除了需要设置timeflags中的TF_EX_TIMER位和发UI_TIMES_SIG信号外,还需设置ex_timeflags中的具体位以指明哪个扩展的timer时间到了。 { ui_set_sigs( ex_timeflags, UI_XXX_TIMER ); ui_set_sigs (timeflags, TF_EX_TIMER); (void) rex_set_sigs( ui_tcb, UI_TIMERS_SIG ); } 2. 在handle_timers( )函数中 handle_timers() { … If( timeflags TF_EX_TIMER != 0) handle_ex_timers(); … } 3. handle_ex_timers()函数类似handle_timers()函数。 逐位对ex_timeflags判断即可 *
文档评论(0)