ImageVerifierCode 换一换
格式:DOC , 页数:7 ,大小:53.50KB ,
资源ID:7666701      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7666701.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(CC2430单片机串口测试实验(UART).doc)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

CC2430单片机串口测试实验(UART).doc

1、无线龙04协议栈 CC2430单片机串口测试实验(UART) 程序: 1、《main.c》 #define ENABLE_ALL_INTERRUPT() (IEN0 |= 0x80) #define DISABLE_ALL_INTERRUPT() (IEN0 &= ~0x80) #include"ioCC2430.h" #define uchar unsigned char #define uint unsigned int #define BYTE unsigned char extern void UARTxISRopen(void); //开串口接收中断服务函数

2、 extern void SET_UART0_ISR(void); //串口中断接收设置函数 extern void initUART(void); //初始化函数 main( void ) { uchar temp = 0; SLEEP &= ~0x04; //reset 2:Both oscillators powered up while(!(SLEEP & 0x40)); //XOSC is powered up and stable 等待起振 CLKCON &= ~0x47;

3、 //reset 6:Main clock oscillator select: 32 MHz crystal oscillator SLEEP |= 0x04; //set 2:Oscillator not selected by OSC bit powered down //先让两个振荡器都起振;等待晶体振荡器起振并稳定; //通过CLKCON的OSC位把主时钟选择32M晶体振荡器;

4、 //再让没有被CLKCON的OSC位选择的振荡器停止起振(关RC振荡器) initUART(); //初始化 UARTxISRopen(); //开串口接收中断函数 ENABLE_ALL_INTERRUPT(); //开全局中断 while(1); } //---------------------------------------------------------------------------- 2、《uart.c》 #include"ioCC2430.h" unsigned uarttemp;

5、define ENABLE_ALL_INTERRUPT() (IEN0 |= 0x80) //开全局中断 #define DISABLE_ALL_INTERRUPT() (IEN0 &= ~0x80)//关全局中断 #define IO_PER_LOC_UART0_AT_PORT0_PIN2345() do { PERCFG = (PERCFG&~0x01)|0x00; } while (0) //reste 0:USART0 I/O location: Alternative 1 location

6、 //选择USART0为通道1:P0.2345 #define uchar unsigned char #define CRYSTAL 0x00 #define RC 0x01 #define HIGH_STOP 0x02 //停止位为高电平 #define LOW_STOP 0x00 //停止位为低电平 #define CLKSPD (CLKCON & 0x07)//32KHZ and 32MHZ crystal oscilliator;32MHZ tic

7、ks #define TRANSFER_MSB_FIRST 0x80 //最高位先发送 #define TRANSFER_MSB_LAST 0x00 //最高位后发送 //LSB(Least Significant Bit),意为最低有效位 //MSB(Most Significant Bit),意为最高有效位 #define UART_ENABLE_RECEIVE 0x40 //UART接收使能 #define UART_SETUP(uart, baudRate, options) \ do

8、 \ { \ if((uart) == 0) \ //if uart=0,chose USART0_UART/SPI { \ if(PERCFG & 0x01) \ //if U0CFG=1,chose location 2 {

9、 \ P1SEL |= 0x30; \ //then P1.4/5 set as peripheral I/O } //P1.4/5分别是RX,TX两条线,UART可由这两线组成,也可再加上RT,CT这两条 else \ //if U0CFG=0,chose location 1 { P0SEL |= 0x0C; \ /

10、/then P0.2/3 set as peripheral I/O;同样为RX,TX两线 } \ } \ else \ //if uart=1,chose USART1_UART/SPI { \ if(PERCFG &

11、0x02) \ //if U1CFG=1,chose location 2 { \ P1SEL |= 0xC0; \ //then P1.6/7 set as peripheral I/O } else \ //if U1CFG=0 ,chose location 1 {

12、 \ P0SEL |= 0x30; \ //then P0.4/5 set as peripheral I/O } \ } \ //以上进行USATR通道选择设置

