实验一、dip_switch 按键实验一、实验目的1.了解DIP_SWITCH 的用处。
2.了解C6748 连接的控制DIP_SWITCH 方法。
3.熟悉CCS 操作,学会使用工程,学习编译和下载、运行程序。
二、实验设备1.PC 兼容机一台;操作系统为WindowsXP 或者以上版本。
2.ICETEK-C6748-AE 实验箱一台。
如无实验箱则配备ICETEK-XDS100v2+仿真器和ICETEK–C6748-A,+5V 电源一只。
3.USB 连接电缆一条。
三、实验原理ICETEK-C6748-AE 通过GPIO 来控制拨码开关的,通过对对应的GPIO 引脚的读,可以知道拨码开关的状态,再通过对GPIO 控制led 的显示,把拨码开关的状态显示出来。
2.实验程序流程图:四、实验步骤1.实验准备:(1) 连接实验箱:(2) 准备进行硬件仿真:(3) 检查ICETEK- C6748-KB 板上跳线选择器U15 为0000。
2.启动Code Composer Studio v53.打开工程文件:工程文件目录为:C:\ICETEK\ICETEK-C6748-AE\Lab0301-Led_dip打开源程序LED.c 阅读程序,理解程序内容。
4.点击图标,ccs 会自动连接,编译和下载程序。
5.运行程序,观察结果。
6.退出CCS。
五、实验结果[C674X_0] ------------------------------------------------------------C6748-A LED and Dip Switch TestTest Description----------------this code will begin by flashing the leds, then it will sit ina forever loop checking the dip switches. when a change in thedip switches is detected, a message will be printed to stdoutand an led will be toggled.------------------------------------------------------------Initialize the Required BSL Modules-----------------------------------Execute Test------------flash led patternsloop forever printing dips switch status and setting leds based on dips拨动相应的拨码开关 SW1,对应的 led 灯会跟着亮灭六、问题与思考拨码开关用到的gpio 口是与EMIFA 数据线复用的,应用时注意避免硬件间的冲突。
七、实验心得通过这次实验我们了解了dip_switch 按键的使用方法,熟悉了CCS 操作,了解了C6748 连接的控制DIP_SWITCH 方法。
实验二.RTC 实验一、实验目的1.了解RTC 的用途。
2.了解C6748 连接的控制的访问RTC 的方法。
3.熟悉CCS 操作,学会使用工程,学习编译和下载、运行程序。
二、实验设备1.PC 兼容机一台;操作系统为WindowsXP 或者以上版本。
2.ICETEK-C6748-AE 实验箱一台。
如无实验箱则配备ICETEK-XDS100v2+仿真器和ICETEK–C6748-A,+5V 电源一只。
3.USB 连接电缆一条。
三、实验原理RTC 是Real-Time Clock, 是实时时钟的意思,C6748 内部集成了实时时钟功能,利用这一功能可以实现和时间相关的产品设计和开发。
四、实验步骤1.实验准备:(1) 连接实验箱:请参看本书第三部分、第一章、二.ICETEK DSP 教学实验箱的硬件连接。
(2) 准备进行硬件仿真:请参看本书第三部分、第一章、四、3。
(3) 检查ICETEK-C6748-KB 板上跳线选择器U15 为0000。
2.启动Code Composer Studio v53.打开工程文件:目录为:C:\ICETEK\ICETEK-C6748-AE\Lab0302-RTC打开源程序LED.c 阅读程序,理解程序内容。
4.点击图标,ccs 会自动连接,编译和下载程序。
5. 程序分析程序运行后,进入main_rtc.c 程序中的main()函数,显示“C6748 RTC Test”。
调用TEST_RTC 函数进行具体测试,程序先初始化RTC 模块,然后设定一个时间,再延时10 秒,再读出新的时间与前面的时间比较是否差了10 秒,并根据函数返回值显示“PASS.”表示没有错误发生;如果显示“FAIL.”表示有错误被检查到。
6.运行程序,观察结果。
7.退出CCS。
五、实验结果[C674X_0] ------------------------------------------------------------C6748-A RTC TestTest Description----------------this code will configure the RTC module, set the time, andverify the time is correct after 10 seconds.------------------------------------------------------------Initialize the Required BSL Modules-----------------------------------Execute Test--------------- Set time: Wednesday April 18, 80 15:00:00 (04/18/80 15:00:00) ---wait 10 seconds...Get time: 04/18/80 15:00:11********** C6748-A TEST PASSED **********测试通过六、实验心得通过这次实验了解了RTC的用途,了解了C6748连接的控制的访问RTC的方法,学会了使用工程。
实验三、定时器一、实验目的1.了解定时器的用途。
2.了解C6748 连接的控制的访问定时器的的方法。
3.熟悉CCS 操作,学会使用工程,学习编译和下载、运行程序。
二、实验设备1.PC 兼容机一台;操作系统为WindowsXP 或者以上版本。
2.ICETEK-C6748-AE 实验箱一台。
如无实验箱则配备ICETEK-XDS100v2+仿真器和ICETEK–C6748-A,+5V 电源一只。
3.USB 连接电缆一条。
三、实验原理1.定时器的控制:TMSC6748A 中包含了3 个64 位的通用定时器,和一个64 位通用/看门狗定时器,定时器可以作为双32 位定时器,64 位通用定时器和看门狗,定时器时钟来自外部时钟或者内部时钟通过寄存器TCR 中的CLKSRC34 和CLKSRC12 控制。
本例程是用双32 位定时器。
在对定时器做配置时,TIM34 用作配置定时器计数值,PRD34 用来存储定时器的输入时钟的记数周期值,TGCR 用来对定时器进行全局配置,本例程中把定时器配制成双32 位unchained 模式。
TCR 是定时器控制寄存器,在本例程中定时器被配置成连续工作模式。
四、实验步骤1.实验准备:(1) 连接实验箱:(2) 准备进行硬件仿真(3) 检查ICETEK-C6748-KB 板上跳线选择器U15 为0000。
2.启动Code Composer Studio v53.打开工程文件:目录为:C:\ICETEK\ICETEK-C6748-AE\Lab0302-RTC打开源程序LED.c 阅读程序,理解程序内容。
4.点击图标,ccs 会自动连接,编译和下载程序。
5. 程序分析程序运行后,进入main_Timer.c 程序中的main()函数,显示“C6748-ATimer Test”。
调用TEST_Timer 函数进行具体测试,程序先初始化led 和定时器模块,定时器在定时时间到的时候产生中断,然后中断函数里面使能Led,连续20 次后关闭定时器,并根据函数返回值显示“PASS.”表示没有错误发生;如果显示“FAIL.”表示有错误被检查到。
6.运行程序,观察结果。
7.退出CCS。
五、实验结果Led 灯连续亮灭20 次。
六、实验心得通过本次实验熟悉用计算机编程软件操作,梯形图的输入,编辑和检查程序并且掌握程序在线运行的步骤以及学习如何调试程序的基本方法,练习了使用定时器做通电、断电、通断电以及闪烁报警的延时效果,合理地配置定时器的常开、常闭开关可以达到要求的延时。
实验四、A/D转换器应用一、实验目的1、熟悉ADS开发环境2、熟悉C语言编程3、了解A/D转换相关知识二、实验设备LPC2000开发板、PC机、JTAG调试板、配料生产线控制技术综合试验台三、实验内容1、建立ADS开发环境2、编程实现A/D转换3、计算A/D转换后的电压值四、实验说明W1的分压信号连接到AD0.5,连通串口到PC,调节电位器W1,按下INT0键(该按键连接到P2.10),每次按下均会触发一次AD转换,通过串口调试工具观察结果。
串口调试工具波特率须设置为115200。
五、实验程序#include "config.h"#include <stdarg.h>volatile uint32 eAdcValue; // 存放AD结果寄存器内容的全局变量volatile uint8 eAdcFinish; // 发送AD转换结果给上位机的标志/********************************************************************************** ************* 函数名称: Uart0Printf*** 函数描述:通过串口格式化输出字符串*** 入口:字符串(可变变量个数)*** 出口:输出字节数*********************************************************************************** *********/int Uart0Printf(const char *fmt,...){int cnt;va_list ap;static char s tring[512];static char *s = NULL;if(s == NULL){uint16 fdiv;PINSEL0 = (PINSEL0 & ~(0x0fU << 4)) | (0x05 << 4);U0LCR = 0x83; // DLAB=1,允许设置波特率fdiv = (Fpclk / 16) / 115200; // 设置波特率为115200bpsU0DLM = fdiv / 256; // 设置波特率分频器U0DLL = fdiv % 256; // 设置波特率分频器U0LCR = 0x03; // 禁止波特率设置}s = string;va_start(ap,fmt);cnt = vsprintf(string,fmt,ap);while (*s){U0THR = *s++;while ((U0LSR & 0x40) == 0); // 等待数据发送完毕}va_end(ap);return cnt;}/********************************************************************************** ************* 函数名称: VicRegISR*** 函数描述:注册中断程序*** 入口: no : VIC 通道*** pri : VIC 优先级别** isr : VIC 中断服务程序*** 出口: 0:失败 1:成功*********************************************************************************** *********/uint8 VicRegISR(uint32 no, uint32 pri, uint32 isr){if(no > 31) return 0;if(pri > 15) return 0;*(volatile uint32*)((&VICVectAddr0)+no) = isr; //设置中断服务函数*(volatile uint32*)((&VICVectPri0)+no)= pri & 0x0F; //设置中断优先级VICIntSelect &= ~(1<<no);VICIntEnable = 1<<no;return 1;}/********************************************************************************** ************* 函数名称: AdcIrqException*** 函数描述: ADC 中断服务程序*** 入口:无*** 出口:无*********************************************************************************** *********/void __irq AdcIrqException(void){eAdcValue = ADDR5; // 读取ADC数据eAdcFinish = 1; // 使能串口发送ADC0数据的控制位VICVectAddr = 0x00; // 通知VIC中断处理结束}/********************************************************************************** ************* 函数名称: AdcInit*** 函数功能: ADC初始化*** 入口参数:无*** 出口参数:无*********************************************************************************** *********/void A dcInit(void){PCONP |= (1 << 12); // 必须打开ADC的功率控制位ADC才可以正常工作PINSEL3 |= ((unsigned)0x03) << 30; // 设置P1.31为AIN5功能/* 进行ADC模块设置 */AD0CR = (1 << 5) | // SEL=0x20,选择通道5((Fpclk / 1000000 - 1) << 8) | // CLKDIV=Fpclk/1000000-1,转换时钟为1MHz(0 << 16) | // BURST=0,软件控制转换操作(0 << 17) | // CLKS=0, 使用11clock转换(1 << 21) | // PDN=1,正常工作模式(2 << 24) | // START=2,当EDGE选择的边沿出现时启动AD转换(1 << 27); // 上升沿AD0INTEN = (1 << 5); // 使能AD通道5转换结束后产生中断}/********************************************************************************** ************* 函数名称: main*** 函数功能:主函数,进行5通道电压ADC转换,并把结果转换成电压值,发送到串口。