1. void scia_fifo_init(int ibaud)
  2. {
  3. SciaRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback
  4. // No parity,8 char bits,
  5. // async mode, idle-line protocol
  6. SciaRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK,
  7. // Disable RX ERR, SLEEP, TXWAKE
  8. SciaRegs.SCICTL2.bit.TXINTENA =1;
  9. SciaRegs.SCICTL2.bit.RXBKINTENA =1;
  10.  
  11. if(ibaud==9600)
  12. {
  13. SciaRegs.SCIHBAUD =0x0001;//9600
  14. SciaRegs.SCILBAUD =0x00e7;
  15. }
  16.  
  17. if(ibaud==19200)
  18. {
  19. SciaRegs.SCIHBAUD =0x0000;
  20. SciaRegs.SCILBAUD =0x00f3;
  21. }
  22.  
  23. if(ibaud==38400)
  24. {
  25. SciaRegs.SCIHBAUD =0x0000;
  26. SciaRegs.SCILBAUD =0x0079;
  27. }
  28.  
  29. SciaRegs.SCICCR.bit.LOOPBKENA =0; // Enable loop back
  30. SciaRegs.SCIFFTX.all=0xC028;
  31. SciaRegs.SCIFFRX.all=0x0021;//
  32. SciaRegs.SCIFFCT.all=0x00;
  33.  
  34. SciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset
  35. SciaRegs.SCIFFTX.bit.TXFIFOXRESET=1;
  36. SciaRegs.SCIFFRX.bit.RXFIFORESET=1;
  37. }
  38.  
  39. unsigned char r232data[3]={0,0,0};
  40. int int232cnt=0;
  41.  
  42. void scia_xmit(int a)
  43. {
  44. while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {}
  45. SciaRegs.SCITXBUF=a;
  46.  
  47. }
  48.  
  49. interrupt void sciaRxFifoIsr(void)
  50. {
  51.  
  52. unsigned short ReceivedChar=SciaRegs.SCIRXBUF.all; // Read data
  53. //
  54. r232data[int232cnt%3]=ReceivedChar;
  55.  
  56. int232cnt++;
  57.  
  58. if((r232data[0]==0X42)&&(r232data[1]==0X42)&&(int232cnt%3==0))
  59. {
  60. //lslData = *(unsigned short*)(0x80000+0xb);//bit0 输出1的值,bit1 输出2的值
  61. EALLOW;
  62. GpioMuxRegs.GPEMUX.bit.XNMI_XINT13_GPIOE2 = 0; // IO 输入 拉低
  63. GpioMuxRegs.GPEDIR.bit.GPIOE2 = 1; //B6输出
  64. GpioDataRegs.GPEDAT.bit.GPIOE2 = (r232data[2]&0x2)>>1;
  65. // GpioMuxRegs.GPBQUAL.all=0x0000; // Input qualifier disabled
  66. EDIS;
  67.  
  68. //
  69. EALLOW;
  70. GpioMuxRegs.GPBMUX.bit.T3PWM_GPIOB6=0; // IO 输入 拉低
  71. GpioMuxRegs.GPBDIR.bit.GPIOB6=1; //E2输出
  72. GpioDataRegs.GPBDAT.bit.GPIOB6 = r232data[2]&0x1;
  73. // GpioMuxRegs.GPBQUAL.all=0x0000; // Input qualifier disabled
  74. EDIS;
  75. scia_xmit(0x41);
  76. scia_xmit(0x41);
  77. }
  78.  
  79. SciaRegs.SCIFFRX.bit.RXFFOVRCLR=1; // Clear Overflow flag
  80. SciaRegs.SCIFFRX.bit.RXFFINTCLR=1; // Clear Interrupt flag
  81. PieCtrlRegs.PIEACK.all|=0x100; // Issue PIE ack
  82.  
  83. }
  84. void main(void)
  85. {
  86.  
  87. int ch=0;
  88.  
  89. InitSysCtrl();//设置外部时钟和系统时钟
  90. /////////for sci-b////////////////////
  91. EALLOW;
  92. GpioMuxRegs.GPFMUX.all=0x0030; // Select GPIOs to be Scia pins
  93. // Port F MUX - x000 0000 0011 0000
  94. // GpioMuxRegs.GPGMUX.all=0x0030; // Select GPIOs to be Scib pins
  95. // Port G MUX - x000 0000 0011 0000
  96. EDIS;
  97. ///////////////////////////////////
  98. DINT;
  99.  
  100. InitGpio(); // 2812原配,未改动
  101.  
  102. InitPieCtrl();
  103.  
  104. // Disable CPU interrupts and clear all CPU interrupt flags:
  105. IER = 0x0000;
  106. IFR = 0x0000;
  107.  
  108. InitPieVectTable();
  109. EALLOW; // This is needed to write to EALLOW protected registers
  110. // PieVectTable.TINT0 = &cpu_timer0_isr;
  111. PieVectTable.RXAINT = &sciaRxFifoIsr;
  112. EDIS;
  113.  
  114. scia_fifo_init(9600);
  115. ///*
  116. PieCtrlRegs.PIECRTL.bit.ENPIE = 1; // Enable the PIE block
  117. PieCtrlRegs.PIEIER9.bit.INTx1=1; // PIE Group 9, INT1
  118. // PieCtrlRegs.PIEIER9.bit.INTx2=1; // PIE Group 9, INT2
  119. // PieCtrlRegs.PIEIER9.bit.INTx3=1; // PIE Group 9, INT3
  120. // PieCtrlRegs.PIEIER9.bit.INTx4=1; // PIE Group 9, INT4
  121. IER |= 0x100; // Enable CPU INT
  122. EINT;
  123. ERTM;
  124. //*/
  125. // 将中断处理函数和InitFlash函数拷贝到RAM中运行,FLASH中运行时MemCopy和InitFlash必须有效
  126. MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);
  127. InitFlash();
  128.  
  129. // 对外部器件初始化必需放在InitFlash后
  130.  
  131. // 初始化timer0
  132. // InitCpuTimers();
  133. // ConfigCpuTimer(&CpuTimer0, 150, 0xffffffff);
  134.  
  135. // 初始化
  136.  
  137. while (1)
  138. {
  139. ;
  140. }
  141.  
  142. }

