hanshuyujifen2的进程帖
9
------------------------------------------华------丽------的------分-----隔---符---------------------------------------
2013.06.30
实验10:系统时间管理
系统时间管理函数用来对系统时间进行操作
uTenux提供了三个系统时间相关API。分别用于设置系统时间、获取系统时间和获取系统工作时间。
其中,前两个比较蛋疼。时间的表示是从1985年1月1日0:00:00(GMT)开始以ms为单位的累加。要想获得可读的时分秒,还得手动转换。
tk_get_otm获取的系统工作时间也是一ms表示的,只是这个数据比较直观,不需要再去转换了。
【实验说明】
我懒的去转换时间,本实验使用验证三个函数,用ms表示时间。
首先设置系统时间,然后读出十次otm,最后读出系统时间。看看读出的系统时间与写入的时间的差别。其实这时,板子上RTC功能没有打开,设置系统时钟这个功能基本等于没用。
我比较懒,这就就在例程的基础上添加几行代码。没有手动输入各个函数。
【代码及输出】
------------------------------------------华------丽------的------分-----隔---符---------------------------------------
2013.06.30
实验11:周期性处理
周期性处理程序是一个在规则的时间间隔内启动的时间事件处理程序。与任务不同,周期性处理函数不是死循环。执行一次就退出,但是不能单独存在。
建立好周期性处理函数之后,原任务就不用管了。OS会周期性地执行这个任务。这个周期性的函数,不受优先级限制。只要到期就会运行一次。不管多高优先级的任务在使用MCU。
在建立每个周期性处理程序时,会为它们设定程序启动时的时间间隔(周期时间)和周期相位。周期时间t就是每隔t时间会启动一次处理函数,周期相位m,是指每个周期的第m时间启动这个处理函数。
SVC描述
1、创建周期性处理程序
ID cycid=tk_cre_cyc(T_CCYC* pk_ccyc);
其中T_CCYC是创建结构体,定义如下
typedef struct t_ccyc {
VP exinf; /* 扩展信息 */
ATR cycatr; /* 属性 */
FP cychdr; /* 处理程序入口地址*/
RELTIM cyctim; /* 处理周期*/
RELTIM cycphs; /* 相位 */
UB dsname[8]; /* Object name */
} T_CCYC;
2、创建之后就实验tk_sta_cyc让周期函数可以运行了
3、停止周期运行tk_stp_cyc,删除周期处理tk_del_cyc,只要提供一个ID即可。
【实验描述】
1、创建一个周期运行程序并启动。
2、创建一个优先级较高的任务TaskA,启动后进入死循环。即不给初始任务再次运行的机会
3、周期处理函数,处理20次之后,自动停止并删除自己。
【代码及输出】
例子太简单了,自己家了点内容。
------------------------------------------华------丽------的------分-----隔---符---------------------------------------
2013.06.30
实验12:警报处理
警报处理程序是一个在特定时间启动的时间事件处理程序。警报处理也是有OS直接管理的。创建警报处理后,并不能立即激活警报,只有当调用了tk_sta_alm之后才能激活这个警报。
激活警报时,需要为警报处理提供警报持续时间。警报持续时间结束,或者手动调用tk_stp_alm停止警报时,警报停止。
这个就像大楼里边的火警,发生火情(事件)激活警报,警报开始工作。警报持续一段时间,该知道发生火情的人都知道了,警报就停止了。也可能是虚惊一场,然后大楼管理员按了停止按钮,警报就停止了。
uTenux提供的警报处理API:
1、创建警报:
IDalmid=tk_cre_alm(T_CALM*pk_calm);
创建结构体如下:
typedef struct t_calm {
VP exinf; /* Extended information */
ATR almatr; /* Alarm handler attribute */
FP almhdr; /* Alarm handler address */
UB dsname[8]; /* Object name */
} T_CALM;
即只需要提供警报处理的函数入口和处理程序属性即可。
2、激活警报
ER ercd= tk_sta_alm(ID almid,RELTIM almtim);
提供警报处理的ID和警报持续时间。即可
3、停止警报
ER ercd= tk_stp_alm(ID almid);
将警报almid停止掉。
【实验描述】
1、创建一个警报,并启动
2、在警报处理函数中,输出一段信息
3、等待警报时间到,自动结束
4、删除警报,返回
【代码及输出】
实验12:警报处理.rar
------------------------------------------华------丽------的------分-----隔---符---------------------------------------
更换板子,先在在STM32F4上弄。
直接从硬件弄起太麻烦了。不利于了解OS,毕竟这次活动OS是关键。
我要利用这次活动提高直接使用OS的水平。
还有就是,那一大堆东西:开发板,仿真器,电源,串口线 桌子上没地方堆了
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 | |
【分享评测,赢取加热台】使用8051单片机驱动WS2812被打赏40分 |