完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
下班后,闲来无聊,便学习RTT解解闷。今天终于宿舍有网线,把之前练习写的与大家共享。
事件,先看看RTT是如何描述事件的。主要用于线程间同步,可一对多,多对多。事件集合可以用一个32位的无符号整形变量表示。一个位代表一个事件。线程可以通过“逻辑与”或“逻辑或”与多个事件建立联系。 话不多说,文档里面讲得很清楚。工程里,创建三个线程,两静态线程用于控制LED,一动态线程用于控制KEY。按KEY0,红灯闪烁5次;按KEY1,绿灯闪烁5次;WK_UP无效! 静态线程需要手动为线程分配任务栈。感觉在说废话,直接讲事件的发送,接收好了。 事件的发送通过这个函数 rt_err_t rt_event_send (rt_event_t event, rt_uint32_t set),比如 rt_event_send(&key_event,1<<0) 是对置位0号事件。 事件的接收则通过这个函数 rt_err_t rt_event_recv (rt_event_t event, rt_uint32_t set, rt_uint8_t option, rt_int32_t timeout, rt_uint32_t *recved),比如想接收key_event事件集的0号事件可以这样写 rt_event_recv(&key_event, (1<<0),RT_EVENT_FLAG_OR|RT_EVENT_FLAG_CLEAR,RT_WAITING_FOREVER,&e) key_event是要接收的事件集,e是存放接收到的事件集。如果只是接收单个事件,要使用RT_EVENT_FLAG_OR,而RT_EVENT_FLAG_CLEAR则在接收到事件后,清除其标志位。 初始化一个静态事件使用这个函数 rt_err_t rt_event_init (rt_event_t event, const char *name, rt_uint8_t flag)。这里初始化一个键盘事件集 rt_event_init(&key_event, "key_event", RT_IPC_FLAG_FIFO) 不多说,上源码,还是挺好理解的。在mini板上面跑的。目前一个事件和信号量。都是键盘控制LED。在MDK这个文件夹里面打开工程。 RT_Thread_ALmini.rar (8.09 MB ) |
|
相关推荐
8个回答
|
|
|
|
|
|
已经kill了,文件夹35M的,压到这个级别。。。尽力了
|
|
|
|
哇哦,原来RTT这么大....
|
|
|
|
类似于Linux那种,组件比价丰富,而且这里面是两个工程,尽管我把共用那些会重复的文件。不知道论坛支不支持.7z格式,可能会再小一点
|
|
|
|
可以把stm32之外的bsp包删除。
|
|
|
|
这个的bsp只是跟mini板有关的
|
|
|
|
解压出错?
|
|
|
|
已经重新上传,之前是用7z压的,没想到用winrar会出错
|
|
|
|
只有小组成员才能发言,加入小组>>
671 浏览 0 评论
1095 浏览 1 评论
2461 浏览 5 评论
2790 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2625 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
643浏览 9评论
639浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
770浏览 6评论
614浏览 5评论
656浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-13 10:15 , Processed in 1.347792 second(s), Total 94, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号