DSP_TMS32F2812的串口操作的更多相关文章

  1. C# 串口操作系列(3) -- 协议篇,二进制协议数据解析

    原文地址:http://blog.csdn.net/wuyazhe/article/details/5627253 我们的串口程序,除了通用的,进行串口监听收发的简单工具,大多都和下位机有关,这就需要 ...

  2. C# 串口操作 ---- 系列文章

    C# 串口操作系列(5)--通讯库雏形 通讯库雏形的建立. 串口通讯介绍的高级篇,介绍更高级的抽象,为扩展为通用的客户端通讯库做铺垫,扩展性的考虑,能支持任意类型的流设备. ... 2010-08-0 ...

  3. c#实现串口操作 SerialPort

    命名空间:using System.IO.Ports;该类提供了同步 I/O 和事件驱动的 I/O.对管脚和中断状态的访问以及对串行驱动程序属性的访问. 操作类声明: SerialPort sp = ...

  4. C# 串口操作系列(5)--通讯库雏形

    C# 串口操作系列(5)--通讯库雏形 标签: 通讯c#数据分析byteclassstring 2010-08-09 00:07 21378人阅读 评论(73) 收藏 举报  分类: 通讯类库设计(4 ...

  5. C# 串口操作系列(4) -- 协议篇,文本协议数据解析

    C# 串口操作系列(4) -- 协议篇,文本协议数据解析 标签: c#uiobjectstringbyte 2010-06-09 01:50 19739人阅读 评论(26) 收藏 举报  分类: 通讯 ...

  6. 【转】C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。

    C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子. 标签: c#objectnewlineexceptionbytestring 2010-05-17 01:10 117109人阅读 ...

  7. V-rep学习笔记:串口操作

    VREP Regular API提供了串口操作的相关函数,可以对串口进行打开.关闭和读写: 下面使用一款淘宝上常见的AHRS(Attitude and heading reference system ...

  8. Linux下串口操作之数据拼接

    串口操作中,特别以非阻塞的方式读取和发送数据,做好进程之间的同步很重要.有时我们会发现这样一个问题,在进行read操作时,一次read不能获得一个完整的数据帧,这就好比你买了一个电脑,送货的先把显示器 ...

  9. 【C#】串口操作实用类

    做工业通 信有很长时间了,特别是串口(232/485),有VB/VC/C各种版本的串口操作代码,这些代码也经过了多年的现场考验,应该说是比较健壮的代码,但 是目前却没有C#相对成熟的串口操作代码,最近 ...

随机推荐

  1. 编译安装 apache 2.4.6

    如果配置apr,需要预先安装apr 以下是安装apache 步骤: groupadd webuser useradd -g webuser webuser 下载apache2 下载链接:http:// ...

  2. iOS-主线程刷新UI【+单例】

    主线程刷新UI dispatch_async(dispatch_get_main_queue(), ^{ /// }); 单例 static Tools *_sharedManger; @implem ...

  3. BZOJ 1486: [HNOI2009]最小圈 [01分数规划]

    裸题...平均权值最小的环.... 注意$dfs-spfa$时$dfs(cl)$...不要写成$dfs(u)$ #include <iostream> #include <cstdi ...

  4. BZOJ 2594: [Wc2006]水管局长数据加强版 [LCT kruskal]

    2594: [Wc2006]水管局长数据加强版 Time Limit: 25 Sec  Memory Limit: 128 MBSubmit: 2917  Solved: 918[Submit][St ...

  5. 《Web Scraping With Python》Chapter 1的学习笔记

    urllib urllib是python library自带的库,可以直接用. urlopen from urllib.request import urlopen html = urlopen(&q ...

  6. 一步一步从原理跟我学邮件收取及发送 12.telnet命令行收一封信pop3

    本系列上一篇文章中我们就说到了,这一次我们要说 pop3 收信了.虽然我觉得应该先说完 mime 格式,不过估计大家已经不耐烦了 -- 怎么老在说发送啊?我们要看收取!    好吧,来啦,来啦!收取邮 ...

  7. canvas常用api

    1. 在canvas标签中给出长宽(不带单位):<canvas width="600" height="600"></canvas> 或 ...

  8. Base64算法原理

    3个Byte (3 X 8 = 24 bits) 以3个字节为单位,依次取6位数据,并在前面补上2个0.这样就增加了一个字节的数据.

  9. Spring Boot 注解详解

    一.注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan.@Configuration和@EnableAutoConfiguration ...

  10. Spring context:property-placeholder 一些坑

    今天在配置多配置文件的时候偶然发现如果我使用   <context:property-placeholder location="classpath:filePath.properti ...