预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于模型设计—自动代码生成之硬件驱动 声明:本文是《基于模型设计—自定义目标系统配置指南》的续集,主要和大家分 享RTW工具箱做自动代码生成时,硬件驱动的编写方法;本文涉及两方面的技术难点 CMEXS函数TLC文件和的编写,对这两方Help面不熟悉的童鞋可以先看看相关的 文档。 通过硬件驱动模块和上层C代码的一控制模块的结合,键式可以实现嵌入式系统 生成,所生成的代码无需做任何修改就可以直接下载到单片机中。 本教程开发环境如下:Matlab2010a+CodeWarriorV6.3+Mc9s08dz60 欢迎汽车QQ群:电子工程师加入89462451,讨论Matlab在汽车行业的应用,分 享自己的独门经验。 中断、IO、ADC、TPM、CAN、CCP、MCG……下一个模块硬件驱动,你也可以 ~~~ tntuyh@163.comGodman2011.8.20 附件列表: dz60——该文件夹为自定义目标系统文件 系统TLC文件、主函数TLC文件、_file_processTLC文件、_callback_handler 文件、_make_rtw_hook文件、模块TLC文件(及C-MexS函数) blocks——该文件夹为中断模块+数字输出模块的硬件驱动、 interrupt_init.c—中断模块CMEXS函数 interrupt_init.tlc—对应的TLC文件 dz60_dio_out.c—数字输出模块CMEXS函数 dz60_dio_out.tlc—对应的TLC文件 demos——该文件夹为测试用demo文件 interrupt_demo.mdl—测试模型,实现500ms和100ms任务 基于模型设计—自动代码生成之硬件驱动...........................................................3 1、自定义目标创建.....................................................................................3 2、软件整体架构.........................................................................................3 3、硬件驱动编写.........................................................................................5 3.1主函数文件硬件驱动......................................................................5 3.2中断模块硬件驱动..........................................................................5 3.3数字输出模块硬件驱动...................................................................9 1 基于模型设计—自动代码生成之硬件驱动 基于模型设计—自动代码生成之硬件驱动 1、自定义目标创建 本文的硬件平台为Mc9s08dz60,Matlab没有相应目标系统和现成使用模块,所以 需要自己创建自定义目标系统和编写相应的硬件驱动。关于自定义目标系统的创建可以 参考《基于模型设计—自定义目标系统配置指南》。DZ60的自定义目标系统源代码请 参考附件中dz60文件夹下的各文件,此处不再累述。 通过setup.m文件可以自动向Matlab中添加该目标系统。 2、软件整体架构 软件架构对嵌入式系统的重要性,就不再多说了。这里选择较为简单的中断驱动方 式来实现整个嵌入式软件的调度。 图1软件整体架构 如上图所示,所有的程序处理都是通过RTC中断来实现的,配置RTC模块每隔 2 基于模型设计—自动代码生成之硬件驱动 10ms产生一次中断,并对各个任务进行计时(如flag_100ms),当计时达到时调用相应 的任务处理函数(如task_100ms),而主函数中只对整个工程进行初始化(如interrupt_demo _initialize),在for循环中无需其余操作。RTC中断处理函数部分通过中断模块及TLC 文件来对生成的代码进行控制,后文将详述。 在模型搭建过程中,只需要调用中断模块,通过修改FunctionCallSystem中的内 容即可以实现各种任务的调度,如下图所示: 3 基于模型设计—自动代码生成之硬件驱动 图2软件架构之模块搭建 PS:当然,在实际的产品会根