我使用 c2000_ware 中的 echo 返回示例进行一些编辑
//######################################################################################################################
//
//文件: example_2837xDSci_Echoback.c
//
//标题: SCI 回送。
//
//! addtogroup cpu01_example_list
//!
SCI 回送(sci_echoback)
//!
//! 此测试通过 SCI-A 端口接收和回波数据。
//!
//! PC 应用程序“超级终端”或其它终端
//! 例如"putty"可用于查看来自 SCI 和的数据
//! 以向 SCI 发送信息。 接收到的字符
//! 将被发送回主机。
//!
//! b 正在运行\b 应用程序
//! -#配置超级终端或其它终端、如 PuTTy:
//!
//! 对于超级终端、您可以使用随附的超级终端配置
//! 文件 SCI_96.HT。
//! 超级终端中加载此配置
//! -#打开超级终端
//! -#转至文件->打开
//! -#浏览至项目位置和
//! 选择 SCI_96.HT 文件。
//! -#检查 COM 端口。
//! 当前已为 COM1设置配置文件。
//! 如果不正确,请断开连接(呼叫->断开连接)
//! 打开"File-Properties"对话框并选择正确的 COM 端口。
//! -#连接超级终端呼叫->呼叫
//! 然后启动2837xD SCI 回送程序执行。
//! -#该程序将打印一条问候语,然后请您回答
//! 输入一个字符、它将回显到超级终端。
//!
//! 注意:如果无法打开.HT 文件,或者您正在使用
//! 另一个终端、您可以使用以下设置打开 COM 端口
//! - 找到正确的 COM 端口
//! - 每秒位数= 9600
//! - 日期位= 8
//! -奇偶校验=无
//! -停止位= 1
//! - 硬件控制=无
//!
//! b 监视\b 变量\n
//! - LoopCount -发送的字符数
//!
//! b 外部连接\n
//! 通过收发器和电缆将 SCI-A 端口连接到 PC。
//! - GPIO28为 SCI_A-RXD (连接到串行 DB9电缆的引脚3、PC-TX)
//! - GPIO29为 SCI_A-TXD (通过串行 DB9电缆连接到 PIN2、PC-RX)
//!
//
//######################################################################################################################
//$TI 发行版:F2837xD 支持库 v3.06.00.00 $
//$Release Date:Mon May 27 06:48:24 CDT 2019 $
//版权所有:
//版权所有(C) 2013-2019德州仪器(TI)公司- http://www.ti.com/
//
//以源代码和二进制形式重新分发和使用,有无
//如果满足以下条件,则允许进行修改
//满足:
//
// 重新分发源代码必须保留上述版权
// 注意、此条件列表和以下免责声明。
//
// 二进制形式的重新分发必须复制上述版权
// 注意、中的条件列表和以下免责声明
// 随提供的文档和/或其他材料
// 分布。
//
// 德州仪器公司的名称和的名称都不是
// 其贡献者可用于认可或推广衍生产品
// 未经特定的事先书面许可,从该软件下载。
//
//本软件由版权所有者和作者提供
//“原样”以及任何明示或暗示的保证,包括但不包括
//限于对适销性和适用性的暗示保证
//一个特定的目的是免责的。 在任何情况下、版权均不得
//所有者或贡献者应对任何直接、间接、偶然、
//特殊、典型或必然的损害(包括但不包括)
//仅限于采购替代货物或服务;
//数据或利润;或业务中断)
//责任理论,无论是合同责任、严格责任还是侵权行为
//(包括疏忽或其他)以任何方式因使用而产生
//此软件,即使已被告知可能会发生此类损坏。
//$
//######################################################################################################################
//包含的文件
//
#include "F28x_Project.h"
//全局
//
uint16环计数;
字符 x=0;
收到 uint16 [100];
//
//函数原型
//
void scia_echoback_init (void);
void scia_fifo_init (void);
void scia_xmit (int a);
void scia_msg (char * msg);
void scia_rec (void);
//
//主函
//
void main (void)
{
char *msg;
//步骤1. 初始化系统控制:
// PLL、安全装置、启用外设时钟
//此示例函数位于 F2837xD_SYSCTRL.c 文件中。
//
InitSysCtrl();
//步骤2. 初始化 GPIO:
//此示例函数位于 F2837xD_GPIO.c 文件和中
//说明了如何将 GPIO 设置为其默认状态。
//
InitGpio();
//对于这个示例、只初始化针对 SCI-A 端口的引脚。
// GPIO_SetupPinMux ()-设置 GPxMUX1/2和 GPyMUX1/2寄存器位
// GPIO_SetupPinOptions ()-设置 GPIO 的方向和配置
//这些函数可在 F2837xD_GPIO.c 文件中找到。
GPIO_SetupPinMux (43、GPIO_MUX_CPU1、0xF);
GPIO_SetupPinOptions (43、GPIO_INPUT、GPIO_PushPull);
GPIO_SetupPinMux (42、GPIO_MUX_CPU1、0xF);
GPIO_SetupPinOptions (42、GPIO_output、GPIO_Async);
GPIO_SetupPinOptions (19、GPIO_input 、GPIO_PushPull);//将引脚设置为 RX
GPIO_SetupPinMux (18、GPIO_MUX_CPU1 、2 );//将引脚19设置为多路复用器位置2作为 UARTA TX
GPIO_SetupPinOptions (18、GPIO_output 、GPIO_Async );//将引脚设置为 TX
//禁用 CPU __interrupts
//
Dint;
//将 PIE 控制寄存器初始化为默认状态。
//默认状态为禁用所有 PIE __interrupts 和标志
//被清除。
//此函数位于 F2837xD_PIECTRL.c 文件中。
//
InitPieCtrl();
//
//禁用 CPU __interrupts 并清除所有 CPU __interrupt 标志:
//
IER = 0x0000;
IFR = 0x0000;
//使用指向 shell 中断的指针初始化 PIE 矢量表
//服务例程(ISR)。
//这将填充整个表,即使是__interrupt
//在本例中未使用。 这对于调试很有用。
//可以在 F2837xD_DefaultIsr.c 中找到 shell ISR 例程
//此函数可在 F2837xD_PieVect.c 中找到
//
InitPieVectTable();
//步骤4. 用户特定代码:
//
LoopCount = 0;
scia_echoback_init (); //初始化用于 echoback 的 SCI
{
MSG ="\r\n 输入字符:\0";
scia_msg (msg);
//等待 inc 字符
//
scia_rec();
}
// scia_echoback_init -测试1、SCIA DLB、8位字、波特率0x000F、
// 默认,1个停止位,无奇偶校验
//
void scia_echoback_init ()
{
//
//注意:SCIA 外设的时钟被打开
//在 InitSysCtrl()函数中
//
//无奇偶校验,8个字符位,
//异步模式,空闲线协议
SciaRegs.SCICTL1.all = 0x0003; //启用 TX、RX、内部 SCICLK、
//禁用 RX ERR、睡眠、TXWAKE
SciaRegs.SCICTL2.all = 0x0003; //启用 TX、RX 中断
SciaRegs.SCICTL2.bit.TXINTENA=1;
SciaRegs.SCICTL2.bit.RXBKINTENA=1;
//
// SCIA 为9600波特
//@LSPCLK = 50MHz (200MHz SYSCLK) HBAUD = 0x02且 LBAUD = 0x8B。
//@LSPCLK = 30MHz (120MHz SYSCLK) HBAUD = 0x01且 LBAUD = 0x86。
//
SciaRegs.SCIHBAUD.ALL = 0x0002;
SciaRegs.SCILBAUD.ALL = 0x008B;
//
//注意:SCIB 外设的时钟被打开
//在 InitSysCtrl()函数中
//
//无奇偶校验,8个字符位,
//异步模式,空闲线协议
ScibRegs.SCICTL1.all = 0x0003; //启用 TX、RX、内部 SCICLK、
//禁用 RX ERR、睡眠、TXWAKE
SCICT2.ALL = 0x0003; //启用 TX、RX 中断
ScibRegs.SCICTL2.bit.TXINTENA=1;
ScibRegs.SCICTL2.bit.RXBKINTENA=1;
// SCIB 为9600波特
//@LSPCLK = 50MHz (200MHz SYSCLK) HBAUD = 0x02且 LBAUD = 0x8B。
//@LSPCLK = 30MHz (120MHz SYSCLK) HBAUD = 0x01且 LBAUD = 0x86。
//
ScibRegs.SCIHBAUD.ALL = 0x0002;
ScibRegs.SCILBAUD.ALL = 0x008B;
}
// scia_xmit -从 SCI 发送一个字符
//
void scia_xmit (int a)
{
while (SciaRegs.SCIFFTX.bit.TXFFST!= 0){}
SciaRegs.SCITXBUF.ALL =A;
}
// scia_msg -通过 SCIA 发送消息
//
void scia_msg (char * msg)
{
int i;
I = 0;
while (msg[i]!='\0')
{
scia_xmit (msg[i]);
i++;
中断;
}
}
{
//
//获取字符
//
Received[x]= ScibRegs.SCIRXBUF.all;
X++;
}
//
// scia_fifo_init -初始化 SCI FIFO
//
void scia_fifo_init()
{
SciaRegs.SCIFFTX.all = 0xE040; //清除中断标志、重新启用操作、启用增强功能、恢复自动波特的操作
SciaRegs.SCIFFRX.ALL = 0x2044; //清除中断标志、重新启用操作、中断级别
SciaRegs.SCIFFCT.all = 0x0;
ScibRegs.SCIFFRX.ALL = 0x2044;
ScibRegs.SCIFFCT.all = 0x0;
}
//文件结束
//