DSP_TMS32F2812的串口操作
来源:互联网 发布:cydia更新后网络错误 编辑:程序博客网 时间:2024/05/17 07:34
void scia_fifo_init(int ibaud){ SciaRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback // No parity,8 char bits, // async mode, idle-line protocol SciaRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK, // Disable RX ERR, SLEEP, TXWAKE SciaRegs.SCICTL2.bit.TXINTENA =1; SciaRegs.SCICTL2.bit.RXBKINTENA =1; if(ibaud==9600) { SciaRegs.SCIHBAUD =0x0001;//9600 SciaRegs.SCILBAUD =0x00e7; } if(ibaud==19200) { SciaRegs.SCIHBAUD =0x0000; SciaRegs.SCILBAUD =0x00f3; } if(ibaud==38400) { SciaRegs.SCIHBAUD =0x0000; SciaRegs.SCILBAUD =0x0079; } SciaRegs.SCICCR.bit.LOOPBKENA =0; // Enable loop back SciaRegs.SCIFFTX.all=0xC028; SciaRegs.SCIFFRX.all=0x0021;// SciaRegs.SCIFFCT.all=0x00; SciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset SciaRegs.SCIFFTX.bit.TXFIFOXRESET=1; SciaRegs.SCIFFRX.bit.RXFIFORESET=1;}unsigned char r232data[3]={0,0,0};int int232cnt=0;void scia_xmit(int a){ while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {} SciaRegs.SCITXBUF=a;}interrupt void sciaRxFifoIsr(void){ unsigned short ReceivedChar=SciaRegs.SCIRXBUF.all; // Read data //r232data[int232cnt%3]=ReceivedChar;int232cnt++; if((r232data[0]==0X42)&&(r232data[1]==0X42)&&(int232cnt%3==0)){ //lslData = *(unsigned short*)(0x80000+0xb);//bit0 输出1的值,bit1 输出2的值 EALLOW;GpioMuxRegs.GPEMUX.bit.XNMI_XINT13_GPIOE2 = 0; // IO 输入 拉低GpioMuxRegs.GPEDIR.bit.GPIOE2 = 1; //B6输出GpioDataRegs.GPEDAT.bit.GPIOE2 = (r232data[2]&0x2)>>1; //GpioMuxRegs.GPBQUAL.all=0x0000;// Input qualifier disabledEDIS;//EALLOW;GpioMuxRegs.GPBMUX.bit.T3PWM_GPIOB6=0; // IO 输入 拉低GpioMuxRegs.GPBDIR.bit.GPIOB6=1; //E2输出GpioDataRegs.GPBDAT.bit.GPIOB6 = r232data[2]&0x1; //GpioMuxRegs.GPBQUAL.all=0x0000;// Input qualifier disabledEDIS;scia_xmit(0x41);scia_xmit(0x41);} SciaRegs.SCIFFRX.bit.RXFFOVRCLR=1; // Clear Overflow flagSciaRegs.SCIFFRX.bit.RXFFINTCLR=1; // Clear Interrupt flagPieCtrlRegs.PIEACK.all|=0x100; // Issue PIE ack}void main(void){int ch=0;InitSysCtrl();//设置外部时钟和系统时钟 /////////for sci-b//////////////////// EALLOW; GpioMuxRegs.GPFMUX.all=0x0030;// Select GPIOs to be Scia pins // Port F MUX - x000 0000 0011 0000 // GpioMuxRegs.GPGMUX.all=0x0030;// Select GPIOs to be Scib pins // Port G MUX - x000 0000 0011 0000 EDIS; ///////////////////////////////////DINT;InitGpio(); // 2812原配,未改动InitPieCtrl();// Disable CPU interrupts and clear all CPU interrupt flags:IER = 0x0000;IFR = 0x0000;InitPieVectTable(); EALLOW; // This is needed to write to EALLOW protected registers // PieVectTable.TINT0 = &cpu_timer0_isr; PieVectTable.RXAINT = &sciaRxFifoIsr; EDIS; scia_fifo_init(9600); ///*PieCtrlRegs.PIECRTL.bit.ENPIE = 1; // Enable the PIE blockPieCtrlRegs.PIEIER9.bit.INTx1=1; // PIE Group 9, INT1 // PieCtrlRegs.PIEIER9.bit.INTx2=1; // PIE Group 9, INT2 // PieCtrlRegs.PIEIER9.bit.INTx3=1; // PIE Group 9, INT3 // PieCtrlRegs.PIEIER9.bit.INTx4=1; // PIE Group 9, INT4 IER |= 0x100;// Enable CPU INT EINT; ERTM; //*/// 将中断处理函数和InitFlash函数拷贝到RAM中运行,FLASH中运行时MemCopy和InitFlash必须有效MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);InitFlash(); // 对外部器件初始化必需放在InitFlash后// 初始化timer0//InitCpuTimers(); // ConfigCpuTimer(&CpuTimer0, 150, 0xffffffff); // 初始化while (1){ ;}}
0 0
- DSP_TMS32F2812的串口操作
- 对串口的操作
- 关于串口的操作
- linux串口的操作
- 一个操作串口的类.
- Win32串口操作的技巧
- C#串口操作的数据格式
- c#的串口控件操作
- 对串口的操作下
- linux下的串口操作
- 串口的open操作(tty_open)
- 串口的open操作(tty_open) .
- 串口的open操作(tty_open)
- Win32串口操作的技巧
- 有关linux串口的操作
- 串口的open操作(tty_open)
- linux下的串口操作
- Python语言串口的操作
- oracle sql语言模糊查询--通配符like的使用
- js 控制父子页面的加载顺序
- UIStackView 的使用
- 读书笔记-现代操作系统-8多处理机系统-8.1多处理机
- centos之lnmp
- DSP_TMS32F2812的串口操作
- 电子小制作:一个电子节拍器
- 【杭电-oj】-2089-不要62(打表)
- 磁盘 I/O 优化
- 《JAVA与模式》之单例模式
- 欢迎使用CSDN-markdown编辑器
- webservice创建调用
- Cocos2d-x V3.x内存管理分析
- hdoj 2098 分拆素数和