13、 // ##中间的uart根据上面的设置为0或1 U##uart##GCR = BAUD_E((baudRate),CLKSPD); \ //设置波特率指数值 //U##uart##GCR:普通控制寄存器 U##uart##BAUD = BAUD_M(baudRate); \ //设置波特率尾数值 //U##uart##BAUD:波特率控制寄存器

14、 \ U##uart##CSR |= 0x80; \ //USART设为UART模式 //U##uart##CSR:控制及状态寄存器 U##uart##UCR |= ((options) | 0x80); \ //chose UART stop bit level and set FLUSH bit //U##uart##UC

15、R :UART控制寄存器 \ if((options) & TRANSFER_MSB_FIRST) \ //options=0x02:High stop bit { \ // 0x02/0x00 & 0x80 U##uart##GCR |= 0x20; \ //MSB first } \ //对于options=0x00这种情况,估计是以GCR寄存器默认的LSB first方式 U##uart##

16、CSR |= 0x40; \ //Receiver enabled 接收使能 } while(0) // The macros in this section are available for both SPI and UART operation. #define SET_MAIN_CLOCK_SOURCE(source) \ //source=CRYSTAL(0x00)/RC(0x01) do { \ if(source) //

17、RC Oscillator { \ CLKCON |= 0x40; //set 7, 16MHZ HF RC Oscillator while(!HIGH_FREQUENCY_RC_OSC_STABLE); // wait for stable if(TICKSPD == 0) { \ CLKCON |= 0x08; //set 3,16MHZ Timer ticks output

18、 } \ SLEEP |= 0x04; //set 2,"oscillator not slected by OSC bit" powered down } \//因为这里是用RC Oscillator,因此在CLKCON中的OSC位 //选择16M的RC;无论在SLEEP中有没有选择让它起振, //通过OSC位选择的振荡

19、器都会起振。最后SLEEP |= 0x04 //确定所用振荡器由CLKCON中的OSC位来选择, //那这里是选择了16M的RC,因而CRYSTAL没有起振。 else //CRYSTAL Oscillator { \ SLEEP &= ~0x04; //reset 2,both oscillator powered up;

20、 while(!XOSC_STABLE); //wait for stable asm("NOP"); \ CLKCON &= ~0x47; //rest 6: 32M crystal oscillator;这里也应该是默认的16M ticks吧? SLEEP |= 0x04; \ //首先SLEEP选择了两个振荡器都起振 } \ //然后通过CLKON的OSC位选

21、择了32M的主时钟晶体振荡器 }while (0) //最后SLEEP |= 0x04确定所用振荡器由CLKCON中 //的OSC位来选择,那这里是选择了32M的CRYSTAL,因而 //晶体振荡器起振,RC振荡器没有起振 // BAUD_E along with BAUD_M decides the UART baud rate // and the SPI master SCK

22、 clock frequency // BAUD_E和BAUD_M共同决定了波特率,参见波特率计算公式 // BAUD_E=Baud rate exponent value 指数值 BAUD_E[4:0]在U0/1GCR寄存器中 // BAUD_M=Baud rate mantissa value 尾数值 BAUD_M[7:0]在U0/1BAUD寄存器中 #define BAUD_E(baud, clkDivPow) // The macros in this section simplify UART operation. ( \

23、 //此处为多级条件运算 (baud==2400) ? 6 +clkDivPow : \ //表达式1?表达式2:表达式3 (baud==4800) ? 7 +clkDivPow : \ //1真为2;1假为3 (baud==9600) ? 8 +clkDivPow : \ (baud==14400) ? 8 +clkDivPow : \ (baud==19200) ? 9 +clkDivPow : \ (baud==28800) ? 9 +clkDiv

24、Pow : \ (baud==38400) ? 10 +clkDivPow : \ (baud==57600) ? 10 +clkDivPow : \ (baud==76800) ? 11 +clkDivPow : \ (baud==115200) ? 11 +clkDivPow : \ (baud==153600) ? 12 +clkDivPow : \ (baud==230400) ? 12 +clkDivPow : \ (baud==307200) ? 13 +clkDivPow : \

