- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式讲座—作业
嵌入式软件设计讲座作业 吴战国 2009年 11月25日 作业: 任务间通信机制(以μC/OS/ii为例) 方法1:采用共享内存的方法,并用信号量保护数据 方法2:采用邮箱传递采样数据 要求:键盘扫描任务发送消息队列给显示任务,以改变温度、压力数据的显示内容 提示: 1、先分析任务及其优先级,并画出任务间数据传递关系 2、分析需要哪些数据结构?需要创建哪些信号量、邮箱和消息队列? 3、在1、2基础上,划分任务及它们之间的接口,本小组2人分别编制不同的任务代码。注意编码规范! 4、联调 1.系统分析 系统将要实现的功能 根据系统功能划分任务 各任务的主要功能 各任务之间的的关系 各任务之间的通信方式 1.1 系统功能 用STM32的ADC采集四路模拟信号,经过标度变换后在OLED上实时显示。四路模拟信号由四个电位器提供。 通过STM32开发板上的三个按键OLED显示内容以及显示亮度 1.2 任务划分 ADC任务:采集四路模拟信号,经过AD转换后,将转换结果存储 标度转换任务:将AD转换结果,根据实际需要显示的值,做标度变换,并将转换结果发送到LCD任务 LCD显示任务:将标度变换后的值实时显示 按键任务:通过按键控制LCD显示的内容,以及显示亮度和背景亮度(中断实现) 1.3 任务间通信 2. 系统软件设计 创建工程,添加库文件 创建任务 定义任务间的信号量和邮箱 配置STM32的相关端口 编写ADC任务,并单独调试 编写标度转换任务,并测试与ADC任务间的通信 编写LCD任务,调试前三个任务间的通信 编写,调试按键任务(中断任务) 2.1 创建工程 2.2 创建任务 #define APP_TASK_START_PRIO 3 //设置START任务的优先级 #define APP_TASK_KBD_PRIO 4 //设置KBD任务的优先级 #define APP_TASK_ADC_PRIO 5 //设置ADC任务的优先级 #define APP_TASK_USER_IF_PRIO 7 //设置LCD任务的优先级 #define APP_TASK_SCALE_TRANS_PRIO 6 //设置SCALE_TRANS任务的优先级 2.2.2 设置堆栈容量 #define APP_TASK_START_STK_SIZE 128 //设置START任务堆栈的容量 #define APP_TASK_USER_IF_STK_SIZE 256 //设置LCD任务堆栈的容量 #define APP_TASK_KBD_STK_SIZE 64 //设置KBD任务堆栈的容量 #define APP_TASK_ADC_STK_SIZE 128 //设置ADC任务堆栈的容量 #define APP_TASK_SCALE_TRANS_STK_SIZE 128 //设置SCALE_TRANS任务堆栈的容量 2.2.4 创建任务 2.3 定义任务间的信号量和邮箱 OS_EVENT *ADC_Scale_Sem; //声明事件控制块(采集任务与标度变换任务之间的信号量) OS_EVENT *Scale_LCD_Mbox; //声明事件控制块(标度变换任务与显示任务之间的邮箱) OS_EVENT *KBD_LCD_Mbox; //声明事件控制块(按键任务与显示任务之间的邮箱) 创建信号量和邮箱 2.4 配置STM32个端口 2.5 ADC任务 STM32与ADC相关的配置 GPIO配置 ADC配置 DMA配置 RCC配置 ADC任务相关的声明和定义 static u16 average(vu16 ADCDataTab[], u8 nChannel); extern vu16 ADC_ConvertedValue[80]; vu16 ADCCurrentValue[4]; //定义存放ADC当前采集值存放数组 ADC任务 2.6 标度变换任务 与标度变换任务相关的声明和定义 vu16 ADCTransValue[4]; //定义存放LCD当前显示值存放数组 标度变换任务 2.7 按键任务(中断任务) STM32与
文档评论(0)