单片机实验语言dma传输_第1页
单片机实验语言dma传输_第2页
单片机实验语言dma传输_第3页
单片机实验语言dma传输_第4页
单片机实验语言dma传输_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DMA传输实 SIIOT-SYX-0100物联网综合教1SIIOT-EMU1USB2【实验CC2530(DMA。该控制器可以被用来合理的进行。DMADMA在ADC和内存之间周期性地传输数据等。打开开始”菜单-〉“程序”-〉IARSystem-〉IAREmbeddedWorkbenchforMCS-51Evaluation->IAREmbeddedWordbench。使用IAR开发环境首先应建立一个新的工作区。在一个工作区中可创建一个或多个工程。用户打开IAREmbeddedWorkbench时,已经建好了一个工作区,也可选择FileProjectGreateNewProject(releaseFile\Save\Workspace,给工作区命名如“workspace11”,并指明存放路径。Project\AddFile,或者在工作区窗口中工程名上点击右键,在弹出的快捷*文件名称:ADC(Single功源编号描*文件名称:ADC(Single功源编号描 者 期:2012-10-/*包含头文件#include"ioCC2530.h" #include lcd#include"stdio.h" #include"String.h" //C语言字符串库的头文件/*定义DMA配置参数数据结构类型#pragmabitfields=reversedtypedef{ WORDSIZE 7/8bitsPRIORITY}#pragmabitfields=default/*定义枚举类型 函数名称 能:软件延时。延时指定的微秒数入口参数:usec延时参数,值越大延时时间越长,单位 意:此函数高度依赖於MCU架构和编译#pragmaoptimize=nonevoiddelayUS(unsignedshort{usec>>=1;while(usec--{}}函数名称 能:软件延时。延时指定的毫秒数入口参数:msec延时参数,值越大延时时间越长,单位 意:此函数高度依赖於MCU架构和编译#pragmaoptimize=nonevoiddelayMS(unsignedshort{}函数名称 能:选择系统时钟源(主时钟源入口参数XOSC_32MHz32MHz 16MHzRCvoidSystemClockSourceSelect(enumSYSCLK_SRCsource){unsignedcharosc32k_bm=CLKCONCMD&0x80;unsignedchar clkconcmd,clkconsta;系统时钟源(主时钟源)选择16MHzRC振荡器,定时器tick设置为时钟速度设置为 32KHz时钟源选择保持先前设置CLKCONCMD.OSC[b6]=1 CLKCONCMD.TICKSPD[b5..b3]001tick设置为16MHzCLKCONCMD.CLKSPD[b2..b0]=001时钟速度设置为16MHzif(source== /*CLKCONCMD.OSC32K[b7]CLKCONCMD=((osc32k_bm)|/*CLKCONCMD.OSC[b6]=1*/(0x01<<6)|\/*CLKCONCMD.TICKSPD[b5..b3]=001*/(0x01<<3)|\/*CLKCONCMD.CLKSPD[b2..b0]=001*/(0x01<<0));}时钟速度设置为 CLKCONCMD.OSC[b6]=0

CLKCONCMD.TICKSPD[b5..b3]000tick设置为32MHzCLKCONCMD.CLKSPD[b2..b0]=000时钟速度设置为32MHzelseif(source=={CLKCONCMD=(osc32k_bm/*|(0x00<<6)|(0x00<<3)|(0x00<<}/*等待所选择的系统时钟源(主时钟源)稳定clkconcmd=CLKCONCMD; {clkconsta }while(clkconsta!= }

函数名称 能:main函数入voidmain(void){ /*P0.4*/P0INP|=0x10;/*设置P0口为上拉P2INP|=(0x01<< //清屏/*在LCD上显示相关信息HalLcdWriteString("CC253xDMATransfer",HAL_LCD_LINE_1);HalLcdWriteString("K9toStart",HAL_LCD_LINE_2);/*定义DMA配置数据结构体变量*//*DMA源地址空间并初始化为将被DMA*/unsignedcharsrcStr[]="StringtobeDMAtransfer.";/*定义DMA目标地址空间unsignedchar/*LCD上显示DMA*/chars[31];sprintf(s,"SrcAdd:0x%04X",(unsignedshort)(&srcStr));HalLcdWriteString((char*)s,HAL_LCD_LINE_3);sprintf(s,"DstAdd:0x%04X",(unsignedshort)(&destStr));HalLcdWriteString((char*)s,HAL_LCD_LINE_4);memset(destStr,0,sizeof(destStr));DMA/*设置DMA配置参数/*源地址dmaCH.SRCADDRH=(unsignedchar)(((unsignedshort)(&srcStr))>>8);dmaCH.SRCADDRL=(unsignedchar)(((unsignedshort)(&srcStr))&/*目标地址dmaCH.DESTADDRL=(unsignedchar)(((unsignedshort)(&destStr))&/*可变长度模式选择dmaCH.VLEN= DMA/*传输长度dmaCH.LENH=(unsignedchar)(((unsignedshort)(sizeof(srcStr)))dmaCH.LENL=(unsignedchar)(((unsignedshort)(sizeof(srcStr)))/*字节/字模式选择*/dmaCH.WORDSIZE=0x00; /*传输模式选择dmaCH.TMODE= /*触发源选择dmaCH.TRIG= DMAREQ/*源地址增量dmaCH.SRCINC= 1/*目标地址增量dmaCH.DESTINC= 1/*中断使能dmaCH.IRQMASK= DMA/*M8dmaCH.M8= 1个字节为8/*优先级设置*/dmaCH.PRIORITY0x02;//高级/*使用DMA通道0DMA0CFGH=(unsignedchar)(((unsignedshort)(&dmaCH))>>8);DMA0CFGL=(unsignedchar)(((unsignedshort)(&dmaCH))&0x00FF);/*DMA通道0*/DMAARM=0x01;/*DMA*/DMAIRQ=0x00;while(P0_4==1);/*DMA*/DMAREQ=0x01;/*等待DMA传输完成*/while((DMAIRQ&0x01)0);/*DMA*/unsignedchari,errors=0;{if(srcStr[i]!=destStr[i])}/*LCD上显示DMA*/{HalLcdWriteString("TransferError",HAL_LCD_LINE_5);}{}}文件名称 能:LCD驱使用硬件SPI总线驱动128*64点阵图形液晶(MzLH04- 者 期:2009-09-/*包含头文件#include"LCD.h"#ifndef#defineBV(n) (1<<(n))/*防止编译器报错#define do{x}while( ==-/*LCD管脚宏定义#define #define #define #define #define #define #define #define #define #define /*SPI配置#defineHAL_SPI_CLOCK_POL_LO0x00#defineHAL_SPI_CLOCK_POL_HI0x80#defineHAL_SPI_CLOCK_PHA_00x00#defineHAL_SPI_CLOCK_PHA_10x40#defineHAL_SPI_TRANSFER_MSB_LAST0x00#defineHAL_SPI_TRANSFER_MSB_FIRST/*LCD显示定义6/*字体设置#define #define #defineFUNCTION_SET(options) /*设置显示开始行#define #define #define #define /*IO设置#defineHAL_IO_SET(port,pin,val) #defineHAL_IO_SET_PREP(port,pin, st(P##port##_##pin##=val;/*设置IO输出#defineHAL_CONFIG_IO_OUTPUT(port,pin,val)HAL_CONFIG_IO_OUTPUT_PREP(port,pin,val)#defineHAL_CONFIG_IO_OUTPUT_PREP(port,pin,val)st(P##port##SEL~BV(pin);P##port##_##pin##=val;BV(pin);/*设置IO为功能端口#defineHAL_CONFIG_IO_PERIPHERAL(port,pin)HAL_CONFIG_IO_PERIPHERAL_PREP(port,pin)

P##port##DIR#defineHAL_CONFIG_IO_PERIPHERAL_PREP(port,pin)st(P##port##SEL|=BV(pin);)/*SPI接口控制#defineLCD_SPI_BEGIN() HAL_LCD_CS_PIN,0);#define\{\\\\HAL_IO_SET(HAL_LCD_CS_PORT,HAL_LCD_CS_PIN,1);/*chipselect\}/*清空接收和发送字节状态,往缓冲区里写入发送数据,等待传输完成*/#defineLCD_SPI_TX(x) {U1CSR&=~(BV(2)|BV(1));U1DBUF=x;while(!(U1CSR&BV(1)));#defineLCD_SPI_WAIT_RXRDY(){while(!(U1CSR&BV(1)));/*LCD复位#defineLCD_ACTIVATE_RESET()HAL_IO_SET(HAL_LCD_RESET_PORT,HAL_LCD_RESET_PIN,0);#defineLCD_RELEASE_RESET() HAL_LCD_RESET_PIN,1);/*本地函数声明#if(HAL_LCD==voidvoidHalLcd_HW_WaitUs(unsignedinti);voidHalLcd_HW_Clear(void);voidHalLcd_HW_SetBackLight(unsignedcharDeg)voidHalLcd_HW_FontCharSet(unsignedcharFont_NUM,unsignedcharColor);voidHalLcd_HW_FontMode(unsignedcharCover,unsignedcharColor);voidHalLcd_HW_Control(unsignedcharcmd);voidHalLcd_HW_Write(unsignedcharx,unsignedchary,unsignedchara);voidHalLcd_HW_WriteChar(unsignedcharline,unsignedcharcol,voidHalLcd_HW_WriteLine(unsignedcharline,constchar*pText);函数名称 能:LCD初始voidHalLcdInit(void){#if(HAL_LCD==}函数名称 能:写一串字符到入口参数 被写入的字符optionvoidHalLcdWriteString(char*str,unsignedcharoption){HalLcd_HW_WriteLine(option,}#if(HAL_LCD==函数名称 能:LCD显示IO配staticvoidhalLcd_ConfigIO(void){HAL_CONFIG_IO_OUTPUT(HAL_LCD_RESET_PORT,HAL_LCD_RESET_PIN,HAL_CONFIG_IO_OUTPUT(HAL_LCD_CS_PORT,HAL_LCD_CS_PIN,}函数名称 能:LCD显示SPI总线配staticvoidhalLcd_ConfigSPI(void){unsignedcharbaud_exponent;unsignedcharPERCFG|= //配置SPI为/*配置CLKMOSI等IO口*/ HAL_CONFIG_IO_PERIPHERAL(HAL_LCD_MISO_PORT,/*SPI1MHz(系统时钟为32MHz)*/baud_exponent=14;baud_mantissa /*配置SPI总线各项具体参数*/U1UCR=0x80;//FlushIDLE状态U1CSR&=~0xA0;//SPI主模式U1GCR=HAL_SPI_TRANSFER_MSB_FIRST|HAL_SPI_CLOCK_PHA_1HAL_SPI_CLOCK_POL_HI|baud_exponent;U1BAUD=baud_mantissa;}函数名称 能:LCD硬件初始voidHalLcd_HW_Init(void){halLcd_ConfigIO();LCDIO口halLcd_ConfigSPI();//初始化SPI口/*复位LCD*/HalLcd_HW_SetBackLight(0);//设置背光强度 //清屏}函数名称 能:LCD硬件写入控入口参数 写入的命令或者数voidHalLcd_HW_Control(unsignedcharcmd){}函数名称 能:在xy地址上写入数入口参数 x地 voidHalLcd_HW_Write(unsignedcharx,unsignedchary,unsignedchara){LCD_SPI_BEGIN();//SS置低电平FUNCTION_SET(0x07);//传送指令0x07FUNCTION_SET(x);//要显示字符的左上角的X轴位置FUNCTION_SET(y);//要显示字符的左上角的Y轴位置FUNCTION_SET(a);//要显示字符ASCII字符的ASCII码值 }函数名称 能:LCD硬件清voidHalLcd_HW_Clear(void){LCD_SPI_BEGIN();//SS置低电平FUNCTION_SET(0x80);0x80 }*函数名称 能:设置背光亮度等入口参数:Deg亮度等级voidHalLcd_HW_SetBackLight(unsignedcharDeg){FUNCTION_SET(0x8A);//传送指令0x8A }函数名称 能:ASCII字符字体设入口参数:Font_NUM voidHalLcd_HW_FontCharSet(unsignedcharFont_NUM,unsignedcharColor){unsignedcharucTemp=0;ucTemp=(Font_NUM<<4)|Color;LCD_SPI_BEGIN();//SS置低电平FUNCTION_SET(0x81);0x81 }函数名称 能:设置字符显示覆盖模入口参数:Cover字符覆盖模式设置,0或 voidHalLcd_HW_FontMode(unsignedcharCover,unsignedchar{unsignedcharucTemp=0;ucTemp=(Cover<<4)|Color;LCD_SPI_BEGIN();//SS置低电平FUNCTION_SET(0x89);//传送指令0x89FUNCTION_SET(ucTemp);//发送设置值 }函数名称 能:显示ASCII码字入口参数:line voidHalLcd_HW_WriteChar(unsignedcharline,unsignedcharcol,char{if(col<{HalLcd_HW_Write(col*LCD_X_WITCH,(line-1)*LCD_Y_WITCH,}{}}函数名称 能:LCD显示一行字符入口参数:linepTextvoidHalLcd_HW_WriteLine(unsignedcharline,constchar*pText){unsignedcharunsignedchartotalLength=(unsignedchar)strlen((char/*首先写入字符for(count=0;count<totalLength;{HalLcd_HW_WriteChar(line,count,}/*在尾部写入空白for(count=totalLength;{HalLcd_HW_WriteChar(line,count,'}}函数名称 能:LCD延时函入口参数:microSecsvoidHalLcd_HW_WaitUs(unsignedintmicroSecs){while(microSecs--{/*32NOP为1微妙asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");}}文件名称 能:LCD驱使用硬件SPI总线驱动128*64点阵图形液晶(MzLH04- 者 期:2009-09-#ifndefHAL_LCD_H#define extern"C"{/*包含头文件#include/*L

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论