在线时间0 小时
UID2028142
注册时间2013-7-24
NXP金币0
该用户从未签到
新手上路

- 积分
- 7
- 最后登录
- 1970-1-1
|
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
|
|