1385|0

2015

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

DSP28335串口使用(查询发,中断收) [复制链接]

SCI.C
#include "sci.h"
//串口BGPIO初始化
void InitSciB()
{
    EALLOW;
    GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0;   // Enable pull-up for GPIO62 (SCITXDB)
    GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0;    // Enable pull-up for GPIO63 (SCIRXDB)
   GpioCtrlRegs.GPAQSEL2.bit.GPIO18 = 3;  // Asynch input GPIO19 (SCITXDB)
    GpioCtrlRegs.GPAQSEL2.bit.GPIO19 = 3;  // Asynch input GPIO23 (SCIRXDB)
    GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 2;   // Configure GPIO19 for SCITXDB operation
    GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 2;   // Configure GPIO23 for SCIRXDB operation
    EDIS;




    ScibRegs.SCICCR.all =0x0007;   // 1 stop bit,  No loopback,No parity,8 char bits,async mode, idle-line protoco
    ScibRegs.SCICTL1.all =0x0003;  // enable TX, RX, internal SCICLK,
                                       // Disable RX ERR, SLEEP, TXWAKE
    ScibRegs.SCICTL2.all =0x0003;  //接收中断使能
    ScibRegs.SCICTL2.bit.RXBKINTENA =1;
    #if (CPU_FRQ_150MHZ)
      #if(BUADRATE_9600)      //设置波特率
    ScibRegs.SCIHBAUD    =0x0001;  // 9600 baud @LSPCLK = 37.5MHz.
    ScibRegs.SCILBAUD    =0x00E7;
      #endif
       #if(BUADRATE_115200)
    ScibRegs.SCIHBAUD    =0x0000;  // 115200 baud @LSPCLK = 37.5MHz.
        ScibRegs.SCILBAUD    =0x0028;
       #endif
    #endif
    #if (CPU_FRQ_100MHZ)
        ScibRegs.SCIHBAUD    =0x0001;  // 9600 baud @LSPCLK = 20MHz.
        ScibRegs.SCILBAUD    =0x0044;
    #endif
   // ScibRegs.SCIFFTX.all=0xC000;  //FIFO功能使能
    ScibRegs.SCIFFRX.all=0x0021;  //接收FIFO的深度为最低的5位,此处设置为1,没接受到一个字符都会产生接收中断
   // ScibRegs.SCIFFCT.all=0x00;
    ScibRegs.SCICTL1.all =0x0023;  // Relinquish SCI from Reset
    //ScibRegs.SCIFFRX.bit.RXFIFORESET=1;  //复位接收FIFO
}




// Transmit a character from the SCI
void put_char(char a)
{
    while (ScibRegs.SCICTL2.bit.TXRDY == 0);
    ScibRegs.SCITXBUF=a;
}




void put_string(char * putchar)
{
    while(*putchar!= 0x00)
    {
    put_char(*putchar++);
    }
}


//串口B接收中断
interrupt void SciB_RxInterIsr(void)
{
    u8 res;
    res = (ScibRegs.SCIRXBUF.all) & 0x00FF;
   // put_char(res);
    switch(res)
    {
    case '0':  put_char('I'); break;
    case '1':  put_char(' '); break;
    case '2':  put_char('l'); break;
    case '3':  put_char('O'); break;
    case '4':  put_char('V'); break;
    case '5':  put_char('E'); break;
    case '6':  put_char(' '); break;
    case '7':  put_char('Y'); break;
    case '8':  put_char('O'); break;
    case '9':  put_char('U'); break;
    default :  break;
    }
ScibRegs.SCIFFRX.bit.RXFFOVRCLR=1;  // Clear Overflow flag
ScibRegs.SCIFFRX.bit.RXFFINTCLR=1; // Clear Interrupt flag
PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;
}


main函数中相关函数和设置


InitSciB();  //串口B初始化


PieVectTable.SCIRXINTB = &SciB_RxInterIsr;   //SCIBX接收中断服务程序


IER |= M_INT9;    //开启CPU中断 组9  SCI_RX  CANB中断线1


  PieCtrlRegs.PIEIER9.bit.INTx3=1;     //串口B接收中断  PIE Group 9, INT3

点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表