查看: 2648|回复: 2

[其他] 求助关于SCI模块问题

[复制链接]

该用户从未签到

1

主题

3

帖子

0

新手上路

Rank: 1

积分
7
最后登录
1970-1-1
发表于 2013-10-14 16:17:08 | 显示全部楼层 |阅读模式
1、56F8346的中断开通需要设置哪些?比如SCI里的中断开通,是不是需要开总中断、串行口中断优先级设置、串行口中断使能?还有没有其他需要设置的?
2、对下面一段程序请求大神们看看错误在哪里?采用中断查询方式发送和传输数据,波特率设置为9600,8位数据传送,一位开始、一位停止,无奇偶校验。
#include "dsp8346.h"
#include "reg_init.h"                                                //头文件
void sys_init(void);
void sci1_init(void);
void io_init(void);
void send_interrupt(void);
void read_interrupt(void);
void error_interrupt(void);                                        //函数声明
int Data;                                                                        //全局变量
void main(void)
{
        sys_init();
        io_init();
        sci1_init();
        GPIO_D_DR=0x0000;
        enable();
        for(;;){};
}
void sys_init(void)
{
        PLLCR=PLLCR_POSTSET;                                        //系统频率设置
        PLLDB=PLLDB_SET;
        OSCTL=OSCTL_SET;
        SIM_CONTROL = SIM_CONTROL_SET;                        //SIM 系统配置
        SIM_RSTSTS = SIM_RSTSTS_SET;
        SIM_PUDR = SIM_PUDR_SET;
        SIM_CLKOSR = SIM_CLKOSR_SET;
        SIM_GPS = SIM_GPS_SET;
        SIM_PCE = SIM_PCE_SET;
        SIM_ISALH = SIM_ISALH_SET;
        SIM_ISALL = SIM_ISALL_SET;
        TSENSOR_CONTROL = TSENSOR_CONTROL_SET;
       
        INTC_IPR5=INTC_IPR5_SET;                                //设置SCI1的中断优先级
}
void sci1_init(void)
{
        int a;
        SCI1_SCICR=0x0000;                                                //配置SCI1控制寄存器
        SCI1_SCIBR=SCI1_SCIBR_SET;                                 //设置波特率为9600   
    a=SCI1_SCISR;                                                        //清楚中断标志位
    SCI1_SCICR=SCI1_SCICR_SET;                            //使能SCI1
        SCI1_SCIDR=SCI1_SCIDR_SET;                                //SCI1的数据寄存器设置初值为0x0000
}
void io_init(void)
{
        GPIO_D_PUR = GPIO_D_PUR_SET;
        GPIO_D_DDR = GPIO_D_DDR_SET;
        GPIO_D_PER = GPIO_D_PER_SET;                        //设置D口的6、7位为外设模式,第8位为输出位
}
                                                                                       
#pragma interrupt alignsp                                        //发送中断服务子程序
void send_interrupt(void)
{
        SCI1_SCICR=SCI1_SCICR&B7_CLRB;
        GPIO_D_DR=0x0000;
}
                                                                                       
#pragma interrupt alignsp                                        //读中断服务子程序
void read_interrupt(void)
{
        int i,b;
        b=SCI1_SCISR;                                                        //清状态寄存器
        while(SCI1_SCISR&0x2000);                                //判断数据是否准备好
        Data=SCI1_SCIDR;
        for(i=1;i
我知道答案 目前已有1人回答
回复

使用道具 举报

该用户从未签到

1

主题

3

帖子

0

新手上路

Rank: 1

积分
7
最后登录
1970-1-1
 楼主| 发表于 2013-10-14 18:34:51 | 显示全部楼层

回复:求助关于SCI模块问题

马上就沉底了  自己顶起啊
回复 支持 反对

使用道具 举报

该用户从未签到

16

主题

705

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1745
最后登录
1970-1-1
发表于 2014-6-24 16:10:26 | 显示全部楼层

RE:求助关于SCI模块问题

楼主不会SCI模块,可以直接用CW的PE生成一个看看不就知道了嘛,PE中的串口模块都是有help的,都告诉怎么配置以及代码写什么的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-23 05:32 , Processed in 0.089605 second(s), 23 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表