#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
#define LED10_OFF GpioDataRegs.GPASET.bit.GPIO0 = 1 //LED D10 熄灭
#define LED10_ON GpioDataRegs.GPACLEAR.bit.GPIO0 = 1 //LED D10 点亮
#define LED11_OFF GpioDataRegs.GPASET.bit.GPIO1 = 1 //LED D11 熄灭
#define LED11_ON GpioDataRegs.GPACLEAR.bit.GPIO1 = 1 //LED D11 点亮
#define DELAY_TIME 2000000 //延时时间
unsigned char receiveChar[20];
unsigned char uartFlag= 0;
/********************************宏定义数码管位选 IO 接口*******************************************/
#define SET_BIT4 GpioDataRegs.GPBSET.bit.GPIO58 = 1 //与外设板 8_LEDS 端子的 IO52 对应
#define RST_BIT4 GpioDataRegs.GPBCLEAR.bit.GPIO58 = 1 //与外设板 8_LEDS 端子的 IO52 对应
#define SET_BIT3 GpioDataRegs.GPBSET.bit.GPIO59 = 1 //与外设板 8_LEDS 端子的 IO53 对应
#define RST_BIT3 GpioDataRegs.GPBCLEAR.bit.GPIO59 = 1 //与外设板 8_LEDS 端子的 IO53 对应
#define SET_BIT2 GpioDataRegs.GPBSET.bit.GPIO62 = 1 //与外设板 8_LEDS 端子的 IO54 对应
#define RST_BIT2 GpioDataRegs.GPBCLEAR.bit.GPIO62 = 1 //与外设板 8_LEDS 端子的 IO54 对应
#define SET_BIT1 GpioDataRegs.GPBSET.bit.GPIO63 = 1 //与外设板 8_LEDS 端子的 IO55 对应
#define RST_BIT1 GpioDataRegs.GPBCLEAR.bit.GPIO63 = 1 //与外设板 8_LEDS 端子的 IO55 对应
/*****************************************************************************************************/
/*********************************************函数申明************************************************/
void scib_init(void);
void scib_xmit(int a);
interrupt void scibRxIsr(void);
void scic_init(void);
void scic_xmit(int a);
interrupt void scicRxIsr(void);
void delay(Uint32 t);
/*****************************************************************************************************/
void main(void)
{
InitSysCtrl();
InitSciGpio();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EALLOW;
PieVectTable.SCIRXINTB = &scibRxIsr;
PieVectTable.SCIRXINTC = &scicRxIsr;
EDIS;
scib_init(); // Initialize the SCI FIFO
scic_init();
PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block
PieCtrlRegs.PIEIER8.bit.INTx5 = 1; // PIE Group 8, INT5 SCIRXINTC
PieCtrlRegs.PIEIER8.bit.INTx6 = 1; // PIE Group 8, INT6 SCIRXINTC
PieCtrlRegs.PIEIER9.bit.INTx3 = 1; // PIE Group 9, INT3 SCIRXINTB
PieCtrlRegs.PIEIER9.bit.INTx4 = 1; // PIE Group 9, INT4 SCITXINTB
IER = 0x180; // Enable CPU INT
EINT;
//初始化LED的端口
EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0; // Enable pullup on GPIO11
GpioDataRegs.GPASET.bit.GPIO0 = 1; // Load output latch
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0; // GPIO11 = GPIO
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1; // GPIO11 = output
GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0; // Enable pullup on GPIO11
GpioDataRegs.GPASET.bit.GPIO1 = 1; // Load output latch
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0; // GPIO11 = GPIO
GpioCtrlRegs.GPADIR.bit.GPIO1 = 1; // GPIO11 = output
EDIS;
LED10_ON; //LED1 D10 点亮
delay(DELAY_TIME); //延时
LED10_OFF; //LED1 D10 熄灭
LED11_ON; //LED1 D10 点亮
delay(DELAY_TIME); //延时
LED11_OFF; //LED1 D10 熄灭
for(;;)
{
}
}
interrupt void scibRxIsr(void)
{
/*
//for visual navigation
static unsigned char count = 0;
receiveChar[count] = ScibRegs.SCIRXBUF.all;
if(count == 0 && receiveChar[count] == 0xaa)
{
count = 1;
}
else if(count == 1 && receiveChar[count] == 0xaa)
{
count = 2;
}
else if(count >= 2 && receiveChar[count] != 0xbb)
{
count++;
}
else
{
count = 0;
uartFlag = 1; //该标志位需要在主函数对数据进行处理后再将其进行复位。
}
*/
receiveChar[0] = ScibRegs.SCIRXBUF.all;
if(receiveChar[0] == 'a')
{
LED10_ON; //LED1 D10 点亮
delay(DELAY_TIME); //延时
LED10_OFF; //LED1 D10 熄?
}
ScibRegs.SCIFFRX.bit.RXFFOVRCLR=1; // Clear Overflow flag
ScibRegs.SCIFFRX.bit.RXFFINTCLR=1; // Clear Interrupt flag
PieCtrlRegs.PIEACK.all|=0x100; // Issue PIE ack
}
interrupt void scicRxIsr(void)
{
/*
//for visual navigation
static unsigned char count = 0;
receiveChar[count] = ScibRegs.SCIRXBUF.all;
if(count == 0 && receiveChar[count] == 0xaa)
{
count = 1;
}
else if(count == 1 && receiveChar[count] == 0xaa)
{
count = 2;
}
else if(count >= 2 && receiveChar[count] != 0xbb)
{
count++;
}
else
{
count = 0;
uartFlag = 1; //该标志位需要在主函数对数据进行处理后再将其进行复位。
}
*/
receiveChar[0] = ScicRegs.SCIRXBUF.all;
if(receiveChar[0] == 'b')
{
LED11_ON; //LED1 D10 点亮
delay(DELAY_TIME); //延时
LED11_OFF; //LED1 D10 熄?
}
ScicRegs.SCIFFRX.bit.RXFFOVRCLR=1; // Clear Overflow flag
ScicRegs.SCIFFRX.bit.RXFFINTCLR=1; // Clear Interrupt flag
PieCtrlRegs.PIEACK.all|=0x080; // Issue PIE ack
}
// Transmit a character from the SCI'
void scib_xmit(int a)
{
ScibRegs.SCITXBUF=a;
}
// Transmit a character from the SCI'
void scic_xmit(int a)
{
ScicRegs.SCITXBUF=a;
}
// Initalize the SCI FIFO
void scib_init()
{
ScibRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback
// No parity,8 char bits,
// async mode, idle-line protocol
ScibRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK,
// Disable RX ERR, SLEEP, TXWAKE
ScibRegs.SCICTL2.bit.TXINTENA =1; //以下这两句和上面那个重复了。
ScibRegs.SCICTL2.bit.RXBKINTENA =1;
ScibRegs.SCIHBAUD =0x0001;//0x0001; //设置波特率为9600
ScibRegs.SCILBAUD =0x00e7;//0x00e7;
ScibRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset
}
// Initalize the SCI FIFO
void scic_init()
{
ScicRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback
// No parity,8 char bits,
// async mode, idle-line protocol
ScicRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK,
// Disable RX ERR, SLEEP, TXWAKE
ScicRegs.SCICTL2.bit.TXINTENA =1; //以下这两句和上面那个重复了。
ScicRegs.SCICTL2.bit.RXBKINTENA =1;
ScicRegs.SCIHBAUD =0x0001;//0x0001; //设置波特率为9600
ScicRegs.SCILBAUD =0x00e7;//0x00e7;
ScicRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset
}
/*********************************************延时函数************************************************/
void delay(Uint32 t)
{
Uint32 i = 0;
for (i = 0; i < t; i++);
}
TI DSP 28335 串口非FIFO中断接收程序
4星 · 超过85%的资源 需积分: 48 157 浏览量
2015-11-29
10:01:22
上传
评论 3
收藏 755KB ZIP 举报
Nern
- 粉丝: 4
- 资源: 15
最新资源
- mnist手写数据集本地下载链接
- 52193906181644561181711717834527.jpg
- 图片缓冲技术(android)源码
- 花数据集+数据集汇总+标签txt+数据集汇总代码+迁移学习最佳模型+全部迭代最佳模型
- 20240329224412.zip
- switch.docx `switch`语句是C++中的一种流程控制语句,通常用于根据表达式的值选择执行不同的代码块 下面是`
- python绘制直方图-02-进程之间不共享全局变量.ev4.rar
- python绘制直方图-01-第三天知识点回顾.ev4.rar
- 01背包问题动态规划.docx
- 表达式求值.docx表达式求值涉及许多不同的情况和方法,具体取决于表达式的形式和要求的精度 下面是一个简单的例子
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