本帖最后由 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);
}
一周热门 更多>