dsp2812的串口控制寄存器不能写入是什么情况

2019-07-15 19:23发布

本帖最后由 chailyuan 于 2015-12-8 15:50 编辑

我是PMSM3_4控制电机的程序,想在程序里面加上串口发送数据的代码,但是不论怎么改都不行。

我找到了串口通信的例程,在原串口通信工程里串口是正常工作的。我把正常工作的串口通信的c文件的内容全部覆盖掉控制电机程序的c文件内容,再那个工程里运行时候看到还是设置不了串口寄存器。GPIO的管脚是可以配置的,但就是不能设置寄存器
这是什么问题啊?我只是想简单的发送下程序里面的数据而已。。也不需要什么别的功能,但为啥寄存器都写不了,什么情况
这是串口通信的小例子。为什么在不同的工程下有不同的结果呢?为什么在我控制电机的工程下就不能正常写入串口寄存器呢
                          
#include "DSP281x_Device.h"
#include "DSP281x_Examples.h"char   
send_buff = 0x00;       //发送缓冲
char    rece_buff = 0x00;       //接收缓冲
interrupt void SCIRXINT_isr(void);        //中断1中断子程
void Initsci(void)                 //UART初始化子程序
{                                                     
SciaRegs.SCICCR.all=0x0007;         
//1位停止位,用奇校验,禁用回馈测试,                                          
//普通协议模式,8位数据位           
SciaRegs.SCICTL1.all=0x0003;         
//禁止接收错误中断,禁用传输唤醒模式,                                          
//禁用休眠模式,使能数据发送和接收                 
SciaRegs.SCIHBAUD=0x01;         
SciaRegs.SCILBAUD=0xE7;              //150M CLKOUT,波特率为9600 = CLKOUT/(BRR+1)*8                                           //BRR=1E7H      
SciaRegs.SCICTL2.all=0x0002;          //使用接收中断,禁用发送中断         
SciaRegs.SCIPRI.all=0x0010;           //高中断优先级,仿真挂起时完成当前操作         
SciaRegs.SCICTL1.all =0x0023;         // Relinquish SCI from Reset      
}               
                 
interrupt void SCIRXINT_isr()           //中断子程序
{              
Uint16 k;         
k=SciaRegs.SCIRXBUF.all;     
asm(" nop ");   
SciaRegs.SCITXBUF=k;         
asm(" nop ");                  
PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;     
SciaRegs.SCIFFRX.bit.RXFFINTCLR = 1;        // clear Receive interrupt flag            
}


void main(void){   
// PLL, WatchDog, enable Peripheral Clocks// This example function is found in the DSP281x_SysCtrl.c file.   
InitSysCtrl();   
EALLOW;   
SysCtrlRegs.LOSPCP.all=0x0002;   
EDIS;   


// Setup only the GP I/O only for SCI-A  functionality   
EALLOW;   
GpioMuxRegs.GPFMUX.bit.SCITXDA_GPIOF4 = 1;   GpioMuxRegs.GPFMUX.bit.SCIRXDA_GPIOF5 = 1;//将GPIOF端口上的4,5管脚设置成SCIA外设功能                                                                                                                                                                     
EDIS;


// Disable CPU interrupts   
DINT;
// Initialize the PIE control registers to their default state.   
InitPieCtrl();// Disable CPU interrupts and clear all CPU interrupt flags:  
IER = 0x0000;   
IFR = 0x0000;// Initialize the PIE vector table with pointers to the shell Interrupt  

InitPieVectTable();      Initsci();              //初始化UART设置寄存器      


EALLOW;  // This is needed to write to EALLOW protected registers  
PieVectTable.RXAINT = &SCIRXINT_isr;   
EDIS;    // Enable interrupts required for this example   

PieCtrlRegs.PIECRTL.bit.ENPIE = 1;   // Enable the PIE block   

PieCtrlRegs.PIEIER9.bit.INTx1=1;     // PIE Group 9, INT1  
IER |= 0x100;        // Enable CPU INT   
EINT;        
while(1);      
}



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。