工具/软件:Code Composer Studio
大家好、我将 TMS320F28335与 FB155BC 搭配使用、后者是蓝牙模块。
我已确认 SCI FIFO 回送。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//######################################################################################################################
//描述:
//! 添加到组 F2833x_example_list
//!
基于计时器的闪烁 LED (TIMEING_LED_BLINK)
//!
//! 此示例将 CPU Timer0配置为500毫秒的周期、并切换 GPIO32
//! 每个中断上的2833x eZdsp 上的 LED 一次。 为了进行测试、本示例
//! 每次定时器发出中断时、计数器也会递增。
//!
//! b 监视\b 变量\n
//! - CpuTimer0.InterruptCount
//!
//! b 外部连接\n
//! -监控 GPIO32 LED 闪烁(持续500毫秒)和熄灭(持续500毫秒)
//! 2833x eZdsp。
//
//######################################################################################################################
//$TI 发行版:F2833x/F2823x 头文件和外设示例 V142 $
//$Release Date:2016年11月1日$
//版权所有:版权所有(C) 2007-2016德州仪器(TI)公司-
// http://www.ti.com/ 保留所有权利$
//######################################################################################################################
#include "DSP28x_Project.h"//器件头文件和示例 include 文件
//此文件中找到的函数的原型语句。
_interrupt void CPU_timer0_ISR (void);
_interrupt void scibTxFifoIsr (void);
_interrupt void scibRxFifoIsr (void);
void scib_fifo_init();
void 错误(void);
//全局变量
unsigned char sdataB[8];//为 SCI-B 发送数据
unsigned char rdataB[8];// SCI-A 接收到的数据
uint16 RDATA_pointB;//用于检查接收到的数据
UINT16虚拟= 0;
uint16 dummy2 = 0;
uint32 cnt_Tx = 0;
void main (void)
{
uint16 i;
//步骤1. 初始化系统控制:
// PLL、安全装置、启用外设时钟
//此示例函数位于 DSP2833x_SYSCTRL.c 文件中。
InitSysCtrl();
//步骤2. 初始化 GPIO:
//此示例函数位于 DSP2833x_GPIO.c 文件和中
//说明了如何将 GPIO 设置为其默认状态。
InitGpio();//针对此示例跳过
InitScibGpio();
//步骤3. 清除所有中断并初始化 PIE 矢量表:
//禁用 CPU 中断
Dint;
//将 PIE 控制寄存器初始化为默认状态。
//默认状态为禁用所有 PIE 中断和标志
//被清除。
//此函数位于 DSP2833x_PIECTRL.c 文件中。
InitPieCtrl();
//禁用 CPU 中断并清除所有 CPU 中断标志:
IER = 0x0000;
IFR = 0x0000;
//使用指向 shell 中断的指针初始化 PIE 矢量表
//服务例程(ISR)。
//这将填充整个表,即使是中断也是如此
//在本例中未使用。 这对于调试很有用。
//可以在 DSP2833x_DefaultIsr.c 中找到 shell ISR 例程
//此函数可在 DSP2833x_PieVect.c 中找到
InitPieVectTable();
//此示例中使用的中断被重新映射到
//此文件中的 ISR 函数。
EALLOW;//这是写入 EALLOW 受保护寄存器所必需的
PieVectTable.TINT0 =&CPU_timer0_ISR;
PieVectTable.SCIRXINTB =&scibRxFifoIsr;
PieVectTable.SCITXINTB =&scibTxFifoIsr;
EDIS;//这是禁止写入 EALLOW 受保护寄存器所必需的
//步骤4. 初始化器件外设。 该函数可以是
//可在 DSP2833x_CpuTimers.c 中找到
InitCpuTimer();//对于此示例,只初始化 CPU 计时器
#IF (CPU_FRQ_150MHz)
//将 CPU 定时器0配置为每500毫秒中断一次:
// 150MHz CPU 频率,50毫秒周期(以 uSeconds 为单位)
ConfigCpuTimer (&CpuTimer0、150、500);
#endif
#IF (CPU_FRQ_100MHz)
//将 CPU 定时器0配置为每500毫秒中断一次:
// 100MHz CPU 频率,50毫秒周期(以 uSeconds 为单位)
ConfigCpuTimer (&CpuTimer0、100、50000);
#endif
//为了确保精确的时序,使用只写指令写入整个寄存器。 因此、如果有的话
配置位的//在 ConfigCpuTimer 和 InitCpuTimers (在 DSP2833x_CpuTimer.h 中)中更改
//下面的设置也必须更新。
CpuTimer0Regs.TCR.ALL = 0x4000;//使用只写指令将 TSS 位设置为0
//步骤5. 特定于用户的代码、启用中断:
//启用连接到 CPU 定时器0的 CPU INT1:
IER |= M_INT1;
IER |= M_INT9;
//在 PIE 中启用 TINT0:组1中断7
PieCtrlRegs.PIEIER1.bit.INTx7=1;
PieCtrlRegs.PIEIER9.bit.INTx3=1;
PieCtrlRegs.PIEIER9.bit.INTx4 = 1;
//启用全局中断和更高优先级的实时调试事件:
EINT;//启用全局中断 INTM
ERTM;//启用全局实时中断 DBGM
scib_fifo_init();
while (!(ScibRegs.SCICTL2.bit.TXRDY);
对于(i = 0;i<8;i++)
{
sdataB[i]= 0;
}
RDATA_pointB = sdataB[0];
//步骤6. 空闲循环。 只需坐下来循环(可选):
for (;;)
{
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 函数////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
空错误(空)
{
_asm (" ESTOP0");//测试失败!! 停下来!
适用于(;);
}
void scib_fifo_init()
{
ScibRegs.SCICCR.all =0x0007;// 1停止位,无环回
//无奇偶校验,8个字符位,
//异步模式,空闲线协议
ScibRegs.SCICTL1.all =0x0003;//启用 TX、RX、内部 SCICLK、
//禁用 RX ERR、睡眠、TXWAKE
ScibRegs.SCICTL2.bit.TXINTENA=1;
ScibRegs.SCICTL2.bit.RXBKINTENA=1;
SciaRegs.SCIHBAUD = 0x0000;//115200 (LSPCLK=37.5Mhz)//XA3300
SciaRegs.SCILBAUD = 0x0027;
//ScibRegs.SCICCR.bit.LOOPBKENA=1;//启用回路
ScibRegs.SCIFFTX.All=0xC028;
ScibRegs.SCIFFRX.All=0x0028;
ScibRegs.SCIFFCT.All=0x00;
ScibRegs.SCICTL1.all =0x0023;//从复位中撤回 SCI
ScibRegs.SCIFFTX.bit.TXFIFOXRESET=1;
ScibRegs.SCIFFRX.bit.RXFIFORESET=1;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 中断////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
_interrupt void CPU_timer0_ISR (void)
{
CpuTimer0.InterruptCount++;
CNT_Tx++;
//确认此中断以从组1接收更多中断
PieCtrlRegs.PIEACX.ALL = PIEACK_Group1;
}
uint16 jk = 0;
_interrupt void scibTxFifoIsr (void)
{
uint16 i;
for (i=0;i< 8;i++)
{
ScibRegs.SCITXBUF=sdataB[i];//发送数据
}
for (i=0;i< 8;i++)//递增发送下一个周期的数据
{
/*
if (i ==0)
sdataB[0]='A';
否则、如果(I >= 1 && I <=5)
sdataB[i]='A'+I;
否则、如果(i == 6)
sdataB[i]=']';
其他
sdataB[i]= 0x0D;
*
sdataB[i]= jk++;
如果(jk > 50)
{
JK = 0;
}
虚拟++;
}
ScibRegs.SCIFFTX.bit.TXFFINTCLR=1;//清除中断标志
PieCtrlRegs.PIEACX.All|=PIEACK_group9;//发出 PIE ACK
}
_interrupt void scibRxFifoIsr (void)
{
uint16 i;
for (i=0;i<8;i++)
{
rdataB[i]=ScibRegs.SCIRXBUF.all;//读取数据
}
RDATA_pointB =(RDATA_pointB-1)和0x00FF;
ScibRegs.SCIFFRX.bit.RXFFOVRCLR=1;//清除溢出标志
ScibRegs.SCIFFRX.bit.RXFFINTCLR=1;//清除中断标志
PieCtrlRegs.PIEACX.All|=PIEACK_group9;//发出 PIE ACK
哑铃2++;
}
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//不再需要。
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
上面是我的代码 SCI FIFO 到超级终端。
但不会传输任何文本
谢谢你。
