![]() |
|
||||||||||||||
| . 网站首页 . 新闻 . 新品 . 方案 . 专访 . 活动 . DSP . EDA . 评测室 . 技术文库 . 会员区 . 商城 . 服务导航 . 邮购 . 资源 . | ||
|
||
|
|||||
| 一个基于DSP2407串行通信接口典型应用举例 | |||||
作者:61IC 文章来源:本站原创 点击数: 更新时间:2007-1-16 ![]() |
|||||
|
串行通信接口典型应用举例 下面给出一个在两个DSP之间实现简单异步通信的通用程序。 //该程序实现2407的串口异步通信 #include "register.h" //禁止总中断子程序 void inline disable() { asm(" setc INTM"); asm(" setc SXM"); } //使能总中断子程序 void inline enable() { asm(" clrc INTM"); } main( ) { disable(); //禁止所有中断 *IFR=0xFFFF; // 清除中断标志 *SCSR1=0x81FE; //CLKIN= *WDCR=0xE8; //不使能看门狗 *SCICCR=0x7; //1个停止位,不使能奇偶校验,空闲线多处理 //器模式,8位字符 *SCICTL1=0x13; //#0013H 使能接收和发送,SLEEP=0 禁止休眠 //方式 , 禁止接收错误中断,TXWAKE=0 即没 //有选定的发送特征 *SCICTL2=0x3; //使能接收和发送中断 *SCIHBAUD=0x2; *SCILBAUD=0x70; //波特率=4800B/S *SCICTL1=0x33; //使SCI脱离复位状态 *SCIPRI=0x60; //SCI中断(接收和发送中断)为低优先级中断 *MCRA=0x3; *PADATDIR=0x100; *IMR=0x10; //使能UART中断-INT5 enable(); //使能总中断 *SCITXBUF=' '; while(1) ; } void UartSent( ) //发送服务程序 { const char* var="F2407 UART is fine!";//定义一段需要发送的字符串 static int i=0; if(i>strlen(var)) return; //如果需要发送的字符都已经发送完,则中断直接返回 *SCITXBUF=var[i++]; //依次发送定义的字符串中的各个字符 *IFR=0x0010; //清除IFR中相应的中断标志 enable(); //开总中断,因为一进入中断服务程序总中断就自动关闭了 } void UartRec() //接收服务程序 { static int receive[10],j=0; receive[j++] = *SCIRXBUF;//依次接收字符 if(j>9) j = 0; *IFR= 0x0010; //清除IFR中相应的中断标志 enable(); //开总中断,因为一进入中断服务程序总中断就自动关闭了 } void interrupt uarttr( ) //中断服务程序 { switch (*PVIR) //根据中断向量寄存器PVIR的值区别是接收还是发送中断 { case 6:UartRec( ); //如果PIVR=6,则发生了接收中断,执行接收服务程序 case 7:UartSent( ); //如果PIVR=7,则发生了发送中断,执行发送服务程序 } } //当由于干扰而引起其它中断时,中断进入此程序直接返回主程序 void interrupt nothing() { return; } |
|||||
| 欢迎点击进入:TI德州中文网 (国内唯一针对TI应用的中文技术网站) 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|
|