打印

新手求助

[复制链接]
927|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙啸|  楼主 | 2015-3-29 17:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/******************************************************************/
/*Copyright (C), 2008-2009, 力天电子,LiTian Tech.Co.Ltd.                  */
/*  Module Name   : SCIB                                                                          */
/*  File Name     : main.c                                                                                     */        
/*  Author             : 侯长波                                        */     
/*  Create Date   : 2009/10/1                                     */      
/*  Version             : 1.0                                           */         
/*  Function      : SCIB                                                                           */                       
/*  Description   : SCIB操作,发送和接收字符、字符串              */            
/*  Support       : www.LT430.com                                                   */            
/******************************************************************/

/*****************头文件********************/  
#include "DSP281x_Device.h"
#include "System.h"

/****************端口宏定义*****************/

/***************全局变量定义****************/
unsigned char SCIB_RX_BUF[16]={0};//接收数据存储区
unsigned char SCIB_TX_BUF[16]={1,2,3,4,5,6,7,8,0};//发送数据存储区
unsigned char N=0;

/****************函数声明*******************/
void Init_SCIB(void);
void Send_Char_SCIA(char temp);
void Send_Char_SCIB(char temp);   
void Send_String_SCIB(char *String);
char Get_Char_SCIB(void);
interrupt void SCIB_RXINT(void);   

/*------------------------------------------*/
/*形式参数:void                            */
/*返回值:void                                                */
/*函数描述:配置SCIB                                                        */
/*------------------------------------------*/
void Init_SCIB(void)
{
        EALLOW;                 
    GpioMuxRegs.GPGMUX.bit.SCITXDB_GPIOG4 = 1; //配置  SCIB-RX
    GpioMuxRegs.GPGMUX.bit.SCIRXDB_GPIOG5 = 1; //配置  SCIB-TX                 
    EDIS;
        ScibRegs.SCICTL1.all =0x0003;          // 使能 TX, RX, 内部 SCICLK,
                                           // 禁止 RX ERR, SLEEP, TXWAKE
        ScibRegs.SCICCR.all =0x0007;           // 1bit 停止位 无循环模式
                                           // 无极性,  字符长度:8 bits
                                           // 异步模式,空闲线协议
        ScibRegs.SCIHBAUD = 0x0001;          // 波特率:9600(LSPCLK = 37.5MHz);
        ScibRegs.SCILBAUD = 0x0085;
        ScibRegs.SCICTL2.bit.RXBKINTENA = 1;// 使能SCI接收中断          
        ScibRegs.SCICTL1.all =0x0023;            // 使SCI退出复位
        EALLOW;        // 解除寄存器保护
        PieVectTable.RXBINT = &SCIB_RXINT;//用SCIB中断函数入口更新PIE向量表
        EDIS;   // 使能寄存器保护
    PieCtrlRegs.PIEIER9.bit.INTx3 = 1;//使能PIE内的 SCIB_RX_INT中断
    IER |= M_INT9; // 使能 CPU INT 9            
           EINT;        // 全局中断使能INTM  
}  
/*------------------------------------------*/
/*形式参数:char                            */
/*返回值:void                                                */
/*函数描述:发送一个字符                                                */
/*------------------------------------------*/
void Send_Char_SCIB(char temp)
{
        ScibRegs.SCITXBUF=temp;
        while ( ScibRegs.SCICTL2.bit.TXRDY == 0);//状态检测模式
        while ( ScibRegs.SCICTL2.bit.TXEMPTY == 0);//状态检测,等待发送标识为空
}
/*------------------------------------------*/
/*形式参数: char *String                   */
/*返回值:void                                                */
/*函数描述:发送一个字符串                                        */
/*------------------------------------------*/
void Send_String_SCIB(char *String)
{
        while(*String !='\0')
          {
    Send_Char_SCIB(*String++);
          }
}
/*------------------------------------------*/
/*形式参数:void                            */
/*返回值:char                                                */
/*函数描述:接收一个字符                                                */
/*------------------------------------------*/
char Get_Char_SCIB(void)
{       
        DINT;//关闭总中断
        while(ScibRegs.SCIRXST.bit.RXRDY != 1);//等待接收完毕
        EINT;   //开总中断
        return (ScibRegs.SCIRXBUF.all);    // 返回接收到的数据       
}
/*------------------------------------------*/
/*形式参数:void                            */
/*返回值:void                                                */
/*函数描述:SCIB中断处理函数                                        */
/*------------------------------------------*/
interrupt void SCIB_RXINT(void)
{
        DINT;//关闭总中断
           SCIB_RX_BUF[N++]=ScibRegs.SCIRXBUF.bit.RXDT;
    PieCtrlRegs.PIEACK.all |= BIT9;   //响应中断
        EINT;   //开总中断
}

/*------------------------------------------*/
/*形式参数:void                            */
/*返回值:void                                                */
/*函数描述:扫描按键                                        */
/*------------------------------------------*/
void main(void)
{
    InitSysCtrl();  // 系统初始化子程序,在DSP28_sysctrl.c中
    DINT;           // 关闭总中断
    IER = 0x0000;   // 关闭外设中断
    IFR = 0x0000;   // 清中断标志       
    InitPieCtrl();        //初始化PIE控制寄存器
        InitPieVectTable();        //使能中断向量表
        Init_SCIB();
        Send_String_SCIB("Welcome to LiTian!");
        while(1);
}

如上所示,我用的是李天的开发板,目的是希望能做成串口通信,可是将此程序下载进去以后,用相对应的串口助手发送数据根本接收不到,是程序问题还是调试助手的问题,各位有没有什么好的串口助手推荐啊

相关帖子

沙发
zhangmangui| | 2015-3-29 22:19 | 只看该作者
从代码看   是开发板发出的字符串   你应该在串口调试助手端接收   
设置为以字符形式显示    就应该直接能显示Welcome to LiTian!
随便下载一个都可以用   

使用特权

评论回复
板凳
沙啸|  楼主 | 2015-3-30 13:42 | 只看该作者
对啊,我也感觉这程序就是一个最简单的串口通信,可是下载之后还是没有反应,我在好好想想吧

使用特权

评论回复
地板
njyangzhifei| | 2015-3-30 19:19 | 只看该作者
仿真器跟踪一下程序,看看相应的控制和状态寄存器

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

180

帖子

1

粉丝