- 3
- 0
- 约1.32万字
- 约 10页
- 2019-10-26 发布于湖北
- 举报
邮箱内存池定时器的使用
一.实验目的
1.了解邮箱、内存池、定时器的基本使用;
2.熟练使用邮箱+内存池实现多个线程间通信。
二.实验设计
本实验演示邮箱+内存池在RT-Thread 中作为线程与线程、中断与线程间通
信的手段是如何使用的。
创建2个线程,一个定时器对象,一个静态的邮箱对象,两个内存池。
其中一个线程往邮箱中发送邮件,邮件内容为填充了AD1采样数据+RTC
时间信息的内存块首地址。
定时器也会周期性往邮箱中发送邮件,邮件内容为填充了AD2采样信息
的内存块首地址。
一个线程往邮箱中收取邮件。
以下为示意图
三.程序设计
这个程序会创建2个动态线程,一个定时器对象,一个静态的邮箱对象,
两个内存池。其中一个线程往邮箱中发送邮件,邮件内容为填充了信息的内存块
首地址。定时器也会周期性往邮箱中发送邮件,邮件内容为填充了信息的内存块
首地址。一个线程往邮箱中收取邮件。具体程序代码以及各行注释(黑色部分)
如下:
#includertthread.h
#includeboard.h
#includelcd1602.h
#includeapp.h
rt_uint8_ttimebuf[20]= {0,0,0,0,-,0,0,-,0,0,-,0,0,:,0,0,:,0,0,\0};
/* 指向线程控制块的指针 */
staticrt_thread_ttid1=RT_NULL;
staticrt_thread_ttid2=RT_NULL;
/* 邮箱控制块 */
staticstructrt_mailboxmb;
/* 用于放邮件的内存池 */
staticcharmb_pool[256];
/* 用于放AD1采样数据+RTC时间信息的内存池 */
staticrt_uint8_tmempool[4096];
/* 内存池控制块 */
staticstructrt_mempoolmp1;
/* 用于放AD2采样数据信息的内存池 */
staticrt_uint8_tmempool[4096];
/* 内存池控制块 */
staticstructrt_mempoolmp2;
/* 定时器控制块*/
staticrt_timer_ttimer1;
staticvoidtimer_timeout(void*parameter)
{ char*pblock;
rt_uint32_t ADC_Data=0;
/* 申请内存块 */
pblock=rt_mp_alloc(mp2,0);
if(pblock!=RT_NULL){
/*AD2数据信息的采集,*/
1 AD0CR=(AD0CR0x00FFFF00)|0x02|(124); /* AD0.1
() 设置 ,
并进行第一次转换*/
2 while((AD0DR0==0); /* */
() 等待转换结束
3 ADC_Data=AD0DR; /* ADC */
() 再次读取 结果
4 AD0CR=AD0CR|(124); /* */
() 再次启运转换
5 while((AD0DR0==0); /* */
()
您可能关注的文档
最近下载
- 人教版美术七年级下册《广而告之》课件.pptx VIP
- (新教材)教科版四年级上册科学期末复习全册知识点总结.doc VIP
- 茶艺师(基础知识)PPT课件.pptx
- 大学生就业与创业指导(职业院校就业与创业指导课程)PPT完整全套教学课件.pptx
- 高效蒙脱石SHV在水性工业漆中的应用.pdf VIP
- DB21T 706-2025森林经营技术规程.pdf VIP
- 新疆公路工程建设标准化手册.pdf VIP
- 重大版(2023)五年级下册信息科技 第7课 模块的妙用课件.pptx VIP
- 气压焊轨设备及焊接工艺(20140519铁总培训讲稿).pptx VIP
- 中职《中华优秀传统文化选讲》 第三讲 隽永典雅——艺术瑰宝.pptx VIP
原创力文档

文档评论(0)