25、0 ) #define BAUD_M(baud) ( \ (baud==2400) ? 59 : \ (baud==4800) ? 59 : \ (baud==9600) ? 59 : \ (baud==14400) ? 216 : \ (baud==19200) ? 59 : \ (baud==28800) ? 216 : \ (baud==38400) ? 59 : \ (baud==57600) ? 216 : \

26、baud==76800) ? 59 : \ (baud==115200) ? 216 : \ (baud==153600) ? 59 : \ (baud==230400) ? 216 : \ (baud==307200) ? 59 : \ 0) //以上宏定义的函数:UART_SETUP(uart, baudRate, options) 设置波特率 // SET_MAIN_CLOCK_SOURCE(source) 设置主时钟 // BAUD_E(bau

27、d, clkDivPow) 设置波特率的指数值 // BAUD_M(baud) 设置波特率的尾数值 #define XOSC_STABLE (SLEEP & 0x40) //XOSC is powered up and stable #define TICKSPD ((CLKCON & 0x38) >> 3) #define HIGH_FREQUENCY_RC_OSC_STABLE (SLEEP & 0x20)//HF RCOSC is powered up and stable void Chan

28、gUartBaund(uchar temp); void initUART(void); void SET_UART0_ISR(void); //***************************************************************************** //串口初始化函数 //串口参数设置为57600,8,None,1,None //打开串口,允许接收 //***************************************************************************** void ini

29、tUART(void) { IO_PER_LOC_UART0_AT_PORT0_PIN2345(); //reste 0:USART0 I/O location: Alternative 1 location SET_MAIN_CLOCK_SOURCE(CRYSTAL); //主时钟时钟源设置函数(设置成晶体振荡器) UART_SETUP(0, 9600, HIGH_STOP); //波特率设置函数(将波特率设置成9600) U0CSR = 0xC5; //U0CSR(USART0控制和状态) //1100 0101 ;UART mode; re

30、ceiver enable; received byte ready; USART busy in transmit // or receive mode; } //------------------------------------------------------------------------ //describe:chang baund //return: //in: //------------------------------------------------------------------------ void ChangUartB

31、aund(uchar temp) { switch(temp) { case '0':UART_SETUP(0, 2400, HIGH_STOP);break; case '1':UART_SETUP(0, 4800, HIGH_STOP);break; case '2':UART_SETUP(0, 9600, HIGH_STOP);break; case '3':UART_SETUP(0, 14400, HIGH_STOP);break; case '4':UART_SETUP(0, 19200, HIGH_STOP);break; case '5':UART_SETUP(

32、0, 28800, HIGH_STOP);break; case '6':UART_SETUP(0, 38400, HIGH_STOP);break; case '7':UART_SETUP(0, 57600, HIGH_STOP);break; case '8':UART_SETUP(0, 76800, HIGH_STOP);break; case '9':UART_SETUP(0, 115200, HIGH_STOP);break; default: UART_SETUP(0, 9600, HIGH_STOP);break; } } //example 9600; //

33、 //describe:open the uart isr(中断服务程序) //return: //in: //本例串口接收程序是运用中断来完成的,所以首先要设置ISR //------------------------------------------------------------------------ void SET_UART0_ISR(void) //串口接收设置函数 { U0CSR |= 0xd0; //1

34、101 0000;UART mode; receiver enable; Byte received with incorrect stop bit level U0UCR |= 0x02; //UART stop bit level: High stop bit } void UARTxISRopen(void) //开串口接收中断函数 { U0CSR |= 0x40; //receiver enable; IEN0 |= 0X04; //开串口接收中断 'URX0IE = 1', } #pragma vector = URX0_VECTOR __interrupt void URX0_ISR(void) { uarttemp = U0DBUF; //串口调试软件发送的数据给uarttemp U0DBUF = uarttemp; //把接收到的数据返送串口软件显示 }

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服