智能车制作

标题: codewarrior相关资料 [打印本页]

作者: qweasdqweasd    时间: 2010-4-5 12:18
标题: codewarrior相关资料
利用CodeWarriorTM 的PE 功能生成SPI 模块的参考代码
Strong Chen
1. 用CodeWarriorTM 的wizard 引导生成一个工程(project),将它取名为DP256B_PE_SPI。这里是用DP256B
做例子,实际上其他芯片的操作都是一样的,如图1 所示:
图1. 用HC(S)12 New Project Wizard 引导生成一个project
2. 收入project 名,选定存放路径后点击OK。其他的步骤按照提示操作即可,只是在图2 所示这一步中,
要选择Yes,开启Processor Expert 的功能:
图2. 开启PE 功能
3. 然后继续后面的选择,可根据project 的需要进行不同的选择和设置。最后点击Finish,可以看到
CodeWarriorTM 会自动启动PE,如图3 所示:
图3. CodeWarriorTM 自动启动PE
4. 然后选择所需要的封装,点击OK 即可,如图4 所示。
图4. 选择封装
5. 图5 就是PE 启动完成后的窗口界面。点击左面的Processor Expert 书签,可以看到现在Beans 里面还是
空的。然后将Bean Selector 中的CPU Internal Peripherals 项展开。
图5. PE 启动完成后的窗口界面
6. 再将CPU Internal Peripherals 里的Communication 项展开,然后双击其中的SynchroMaster,可以看到如
图6 所示,Beans 中增加了一个SM1:SynchroMaster。但是这里有几个红色的感叹号和错误提示,表示其中
有错误。
图6. Beans 中增加了一个SM1:SynchroMaster
7. 将Bean Inspector SM1: SynchroMaster 最大化,我们可以看到错误提示是时钟的设置。点击时钟
设置栏后的省略号按键,就跳出了一个时钟设置窗口,如图7 所示。其中有一个乱码,可以猜到
应该是uS。我们将单位选择为频率Hz:
图7. 时钟设置窗口
8. 在可能值列表框中选择一个需要的值,点击一下,就弹会出一个选择菜单,如图8 所示。点击你需要的
值,如100kHz,就可以看到相应的数值出现在上面的Requested baud rate 栏中了:
图8. 选择需要的波特率时钟
9. 此时可以看到波特率设置成了100kHz,而且错误标志也没有了。可以看一下在这一页中还有没有其他
的设置需要修改。一般是不需要修改的。现在这一页列出的是SPI 的一些基本属性,如果用户需要更高级
的设置话,可以点击Items Visibility,选择Advanced View 或Expert View,可以看到如图9 所示,出现了
更多的选择项。这项功能可能需要license 的支持。
图9. 更多设置选择在Advance View 或Expert View 中
10. 点击Methods 书签,打开Bean Inspector 的Methods 设置窗口,如图10 所示。这里用来设置PE 生成哪
些有关于SPI 的函数。当鼠标移动时,各个函数的说明就会显示出来。同样,在Basic View、Advanced View
和Expert View中,可以选择的函数是不同的。一般来说,我们就按照它的缺省设置做就可以了。
图10. 函数选择窗口
11. 在Events 页中,选择是否生成中断和错误处理函数。注意这里不是选择是否产生中断,而是选择是否
在中断中插入相应的处理函数(子程序)。是否产生中断是在Properties 页中设置的。将左边Beans 中的
SM1:SynchroMaster 展开,就可以看到它生成了哪些函数,如图11 所示。绿色E 表示中断处理函数,蓝色
M表示非中断函数。
图11. 设置完成
12. 如果不做其他修改的话,SPI 的设置就完成了。将主菜单中的Processor Expert 项下拉,点击其中的
Generate Code ‘DP256B_PE_SPI.mcp’,PE 就会自动生成相应的代码,如图12、13 所示。
图12. PE 自动生成代码的命令菜单
图13. PE 自动生成代码的过程
13. 打开CodeWarriorTM左边的project窗口中的Files 页,可以看到PE生成了多个目录和文件,包括Generated
Code 和User Modules 等,如图14 所示。其中User Modules 中的DP256B_PE_SPI.c 就是主函数main 所在
的文件。双击即可将其打开。
图14. PE 生成的SPI 主函数程序文件
14. 可以看到很多目录和文件左侧有红色的小勾,表示它们还没有编译过。点击Make 按键,就可以将所有
文件编译并连接。Make 完成后,就已生成了S19 二进制文件。但此时主程序只是将MCU初时化后进入一
个空的for 循环,没有做任何事情。假设让主循环不停地通过SPI 发送一个数i,而i 随着for 循环递增变
化。我们把i 加入程序中,如图15 表示。要把发送字节函数SendChar 加到程序里非常简单,只需在project
的Processor Expert 页中,用鼠标点中SendChar 函数,然后把它拖到文件中,释放到合适的位置即可。不
要忘记在后面加上分号“;”。再将参数i 加进函数中。
图15. 将函数SendChar 加入文件中
15. 如果在发送数据的同时还要接收数据,那么同样将RecvChar 函数拖放进文件即可。注意RecvChar 函
数的参数是一个地址,所以要将&temp 作为其参数。如图16 所示。
图16. 将函数RecvChar 加入文件中
16. 这样,一个用PE 生成的SPI 程序就大功告成了。编译后将它写入芯片,就可以在PS6、PS5 和PS4 口
上看到数据波形了。如果要查看某个函数的具体内容,只需用鼠标右键点击此函数,在选择菜单中选择
Go to function definition of SM1_SendChar,就会自动转入并打开此函数的定义文件,如图17 所示。
图17. 查看函数的定义
作者: zhoulxm    时间: 2010-4-5 16:00

作者: qingpingpei    时间: 2011-2-14 09:40
回复 1# qweasdqweasd


    很有用,3Q
作者: dich    时间: 2011-9-21 23:06
很不错




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2